background image

一个世纪后发明了计算机和数字电路才有了用武之地;数论在

17 世纪就出现

了,一直都被数学家们当成一套好玩的理论,但只是好玩而已,直到计算机密
码学诞生后才发现它的实际用处。

 

各种流行的开发工具和高级语言虽然变化很快,但是底层的编程语言却非常稳
定,各种操作系统的内核都是用

C 语言写的,以前是这样,以后也不会改变。

另一方面,各种编程语言的设计思想也是非常稳定的。其实世界上只有两种编
程语言,一种是

C,一种是 LISP,前者是 imperative 的,是对计算机模型的

抽象,后者是

functional 的,是对数学函数模型的抽象。面向对象是一种重要

的软件工程思想,却算不上一种新的语言模型,应该归在

C 的一类。属于同一

类的各种语言其实都大同小异,一个精通

C++的人学习 Java 需要多长时间?

熟悉语法一个星期,熟悉类库三个星期,一个月足矣,以往的经验都可以套到
新的编程语言上。然而要想习得深厚的算法功底、逻辑思维和抽象思维修养,

能够真正说清楚 系统 是什么,如何分析和设计 系统 ,需要多长时间?恐怕
要数十年。

 

4、C 和 Java 哪种语言更好? 

计算机科学与编程语言无关,甚至与计算机本身也没太大关系,它研究的对象
并不是计算机,而是人分析问题解决问题的方法论。程序写出来最主要不是为
了给计算机执行的,而是为了给人看的,使用编程语言和使用自然语言一样是
为了表达和交流,只不过程序还可以顺便给计算机执行而已。

 

以上这些话并不是我说的,而是一位著名的计算机科学家说的。所以,在编程
语言的层面上争论是没有意义的。很多初学者错误地认为掌握了编程语言就等
于学会了计算机,一种编程语言都还没有掌握好,更没有上升到方法论的层面,
只有这种无知的人才会去争论哪种语言好的问题。掌握了编程语言远远不等于
学会了计算机,而只是最开始的一步,最简单的一步,到了工作中,用到什么
语言就去学什么语言,什么语言过时了就丢掉,编程语言不需要积累因为它太
简单了,真正需要积累的是方法论。

 

很多人喜欢参与到这类争论之中,毫无例外,每个人都在为自己熟练掌握的编

程语言辩护,就是 我会的语言最好,我不会的语言都不好 ,其实这些人真正

想说的是 我会的语言最好是千秋万代,我就不必学新的语言,不必适应新的变

化了 ,概括起来说就是一个字,懒。真正的高手都是会很多编程语言的,国外
有些做技术咨询的,每年都要学好几门新的编程语言,这样才能应对市场的变
化。不断丢掉旧的编程语言学习新的,看起来好像完全是白费力气,没有积累,
其实,每种编程语言的设计都有独到之处,体现了每种语言的精髓,在融汇百
家之后积累下来的正是方法论。