编程语言的选择

编程语言的选择


发布日期: 1970-01-01 更新日期: 2016-10-27 编辑:zhangxiang 浏览次数: 3481

标签:

摘要: Lisp被许多资深程序员视为编程语言中的圣杯,因为学起来很难。著名程序员、最热门的技术问答网站StackOverflow创始人Joel Spolsky曾经在“Java语言学校的危险性”一文中说,自己当年在大学里学习用Lisp的导论课程也是苦不堪言,而Lisp这...

Lisp被许多资深程序员视为编程语言中的圣杯,因为学起来很难。著名程序员、最热门的技术问答网站StackOverflow创始人Joel Spolsky曾经在“Java语言学校的危险性”一文中说,自己当年在大学里学习用Lisp的导论课程也是苦不堪言,而Lisp这样的函数式语言实际开发中并不常用,但是一旦到了体现优势的时候,你如果不懂,将失之千里。他还认为,Google的核心技术之一MapReduce就来自函数式语言,而且使Google领先微软多年。请注意,Spolsky曾经1990年代微软的Excel项目经理,VBA的主要创造者。

《Unix编程艺术》的作者EricRaymond也在“如何成为黑客”(英文版)中说过,Lisp是对黑客特别重要的语言,“掌握了之后,你会得到丰富的启迪和经验。即使实际上很少使用Lisp,这些经验也会使你在以后的日子里成为更好的程序员。”

而Paul Graham更是Lisp的头号吹鼓手,他曾与蠕虫病毒发明者Robert Morris一起,成功地用Lisp开发历史上第一个Web应用——ViaWeb,并高价卖给Yahoo致富。他在2001年写了一篇宣传Lisp的名文“Beating the Averages”(英文),其中说到:“Lisp之所以极为优秀,并不是因为只有铁杆粉丝才知道的某些魔术般的性质,而在于它确实是最强大的编程语言。大家不用它的原因,在于编程语言不只是技术,而且也是思维习惯,这是改变起来最慢的东西。”

有意思的是,美国时间10月18日,著名技术新闻网站Hacker News上,名为kung-fu-master的用户发了一篇名为“问PG:Lisp与Python (2010)”的帖子,内容很简单:“好像许多Lisp老枪都开始转而用Python的(比如PeterNorvig)。今天你怎么看Lisp与Python?”

这里的PG就是指Hacker News的创始人、著名Lisp程序员与吹鼓手Paul Graham。而其中提到的Peter Norvig则是另一个著名Lisp程序员,现任Google研发总监。他有一篇经典的文章“十年学会编程”(英文版),相信大家都已经看过,他的首选推荐语言当然也是Lisp(更准确的说是Lisp的方言Scheme)。

面对这样直接的问题,专家们是怎么回答的呢?

Paul Graham说:这问题好像来自2005年而不是2010年。Lisp现在由于Clojure(Lisp的现代方言,可以运行在JVM和.NET上—— CSDN编者注)的出现,已经又变得时髦了。当然Python也有很好的库,但是我觉得用缺乏宏的语言编程很受局限。

许多网友对Python没有宏的问题进行了讨论。有人说不支持宏是出于代码可读性的考虑。而更多的人则认同宏是一种抽象工具,任何工具都会被误用、滥用,但并不表示工具本身有问题。

另一Lisp专家,《Coder at Work》和《Practical Common Lisp》作者>PeterSeibel也加入了讨论(他最近忙于编辑一种杂志Code Quarterly)。他说:自己与PeterNorvig有类似的体验。虽然自己Lisp非常熟练,但是在表达算法方面Python是最佳选择。不过,相比Lisp实现,CPython的运行速度慢得惊人,甚至差5-10倍。

而Peter Norvig也罕见地现出真身,给出了自己的回答,内容一如既往地经典:

我是Peter Norvig。我转向Python不是因为它比Lisp更好、更令人满意、更实用,而是因为它用作伪代码更合适。许多学生说,在《人工智 能》(Norvig与Russell合著的经典教材)一书中的伪代码与我们在网上提供的Lisp代码之间进行转换太难了。于是我要寻找一种更近似伪代码的语言,发现Python是最合适的。然后我就自学了Python,熟练到足以实现教材中示例的地步。我发现Python对于一些类型的小问题非常合适,有些库也是我与其他的一些代码(包括在Google内和网上其他地方的代码)集成非常需要的。

我认为Lisp对更大的项目和编译速度很重要的应用而言仍然具有优势。但是在主要目的是交流而非编程的时候(比如针对数量众多的学生),Python更有优势。

就更一般意义上的编程而言,在Google和其他地方,我认为语言的选择并不如其他方面的选择那么重要:如果你有了正确的总体架构、正确的程序员团队、正确的开发过程(能够快速开发、持续改善),那么很多语言都能胜任;但如果以上的东西你没有,那无论选择什么语言,你都会陷入一团糟。

关注公众号
获取免费资源

随机推荐


Copyright © Since 2014. 开源地理空间基金会中文分会 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org