方永、南天紫雲

道亦有道

我与我的语言
2011年10月29日

最早接触计算机语言是在九十年代流行的学习机上,这种简单的8位机上提供了G-BASIC的简单编程环境,能做出个自动演奏歌曲的程序还是很开心的。

之后教课书上又是什么BASIC,后来学VB为了过二级。真是一路BASIC啊。

大学时间较多,各种东西都学,有时会在网吧上网,但有些网吧没有安装需要的一些程序,比如输入法之类,出于这种需要,用NSIS写了个脚本来安装程序并对注册表什么的做些设置。学完了才发现NSIS的脚本其实就是一种语言,有变量,有分支,有循环。

喜欢用绿色软件,就是小巧又功能强大的,发现用汇编写的程序就是这样,于是开始学汇编。汇编那是真学呀,从计算机结构开始,还有那几百个指令,罗云杉前辈的巨著,以及fasm的强大语法,Intel的几本手册,很多都是英文,英文水平也是突飞猛进呀。同时也玩批处理、sed、grub、vim。

等到用汇编做出了绿色软件,又因为sed、vim迷恋上了linux。linux真是相见恨晚,发现了arch,其官网上的KISS,使我以前一些模糊的概念一下子清晰起来,不就是KISS么!从Windows世界来的我,发现linux简直就是天堂,喜欢定制,linux的每个程序都是可定制的,喜欢根本原理,linux中每个程序都是开源的,面对如此美好的世界,真是有些不知所措。shell、sed、awk、bc,perl、python、ruby、lua,C、Java、C++,google go和scala,几乎都是原生的。

有人总是喜欢比较语言,perl比shell好,ruby比python好,Java比C++好,都面向对象了,那个谁还在面向过程,语言没有最好,只有最合适。编程做什么,解决问题。终极语言是什么,只要对着计算机说我需要什么,计算机将给出一个非常满意的结果,甚至计算机与它里面运行的程序默默地做着工作而我们浑然不知,这时语言这个概念都已经消亡了。现在提出问题、分析问题、解决问题的相当一部分都是由人来做,语言在进化之路上还是个单细胞而已。回到现实,语言要面对两个对象,一是计算机,一是程序员。从计算机角度进化,就是效率和移植性问题,从程序员角度进化,就是效率和灵活性。从根本上说就是这个语言在整个过程中消耗了最少量的资源。一个语言对于程序员来说,不用考虑计算机执行效率和移植性问题,不会因为问题的复杂度提高而在语言方面投入额外的成本,也能在问题发生变化时不会在语言方面投入额外的成本,那么它就是最合适的。