《黑客与画家》摘录与思考

                                                                           返回主页

hacker.jpg

当我说Java不会成功时,我的意思是它和Cobol一样,进化之路已经走到了尽头。

作者并非唱衰Java,只是这种语言太冗长了,在不长时间的学习中我也发觉了这一点,再加上最近.net开源,Java的前景不会太乐观。不过目前来看,这点担心是多余的,毕竟还有那么多程序员使用这种语言。

一件垃圾会产生更多的垃圾。

很有道理,在《人月神话》中,有一个“破窗”理论,和作者的观点如出一辙。冗余的代码会产生更多的冗余代码。 前期就做好优化是非常必要的。

那些内核很小、最干净的编程语言才会存在于进化的主干上。

正如作者所言,内核干净的语言把自由还给了程序员,比如Lisp这种语言,就具有干净的特点,它的分支scheme Lisp的函数式编程思想让习惯了C系语言的我惊为天人。

正确的做法应该是将语言的语义与语言的实现予以分离。

虽然作者总是不经意间为Lisp做广告,但是这个观点的确是正确的。

关于语言的选择

当他向曲线的上方望去,他不会意识到自己正在看更高层次的语言,而是仅仅觉得自己正在看某些奇怪的语言。 通过归纳法我们就会知道,唯一洞悉所有语言优劣的人必然是懂的最强大的那种语言的人。 他们都满足于自己碰巧用熟了的那种语言,他们的编程思想都被那种语言主宰了。

怎么说呢,作者的观点已经很清楚了。根据图灵完备,每个语言都可以完成同一个问题的解决,但是存在着最合适的语言,它更适合某一个问题的求解。 我想,虽然我还不够格,但是对于语言,我们不应该用宗教一般的思维去看待,“Python大法好,退C保平安”这类话我们还是少说一些,语言没有优劣,只有合适与否。 当然,趁着好奇,多接触一些语言未尝不可。

现状很可能真的会保持下去,因为编程语言的特点之一就是它会使得大多数使用它的人满足于现状,不想改用其他语言。 编程语言不一样,与其说它是技术,还不如说是程序员的思考模式。

不能再同意,C的过程式,C++、Python、Java等的面向对象,还有Haskell、Scheme Lisp的函数式,每一种都会带来新的思维转变,尝试一下会让我们的思维更为开阔。

编程语言本来就是为了满足黑客(此处为正面意思)的需要而产生的,当且仅当黑客喜欢一种语言时,这种语言才能成为合格的编程语言,而不是被当做“指称语义”或者编译器的设计。 在现实中,编程语言总是与它们依附的系统联系在一起的。

Hello-world本应该是一个很简单的程序,但是在Java语言中却要写上一大堆东西,这本身就差不多可以说明Java语言设计的有问题了。Java语言是为了给别人使用而设计的,而C、lisp都是设计者为了自己使用而设计的。

此处我也不加评论了,距离那样的层次还很远,我能做的就是凭借自己的实践和经验去体会经典的经验,毕竟内心的体会才是最重要的。