关于Lisp和函数式编程 & 各类语言对比 & TIOBE

上一篇文章提到了,今天又读到Lisp的一些内容html

《为何Lisp如此先进》ruanyifeng(Link)。关于Lisp的八卦,能够参考我前面两篇文章正则表达式

http://www.cnblogs.com/charlesblc/p/6110484.html  以及算法

http://www.cnblogs.com/charlesblc/p/6123411.htmlshell

 


先看一个 "格林斯潘第十定律"(Greenspun's Tenth Rule):编程

"任何C或Fortran程序复杂到必定程度以后,都会包含一个临时开发的、只有一半功能的、不彻底符合规格的、处处都是bug的、运行速度很慢的Common Lisp实现。"小程序

 

编程语言如今的发展,不过刚刚遇上1958年Lisp语言的水平。浏览器

Lisp的做者 约翰.麦肯锡(John McCarthy) 图灵奖得到者,是把图灵老师 阿隆佐·邱奇的λ演算,发展成了一门编程语言。并且开始的时候,只打算把Lisp做为一种规则,而不是语言。网络

 

为何上个世纪50年代的编程语言,到如今尚未过期?简单说,由于这种语言本质上不是一种技术,而是数学。数学是不会过期的。你不该该把Lisp语言与50年代的硬件联系在一块儿,而是应该把它与快速排序(Quicksort)算法进行类比。这种算法是1960年提出的,至今仍然是最快的通用排序方法。app

 

选择哪种编程语言,许多项目是无所谓的,反正不一样的语言都能完成工做。通常来讲,条件越苛刻的项目,强大的编程语言就越能发挥做用。可是,无数的项目根本没有苛刻条件的限制。大多数的编程任务,可能只要写一些很小的程序,而后用胶水语言把这些小程序连起来就好了。你能够用本身熟悉的编程语言,或者用对于特定项目来讲有着最强大函数库的语言,来写这些小程序。框架

 

其余内容,包括用一个返回功能函数的例子来对比各类语言编程能力的内容,就不详细摘录了,能够参考原文:

http://www.ruanyifeng.com/blog/2010/10/why_lisp_is_superior.html

 

正好,还有一篇文章提到了

http://www.ruanyifeng.com/blog/2010/03/programming_language_evaluations_revised.html

 

1、C

C语言的优势是,运行效率高和接近机器语言。它特别适用于如下几种程序:

  1. 对运行速度要求很高的程序。

  2. 与操做系统内核关系密切的程序。

 

除此以外,学习C语言有一个最大的理由,那就是它能帮助咱们学会,在硬件层次上考虑问题。若是你想以编程做为本身的人生事业,C是必定要学习的。

C的最大缺点是,在编程过程当中,你不得不花不少时间,考虑与你要解决的问题彻底无关、且很是复杂的硬件资源管理问题。

 

2、C++

C++在80年代中期推出,支持OO(面向对象编程),原意是做为C语言的取代者。

可是它没能作到作一点,缘由有如下几个:

  1. 它也没有解决"内存管理"问题,虽然比C有所改善。

  2. 标准化不成功。各个编译器都只支持本身选择的一个子集,致使跨平台性不如C。

  3. 过度的精细和复杂了。C++的复杂度,超过了C和OO的复杂度之和。

  4. OO并无带来多少优点,反而带来了一些反作用,好比厚重的胶合层和庞大的代码体积。

总的来讲,C++的优点仍是程序效率,以及面向对象编程能力,糟糕之处是它鼓励复杂的设计

注:另外,我以为,功能库不完善,分散,不易管理。开发速度慢。

 

Shell, Perl 忽略。

 

5、Python

Python发布于1991年,是一种与C语言紧密集成的脚本语言。

Python的优势是很是干净优雅,鼓励清晰易读的代码,易学易用;提供了面向对象编程的可能,但并不把这个选择强加于设计者;具备出色的模块化特性,同Java同样,适合用来作须要协同开发的大型复杂项目。(这一句值得怀疑)由于Python解释语言的特性,使得版本管理变得很tricky。

在不少方面,它都比Java简单。此外,Python标准中包括了对许多网络协议的支持,所以也很适合网络管理任务。

Python的缺点主要是效率低下,速度缓慢。在执行速度上,它不只没法与C/C++竞争,并且也不如其余主要的脚本语言。可是,这其实并非一个严重的问题,有时网络或磁盘的延迟,会彻底抵消Python自己消耗的时间。并且由于Python特别容易和C结合起来,所以性能关键的 Python模块,能够很方便地转化成C语言来提升速度。

总的来讲,对于小型项目和大量依靠正则表达式的项目,Python不如Perl的表达能力强。至于更小的项目,Python则是大材小用,shell也许更适合。

 

6、Java

Java发布于1995年,设计目标有两个。

一个是"write once, run anywhere"(一次编写,处处运行),即不依赖于特定的平台;另外一个是在网页中嵌入交互程序(applet),能够在任何一个浏览器中运行。因为它的全部者Sun公司的一系列失误,第一个目标并无彻底实现,第二个目标则是完全失败。可是Java依然在系统编程和应用编程方面很是强大,足以挑战C和 C++。

Java的优势是比C++小巧简单,能够自动管理内存,支持相似C的语法和OO编程,与C程序的结合也很好。

Java的缺点是某些部分过于复杂,好比内部类和匿名类的运用会产生很混乱费解的代码;某些部分功能不完善,也没法利用操做系统提供的功能接口,好比在Java中读取和处理文本文件,并不像其余语言那样容易。此外,Java配置环境和版本的混乱,也让人很头疼。

总的来讲,除了系统编程某些对运行速度要求很高的编程以外,Java都是比C++更好的选择。若是和Python相比,Java可能在大型项目上有优点,可是也不是绝对的。

 

注:如今Java是绝对的语言中的王者。从TIOBE编程语言排名,能够看出,Java好久以来,稳居第一。

另外,TIOBE, 是“The Importance Of Being Ernest”的缩写,颇有意思,它是奥斯卡·王尔德的一部剧做,虽然我不清楚这跟程序设计语言有什么关系。它可以经过各类搜索引擎以及谷歌博客、维基百科甚至YouTube进行语言跟踪。

 

有篇文章,说Java强大在4个地方(Link)。其中我只承认1,而二、3和4我认为是个语言就有:

1. James Gosling 是 Java之父。他将Java描述为“蓝领”的程序设计语言。它能使开发者花最小的代价完成工做,同时还能使得开发者在一段时间以后,还能继续完成别人的(甚至本身的)代码而且明白其中的意思。

因此,好维护。

2. 向下兼容 3. 可扩展性

Hadoop,Cassandra和Spark,大数据工程的基础框架,无不使用Java或者Scala而且在JVM虚拟机上运行的。若是你想要良好的拓展性和性能,Java和JVM是最好的选择。

4. 2014年10月份开始,Java的受欢迎程度有了显著的提高,这恰好是在JDK8发行以后。JDK8对Java开发者来来讲有了显著的变化,它引入了Lambda表达式和Stream API。忽然间Java开发者可以在不用学习一整套新语言(如Scala)的状况下以一个更加有效的方式进行开发。

 

个人理解:

Java是趁了大数据和互联网的春风。

首先大数据的Hadoop, Spark无不和Java密切相关,这让传统的系统级语言C/C++倍受打击。而Java开发虽不如Python、PHP语言那么快,可是胜在系统性强、强类型语言、易调试。易扩展,JVM上可运行Scala等多种语言。并且足够蓝领,门槛低。并且性能不差,JVM一直在优化。 

而后是互联网春风,国内阿里等公司对Java的推广,也起了很大做用。

本人既用PHP,又用Java,不得不说,PHP太草根了,Java写出来的代码,要规范化的多。

 

附一份最新的 2016年11月份的 TIOBE编程语言排行榜:

 

 

 

(完)

相关文章
相关标签/搜索