为什么Lisp语言如此先进
lisp吧
全部回复
仅看楼主
level 13
Lisp少帥 楼主

Lisp少帅
2012年10月02日 15点10分 1
level 13
Lisp少帥 楼主

一、如果我们把流行的编程语言,以这样的顺序排列:Java、Perl、Python、Ruby。你会发现,排在越后面的语言,越像Lisp。 Python模仿Lisp,甚至把许多Lisp黑客认为属于设计错误的功能,也一起模仿了。至于Ruby,如果回到1975年,你声称它是一种Lisp方言,没有人会反对。编程语言现在的发展,不过刚刚赶上1958年Lisp语言的水平。
2012年10月02日 15点10分 2
黑客与画家。。
2014年02月26日 08点02分
level 13
Lisp少帥 楼主

二、 1958年,John McCarthy设计了Lisp语言。我认为,当前最新潮的编程语言,只是实现了他在1958年的设想而已。 这怎么可能呢?计算机技术的发展,不是日新月异吗?1958年的技术,怎么可能超过今天的水平呢?让我告诉你原因。这是因为John McCarthy本来没打算把Lisp设计成编程语言,至少不是我们现在意义上的编程语言。他的原意只是想做一种理论演算,用更简洁的方式定义图灵机。所以,为什么上个世纪50年代的编程语言,到现在还没有过时?简单说,因为这种语言本质上不是一种技术,而是数学。数学是不会过时的。你不应该把Lisp语言与50年代的硬件联系在一起,而是应该把它与快速排序(Quicksort)算法进行类比。这种算法是1960年提出的,至今仍然是最快的通用排序方法。
2012年10月02日 15点10分 3
level 13
Lisp少帥 楼主

三、 Fortran语言也是上个世纪50年代出现的,并且一直使用至今。它代表了语言设计的一种完全不同的方向。Lisp是无意中从纯理论发展为编程语言,而Fortran从一开始就是作为编程语言设计出来的。但是,今天我们把Lisp看成高级语言,而把Fortran看成一种相当低层次的语言。 1956年,Fortran刚诞生的时候,叫做Fortran I,与今天的Fortran语言差别极大。Fortran I实际上是汇编语言加上数学,在某些方面,还不如今天的汇编语言强大。比如,它不支持子程序,只有分支跳转结构(branch)。 Lisp和Fortran代表了编程语言发展的两大方向。前者的基础是数学,后者的基础是硬件架构。从那时起,这两大方向一直在互相靠拢。Lisp刚设计出来的时候,就很强大,接下来的二十年,它提高了自己的运行速度。而那些所谓的主流语言,把更快的运行速度作为设计的出发点,然后再用超过四十年的时间,一步步变得更强大。直到今天,最高级的主流语言,也只是刚刚接近Lisp的水平。虽然已经很接近了,但还是没有Lisp那样强大。
2012年10月02日 15点10分 4
level 13
Lisp少帥 楼主

五、 Lisp语言刚出现的时候,它的思想与其他编程语言大相径庭。后者的设计思想主要由50年代后期的硬件决定。随着时间流逝,流行的编程语言不断更新换代,语言设计思想逐渐向Lisp靠拢。思想1到思想5已经被广泛接受,思想6开始在主流编程语言中出现,思想7在Python语言中有所实现,不过似乎没有专用的语法。思想8可能是最有意思的一点。它与思想9只是由于偶然原因,才成为Lisp语言的一部分,因为它们不属于John McCarthy的原始构想,是由他的学生Steve Russell自行添加的。它们从此使得Lisp看上去很古怪,但也成为了这种语言最独一无二的特点。Lisp古怪的形式,倒不是因为它的语法很古怪,而是因为它根本没有语法,程序直接以解析树(parse tree)的形式表达出来。在其他语言中,这种形式只是经过解析在后台产生,但是Lisp直接采用它作为表达形式。它由列表构成,而列表则是Lisp的基本数据结构。 用一门语言自己的数据结构来表达该语言,这被证明是非常强大的功能。思想8和思想9,意味着你可以写出一种能够自己编程的程序。这可能听起来很怪异,但是对于Lisp语言却是再普通不过。最常用的做法就是使用宏。 术语"宏"在Lisp语言中,与其他语言中的意思不一样。Lisp宏无所不包,它既可能是某样表达式的缩略形式,也可能是一种新语言的编译器。如果你想真正地理解Lisp语言,或者想拓宽你的编程视野,那么你必须学习宏。 就我所知,宏(采用Lisp语言的定义)目前仍然是Lisp独有的。一个原因是为了使用宏,你大概不得不让你的语言看上去像Lisp一样古怪。另一个可能的原因是,如果你想为自己的语言添上这种终极武器,你从此就不能声称自己发明了新语言,只能说发明了一种Lisp的新方言。我把这件事当作笑话说出来,但是事实就是如此。如果你创造了一种新语言,其中有car、cdr、cons、quote、cond、atom、eq这样的功能,还有一种把函数写成列表的表示方法,那么在它们的基础上,你完全可以推导出Lisp语言的所有其他部分。事实上,Lisp语言就是这样定义的,John McCarthy把语言设计成这个样子,就是为了让这种推导成为可能。
2012年10月02日 15点10分 6
level 13
Lisp少帥 楼主

六、就算Lisp确实代表了目前主流编程语言不断靠近的一个方向,这是否意味着你就应该用它编程呢?如果使用一种不那么强大的语言,你又会有多少损失呢?有时不采用最尖端的技术,不也是一种明智的选择吗?这么多人使用主流编程语言,这本身不也说明那些语言有可取之处吗?另一方面,选择哪一种编程语言,许多项目是无所谓的,反正不同的语言都能完成工作。一般来说,条件越苛刻的项目,强大的编程语言就越能发挥作用。但是,无数的项目根本没有苛刻条件的限制。大多数的编程任务,可能只要写一些很小的程序,然后用胶水语言把这些小程序连起来就行了。你可以用自己熟悉的编程语言,或者用对于特定项目来说有着最强大函数库的语言,来写这些小程序。如果你只是需要在Windows应用程序之间传递数据,使用Visual Basic照样能达到目的。那么,Lisp的编程优势体现在哪里呢?
2012年10月02日 15点10分 7
level 13
Lisp少帥 楼主

七、语言的编程能力越强大,写出来的程序就越短(当然不是指字符数量,而是指独立的语法单位)。 代码的数量很重要,因为开发一个程序耗费的时间,主要取决于程序的长度。如果同一个软件,一种语言写出来的代码比另一种语言长三倍,这意味着你开发它耗费的时间也会多三倍。而且即使你多雇佣人手,也无助于减少开发时间,因为当团队规模超过某个门槛时,再增加人手只会带来净损失。Fred Brooks在他的名著《人月神话》(The Mythical Man-Month)中,描述了这种现象,我的所见所闻印证了他的说法。如果使用Lisp语言,能让程序变得多短?以Lisp和C的比较为例,我听到的大多数说法是C代码的长度是Lisp的7倍到10倍。但是最近,New Architect杂志上有一篇介绍ITA软件公司的文章,里面说"一行Lisp代码相当于20行C代码",因为此文都是引用ITA总裁的话,所以我想这个数字来自ITA的编程实践。 如果真是这样,那么我们可以相信这句话。ITA的软件,不仅使用Lisp语言,还同时大量使用C和C++,所以这是他们的经验谈。根据上面的这个数字,如果你与ITA竞争,而且你使用C语言开发软件,那么ITA的开发速度将比你快20倍。如果你需要一年时间实现某个功能,它只需要不到三星期。反过来说,如果某个新功能,它开发了三个月,那么你需要五年才能做出来。 你知道吗?上面的对比,还只是考虑到最好的情况。当我们只比较代码数量的时候,言下之意就是假设使用功能较弱的语言,也能开发出同样的软件。但是事实上,程序员使用某种语言能做到的事情,是有极限的。如果你想用一种低层次的语言,解决一个很难的问题,那么你将会面临各种情况极其复杂、乃至想不清楚的窘境。所以,当我说假定你与ITA竞争,你用五年时间做出的东西,ITA在Lisp语言的帮助下只用三个月就完成了,我指的五年还是一切顺利、没有犯错误、也没有遇到太大麻烦的五年。事实上,按照大多数公司的实际情况,计划中五年完成的项目,很可能永远都不会完成。 我承认,上面的例子太极端。ITA似乎有一批非常聪明的黑客,而C语言又是一种很低层次的语言。但是,在一个高度竞争的市场中,即使开发速度只相差两三倍,也足以使得你永远处在落后的位置。
2012年10月02日 15点10分 8
level 13
Lisp少帥 楼主

附带;编程能力
2012年10月02日 15点10分 9
level 8
啧啧,辛苦了。[背扭]
2012年10月02日 23点10分 12
level 6
支持少帅哥!!!
2012年10月11日 01点10分 15
到哪里都会有你的身影,真神奇。
2012年11月13日 12点11分
回复 Dennis_Ritchie : 额。。。真不好意思,对您的ID还真不熟悉。。。不过对单词和他指代的人比较熟悉[害羞]
2012年11月13日 13点11分
回复 xw_y_am :[鄙视]
2012年11月13日 13点11分
回复@Dennis_Ritchie :他其实有一颗做水货的心
2012年11月13日 15点11分
level 2
upup
2012年10月30日 15点10分 16
你好
2012年10月30日 15点10分
level 2
大家好
2012年11月06日 11点11分 17
你好,大兄弟
2012年11月06日 12点11分
level 4

2012年11月26日 15点11分 18
level 5
楼主,我也正在看这本书~~
2012年12月07日 17点12分 19
看了多少了
2012年12月08日 00点12分
level 5
《黑客与画家》看完了
2012年12月08日 02点12分 20
我是个科幻迷最近在看阿西莫夫的银河帝国系列
2012年12月08日 04点12分
怎么看上lisp语言了
2012年12月08日 07点12分
lisp是我的名字缩写[哈哈]
2012年12月08日 09点12分
这都可以~~
2012年12月08日 09点12分
level 3
提供一下书的出处也好。
*_* 心的强大,才是真正的强大。Nokia N8-00
2012年12月30日 06点12分 21
书名《黑客与画家》
2014年02月25日 01点02分
level 9
能解决问题就好,我等老菜鸟不要求效率啥的。
现在一般规律是:如果实现同一个功能,由2个语言中的专家来写,代码越长的,效率越高,代码越短的效率越低。
比如c++,python,汇编。
另外,我想学LISP是因为有个它的语法在那,不看没办法。
至于你说的它的9个先进之处,在现在我是赞同,但不代表它永远先进。前段时间看到搜狐新闻,说电脑2020还是多少年可以具有听觉和视觉等感官,那若干年后,它可能会自己思考问题了,我想那时候根本不需要人去给它做这些了。物理中的那些理论就说明了这个规律,经典力学,相对论,宇称不守恒定律,反物质,一个个证明了前一个不是绝对正确。
扯远了,只是发表下个人观点,对我等身微之人,在现在还是得学下LISP
2013年01月21日 16点01分 24
level 14
@wuziyipingjie:
你用的什么“工业语言”?你看不出你用的东西的缺点还好意思不让别人说?另外似乎你只管编程语言?
还是拿出点实质内容吧,别扯什么应用来着——你到现在为止根本就没举出过什么应用的例子。要我给你几个?
[瞌睡]
2013年02月23日 12点02分 26
2013年02月23日 12点02分
1 2 3 尾页