说说编程语言
做码农这麽多年,对编程语言非常有感情,就像老农对他的锄头,厨师对他的大勺差不多。
编程语言是什么,归根到底它就是一个交流工具,那为什么一个交流工具这么重要呢,因为牵涉一个叫做自动化的庞大产业链,还牵涉一个叫信息产业的庞大产业链。 我们人之间的互相合作和命令要靠语言,是因为我们能抽象,我们每个人从小就学习了一些基本概念,上学的时候又学习了一些更高级的抽象概念,这样当领导告诉你,把这个问题的复杂度从n降到log n时,你就知道他要你做的是什么事了。计算机也一样,它能干事,因为它后面可以直接无缝衔接自动化硬件,基于开关的自动化元件对这方面的支持很好,可是如何让它听懂你的意思就很难,在这条路上,人们走了很漫长的路,从最开始打孔机(有空和没空就代表0和1)的二进制指令,到汇编语言的繁琐,再到以c语言为标志的高级语言(当然,从现在的角度c语言也是很低级的,它可以直接操作内存分配)。从信息产业的角度来说,我们人类很多事情不需要实体的动作,就是纯粹的信息变换,比如写诗,比如聊天,比如远距离聊天,比如听相声,比如科学计算。而编程语言可以把这些信息在内部加工,转换成你想要的形式。
人类有很多种语言,不同的人也为计算机发明不同的语言,每种语言都有自己的特长,一般来说都是一开始有特殊的应用场景,比如Fortran语言就是用来做科学计算的,后来人们就开始发明通用型的语言,可即使如此,还是千差万别。在我上学的时候(2000年左右),我听到一种说法,一个程序员应该掌握这5种语言:Fortran, c, java, lisp, perl。现在时代变了,我感觉可以更改为 Julia (科学计算), Kotlin(JVM通用), Python(脚本), Rust(底层通用),Haskell(纯Function)。其实不论哪种语言,都有一些共性,从一开始的分支/循环,到现在的map-reduce。学习语言抓住共性可举一反三。从更大的层面就是设计模式,为高代码复用抓住高内聚,低耦合这个牛鼻子即可。
就我个人而言,我偏好Java,它就像军队一样,到处充满了整齐划一,可是他又比较繁琐,好在Kotlin引入了function编程,简捷很多,同时仍然复用java库。是我目前的所爱。
Comments