编程语言学习的要点

Posted by LuckXiang on April 14, 2018

这几年用过不少编程语言,汇编,scheme,shell,python,js,c,c++,java,有的学的比较深入,大部分还是浅尝辄止。自己感兴趣的,花的时间就多一些,有的是项目需要的,做完就忘得差不多了。世界上还有无数的编程语言,人的精力有限,一个人能深入掌握四五门编程语言已经很了不起了。但是有些时候,往往需要我们快速的学习另一门语言解决一些问题。那么学什么,怎么学就很关键了,下边我谈一下自己的认识。

编程语言的背景

一门编程语言被设计出来都有一些原因,编程语言能够流行起来也有一些原因。了解编程语言的背景,就是去了解编程语言的优劣,甚至在学习的过程中你能知道这些语法特性为什么设计成这个样子。

编程语言的共性

编程过程中,有很多东西是和语言无关的,比如,编程语言一般都要有使用操作系统提供的服务能力,有可能是直接提供,通过系统调用,有可能是间接提供,比如通过中间语言。熟悉操作提供能提供的服务明显可以大大降低我们掌握新语言的难度,例如我非常熟悉进程,多线程,IO,学习一门新的语言,我就不需要再去了解这方面的知识,直接查看该语言是如何使用这些服务的就可以了。除了操作系统,还有网络相关的,数据结构和算法。一些使用广泛的基础库等等,不同的语言都提供了很好的支持,比如容器,你了解了队列,堆栈,树,线性表等数据结构的知识。你去学java的容器,你去学python的容器,和初学者相比,你只需要花一点点时间。还有面向对象和面向过程等等编程思想,设计模式这些东西。不同的语言都提供了相应的支持。掌握这些基础的东西,学习新东西才快。当然,基础的东西也是一直在增加的,比如json,大家广泛使用以后它也变成了一个基础的组件,这就要求我们多注意技术的演进趋势,你不学可以,但是你最起码得了解一下。

语言自身的特性

一门新的语言,和你已经掌握的肯定有很大的不同,语法糖这种东西,够用就行,框架也是一样。可以根据工作需要和兴趣选择性的掌握。

最后一点废话

条条大道通罗马,一个功能,这个语言理论上可以做,那个语言理论上也可以做,只是达到的效果和难度不一样而已,一定要仔细评估。当积累到一定程度的时候,你就可以深入一种语言去编程,而不是在一种语言之上去编程了。