为什么lisp是黑客语言,lisp黑客不可控

hacker2年前黑客176

黑客故事之早期的黑客是如何诞生的

学院技术模型铁路俱乐部(Tech Model Railroad Club,TMRC) 的信号动力委员会(Signals and Power Committee,SP)把它作为最时髦的科技玩具,并由此产生了许多程序设计工具、术语、和整个文化氛围——这些,直到今日我们仍然依稀可辨。史蒂文·利维(Steven Levy)在《黑客》(Hackers)的第一部分中详细的记录了这段岁月。

“黑客”这个词汇最早出现在麻省理工学院的计算机文化中。TMRC中的黑客,日后成为了MIT人工智能实验室的核心成员,而该实验室直到80年代早期都一直主导着全世界的人工智能研究。从ARPAnet诞生的第一年,1969年开始,他们的影响力便不断的扩大。

ARPAnet是第一条横贯(美国)大陆的高速计算机网络,由美国国防部出资兴建。作为一实验性的数据通讯网络,它将数以百计的大学、国防部分包商、研究机构连接在一起。各地的研究人员能以史无前例的速度和弹性交换信息,它为协同工作带来了巨大推进,并使得科技创新突飞猛进。

ARPAnet还有另一项好处,它将散落在全美国的黑客汇聚到一起,一改往日局面——几个独居一隅的小组各自发展朝生暮死的本地文化。他们发现(或觉察到)自己置身于一个网络部族之中。

黑客文化的第一批史前遗存——第一批术语表、第一批讽刺文学、关于黑客伦理的自发讨论——凡此种种都萌生在ARPAnet的早期岁月中。特别是在1973年到1975年,通过网络协作我们完成了“黑客字典”(Jargon File)的第一版,这个术语辞典成了一份黑客文化的定义文档。终于在1983年以《黑客辞典》之名付梓刊印了。虽然该书已经绝版了,但是我们现在有了经过修正和扩充的《新黑客辞典》。

黑客道在那些连接到网络的大学中绽放,特别(并非绝对)是在计算机科学部门中。60年代末,首先由麻省理工学院人工智能和计算机实验室领军,斯坦福大学人工智能实验室(SAIL)和卡内基梅隆大学(CMU)紧随其后。这些兴旺的计算机科学以及人工智能实验室吸引到无数人才,他们都对黑客文化作出了伟大的贡献——无论是创造技术还是传说。

为了了解日后的故事,我们有必要先看看电脑本身。因为无论是人工智能实验室的升腾还是最终的陨落,都取决于计算机科技变幻的波涛。

从PDP-1型开始,黑客道的命运就紧紧的和DEC(Digital Equipment Corporation,迪吉多)的PDP系列微型机交织在一起了。DEC可谓是交互计算和分时系统的商业先驱。由于其灵活、强大和比同行便宜的特点,被很多大学所采用。

廉价的分时操作系统是黑客文化成长的中继,ARPAnet生命的大部分时间都被DEC机器编织的网络占据了。其中最重要是在1967年首次推出的PDP-10型,它受到黑客道的青昧长达十五年之久。TOPS-10 (DEC为这个机型开发的操作系统)和MACRO-10 (它的汇编程序)至今还能在许多术语和传说中泛起记忆的涟漪。

麻省理工学院虽然像大家一样采用PDP-10,却试图独辟蹊径。他们不屑于使用DEC开发的操作系统,而是打算自己编一个——传说中的ITS。

ITS是IncompatibleTime-sharing System(不兼容分时系统)的缩写,这个名称也正是MIT黑客姿态的写照(技术上,这是对其前辈“兼容分时系统”的戏谑,CompatibleTime-Sharing System, CTSS)。他们就是要自成一派。很幸运,这群人并非“夜郎自大”。尽管ITS通常离奇古怪并与错误相伴,但是这不足以遮盖许多技术创新的光芒,而且ITS至今还是分时系统单次运行时间最长记录的保持者。

ITS本身是用汇编语言写成的,但是其许多项目却采用了一种人工智能语言——LISP。当时,LISP可算得上是同类语言中最强大灵活的了。而且即使在二十五年后的今天,它也拥有比大多数语言出色的设计。LISP让ITS黑客们可以异想天开,是促成他们成功的主要原因,也是黑客道至今衷爱的语言之一。

许多ITS文化中的科技创造沿用至今,其中最著名的恐怕要数EMACS程序编辑器了。如同你在“黑客辞典”中看到的一样,许多ITS的传说还在黑客坊间流传。

SAIL和CMU当然也没闲着。许多在SAIL的PDP-10环境下成长起来的黑客,日后成为我们今天个人电脑中“窗口/图标/鼠标”软件界面领域的巨擘。而CMU的黑客则主导了专家系统和工业机器人技术的首次大规模应用。

另一个文化重镇是施乐的PARC——著名的帕洛阿尔托研究中心(Palo Alto Research Center)。在70年代初到80年代中期这十余年的时间里,PARC破天荒般的创造了数量惊人的软件和硬件。我们今天接触到的软件界面风格(包括窗口、鼠标、图标)就源自这里。当然,还有激光打印机和局域网。PARC在个人电脑出现(80年代)的十年前就开发出了可以与之一较短长的D系列机型。遗憾的是,“先知们”没有得到自家公司的赏识。以至于PARC成了一个笑柄——“那是为别人生产优秀创意的地方”。然而不可否认PARC对黑客道的影响是普遍而深入的。

贯穿70年代,ARPAnet和PDP-10文化变得愈发强大而多变。小巧的电子邮件列表,将各地具有独特爱好的人凝聚在一起。出现了越来越多的“小组”,而且延伸到了社交和娱乐领域。DARPA(美国国防部高级研究计划署)对所有“未授权”的技术活动睁一只眼闭一只眼。因为他们知道,与将一代睿智的年青人引入计算机领域相比,这点额外的开销简直微不足道。

最著名的“社交”ARPAnet邮件列表恐怕要数科幻小说迷建立的SF-LOVERS了。它至今都很活跃,实际上今天更广阔的“因特网”是由ARPAnet演化而成的。不及如此,这种对通讯模式的开拓,日后会被一些牟利性分时服务商推向商业化。比如CompuServe, GEnie 和Prodigy (而最终被AOL掌控)。

你的历史学家是在1977年通过ARPAnet和科幻小说圈初涉黑客文化的。在那之后的诸多变迁(也是我将叙述的),都是我亲身参与和见证的。

黑客的行为特征。

这些多百度一下,就可以得到答案。以下仅供参考。

要想更好的保护网络不受黑客的攻击,就必须对黑客的攻击方法、攻击原理、攻击过程有深入的、详细的了解,只有这样才能更有效、更具有针对性的进行主动防护。下面通过对黑客攻击方法的特征分析,来研究如何对黑客攻击行为进行检测与防御。

一、反攻击技术的核心问题

反攻击技术(入侵检测技术)的核心问题是如何截获所有的网络信息。目前主要是通过两种途径来获取信息,一种是通过网络侦听的途径(如Sniffer,Vpacket等程序)来获取所有的网络信息(数据包信息,网络流量信息、网络状态信息、网络管理信息等),这既是黑客进行攻击的必然途径,也是进行反攻击的必要途径;另一种是通过对操作系统和应用程序的系统日志进行分析,来发现入侵行为和系统潜在的安全漏洞。

二、黑客攻击的主要方式

黑客对网络的攻击方式是多种多样的,一般来讲,攻击总是利用“系统配置的缺陷”,“操作系统的安全漏洞”或“通信协议的安全漏洞”来进行的。到目前为止,已经发现的攻击方式超过2000种,其中对绝大部分黑客攻击手段已经有相应的解决方法,这些攻击大概可以划分为以下六类:

1.拒绝服务攻击:一般情况下,拒绝服务攻击是通过使被攻击对象(通常是工作站或重要服务器)的系统关键资源过载,从而使被攻击对象停止部分或全部服务。目前已知的拒绝服务攻击就有几百种,它是最基本的入侵攻击手段,也是最难对付的入侵攻击之一,典型示例有SYN Flood攻击、Ping Flood攻击、Land攻击、WinNuke攻击等。

2.非授权访问尝试:是攻击者对被保护文件进行读、写或执行的尝试,也包括为获得被保护访问权限所做的尝试。

3.预探测攻击:在连续的非授权访问尝试过程中,攻击者为了获得网络内部的信息及网络周围的信息,通常使用这种攻击尝试,典型示例包括SATAN扫描、端口扫描和IP半途扫描等。

4.可疑活动:是通常定义的“标准”网络通信范畴之外的活动,也可以指网络上不希望有的活动,如IP Unknown Protocol和Duplicate IP Address事件等。

5.协议解码:协议解码可用于以上任何一种非期望的方法中,网络或安全管理员需要进行解码工作,并获得相应的结果,解码后的协议信息可能表明期望的活动,如FTU User和Portmapper Proxy等解码方式。

6.系统代理攻击:这种攻击通常是针对单个主机发起的,而并非整个网络,通过RealSecure系统代理可以对它们进行监视。

三、黑客攻击行为的特征分析与反攻击技术

入侵检测的最基本手段是采用模式匹配的方法来发现入侵攻击行为,要有效的进反攻击首先必须了解入侵的原理和工作机理,只有这样才能做到知己知彼,从而有效的防止入侵攻击行为的发生。下面我们针对几种典型的入侵攻击进行分析,并提出相应的对策。

1.Land攻击

攻击类型:Land攻击是一种拒绝服务攻击。

攻击特征:用于Land攻击的数据包中的源地址和目标地址是相同的,因为当操作系统接收到这类数据包时,不知道该如何处理堆栈中通信源地址和目的地址相同的这种情况,或者循环发送和接收该数据包,消耗大量的系统资源,从而有可能造成系统崩溃或死机等现象。

检测方法:判断网络数据包的源地址和目标地址是否相同。

反攻击方法:适当配置防火墙设备或过滤路由器的过滤规则就可以防止这种攻击行为(一般是丢弃该数据包),并对这种攻击进行审计(记录事件发生的时间,源主机和目标主机的MAC地址和IP地址)。

2.TCP SYN攻击

攻击类型:TCP SYN攻击是一种拒绝服务攻击。

攻击特征:它是利用TCP客户机与服务器之间三次握手过程的缺陷来进行的。攻击者通过伪造源IP地址向被攻击者发送大量的SYN数据包,当被攻击主机接收到大量的SYN数据包时,需要使用大量的缓存来处理这些连接,并将SYN ACK数据包发送回错误的IP地址,并一直等待ACK数据包的回应,最终导致缓存用完,不能再处理其它合法的SYN连接,即不能对外提供正常服务。

检测方法:检查单位时间内收到的SYN连接否收超过系统设定的值。

反攻击方法:当接收到大量的SYN数据包时,通知防火墙阻断连接请求或丢弃这些数据包,并进行系统审计。

3.Ping Of Death攻击

攻击类型:Ping Of Death攻击是一种拒绝服务攻击。

攻击特征:该攻击数据包大于65535个字节。由于部分操作系统接收到长度大于65535字节的数据包时,就会造成内存溢出、系统崩溃、重启、内核失败等后果,从而达到攻击的目的。

检测方法:判断数据包的大小是否大于65535个字节。

反攻击方法:使用新的补丁程序,当收到大于65535个字节的数据包时,丢弃该数据包,并进行系统审计。

4.WinNuke攻击

攻击类型:WinNuke攻击是一种拒绝服务攻击。

攻击特征:WinNuke攻击又称带外传输攻击,它的特征是攻击目标端口,被攻击的目标端口通常是139、138、137、113、53,而且URG位设为“1”,即紧急模式。

检测方法:判断数据包目标端口是否为139、138、137等,并判断URG位是否为“1”。

反攻击方法:适当配置防火墙设备或过滤路由器就可以防止这种攻击手段(丢弃该数据包),并对这种攻击进行审计(记录事件发生的时间,源主机和目标主机的MAC地址和IP地址MAC)。

5.Teardrop攻击

攻击类型:Teardrop攻击是一种拒绝服务攻击。

攻击特征:Teardrop是基于UDP的病态分片数据包的攻击方法,其工作原理是向被攻击者发送多个分片的IP包(IP分片数据包中包括该分片数据包属于哪个数据包以及在数据包中的位置等信息),某些操作系统收到含有重叠偏移的伪造分片数据包时将会出现系统崩溃、重启等现象。

检测方法:对接收到的分片数据包进行分析,计算数据包的片偏移量(Offset)是否有误。

反攻击方法:添加系统补丁程序,丢弃收到的病态分片数据包并对这种攻击进行审计。

6.TCP/UDP端口扫描

攻击类型:TCP/UDP端口扫描是一种预探测攻击。

攻击特征:对被攻击主机的不同端口发送TCP或UDP连接请求,探测被攻击对象运行的服务类型。

检测方法:统计外界对系统端口的连接请求,特别是对21、23、25、53、80、8000、8080等以外的非常用端口的连接请求。

反攻击方法:当收到多个TCP/UDP数据包对异常端口的连接请求时,通知防火墙阻断连接请求,并对攻击者的IP地址和MAC地址进行审计。

对于某些较复杂的入侵攻击行为(如分布式攻击、组合攻击)不但需要采用模式匹配的方法,还需要利用状态转移、网络拓扑结构等方法来进行入侵检测。

四、入侵检测系统的几点思考

从性能上讲,入侵检测系统面临的一个矛盾就是系统性能与功能的折衷,即对数据进行全面复杂的检验构成了对系统实时性要求很大的挑战。

从技术上讲,入侵检测系统存在一些亟待解决的问题,主要表现在以下几个方面:

1.如何识别“大规模的组合式、分布式的入侵攻击”目前还没有较好的方法和成熟的解决方案。从Yahoo等著名ICP的攻击事件中,我们了解到安全问题日渐突出,攻击者的水平在不断地提高,加上日趋成熟多样的攻击工具,以及越来越复杂的攻击手法,使入侵检测系统必须不断跟踪最新的安全技术。

2.网络入侵检测系统通过匹配网络数据包发现攻击行为,入侵检测系统往往假设攻击信息是明文传输的,因此对信息的改变或重新编码就可能骗过入侵检测系统的检测,因此字符串匹配的方法对于加密过的数据包就显得无能为力。

3.网络设备越来越复杂、越来越多样化就要求入侵检测系统能有所定制,以适应更多的环境的要求。

4.对入侵检测系统的评价还没有客观的标准,标准的不统一使得入侵检测系统之间不易互联。入侵检测系统是一项新兴技术,随着技术的发展和对新攻击识别的增加,入侵检测系统需要不断的升级才能保证网络的安全性。

5.采用不恰当的自动反应同样会给入侵检测系统造成风险。入侵检测系统通常可以与防火墙结合在一起工作,当入侵检测系统发现攻击行为时,过滤掉所有来自攻击者的IP数据包,当一个攻击者假冒大量不同的IP进行模拟攻击时,入侵检测系统自动配置防火墙将这些实际上并没有进行任何攻击的地址都过滤掉,于是造成新的拒绝服务访问。

6.对IDS自身的攻击。与其他系统一样,IDS本身也存在安全漏洞,若对IDS攻击成功,则导致报警失灵,入侵者在其后的行为将无法被记录,因此要求系统应该采取多种安全防护手段。

7.随着网络的带宽的不断增加,如何开发基于高速网络的检测器(事件分析器)仍然存在很多技术上的困难。

入侵检测系统作为网络安全关键性测防系统,具有很多值得进一步深入研究的方面,有待于我们进一步完善,为今后的网络发展提供有效的安全手段。

Lisp语言为什么会受到推崇?

去学呗,学了再自己做判断。学门语言又不会怀孕。

推崇Lisp的文章你也别看。(可自行将Lisp代换为任何技术名词)因为好多人只是看了看黑客与画家,又想谈论元编程、函数式编程,又不会实现解释器和卫生宏,打开他的文章一翻,都是Lisp is hackable, lisp is functional之类的陈词滥调,你说他们能搞出个什么花样。

真心想了解Lisp的来龙去脉,知道这门语言怎样诞生、怎样发展、怎样没落和融入其他语言,除了学Lisp、实现自己的Lisp以外,Guy Steele的The Evolution of Lisp一文是个不错的起点,然后你可以从这里出发去翻一下John McCarthy、Dan Friedman、Guy Steele、Gerald Sussman、Peter Norvig等人的一些经典文章。

为什么Lisp语言如此先进

一、如果我们把流行的编程语言,以这样的顺序排列:Java、Perl、Python、Ruby。你会发现,排在越后面的语言,越像Lisp。Python模仿Lisp,甚至把许多Lisp黑客认为属于设计错误的功能,也一起模仿了。至于Ruby,如果回到1975年,你声称它是一种Lisp方言,没有人会反对。编程语言现在的发展,不过刚刚赶上1958年Lisp语言的水平。

二、

1958年,John McCarthy设计了Lisp语言。我认为,当前最新潮的编程语言,只是实现了他在1958年的设想而已。

这怎么可能呢?计算机技术的发展,不是日新月异吗?1958年的技术,怎么可能超过今天的水平呢?

让我告诉你原因。

这是因为John McCarthy本来没打算把Lisp设计成编程语言,至少不是我们现在意义上的编程语言。他的原意只是想做一种理论演算,用更简洁的方式定义图灵机。

所以,为什么上个世纪50年代的编程语言,到现在还没有过时?简单说,因为这种语言本质上不是一种技术,而是数学。数学是不会过时的。你不 应该把Lisp语言与50年代的硬件联系在一起,而是应该把它与快速排序(Quicksort)算法进行类比。这种算法是1960年提出的,至今仍然是最 快的通用排序方法。

三、

Fortran语言也是上个世纪50年代出现的,并且一直使用至今。它代表了语言设计的一种完全不同的方向。Lisp是无意中从纯理论发展 为编程语言,而Fortran从一开始就是作为编程语言设计出来的。但是,今天我们把Lisp看成高级语言,而把Fortran看成一种相当低层次的语 言。

1956年,Fortran刚诞生的时候,叫做Fortran I,与今天的Fortran语言差别极大。Fortran I实际上是汇编语言加上数学,在某些方面,还不如今天的汇编语言强大。比如,它不支持子程序,只有分支跳转结构(branch)。

Lisp和Fortran代表了编程语言发展的两大方向。前者的基础是数学,后者的基础是硬件架构。从那时起,这两大方向一直在互相靠拢。 Lisp刚设计出来的时候,就很强大,接下来的二十年,它提高了自己的运行速度。而那些所谓的主流语言,把更快的运行速度作为设计的出发点,然后再用超过 四十年的时间,一步步变得更强大。

直到今天,最高级的主流语言,也只是刚刚接近Lisp的水平。虽然已经很接近了,但还是没有Lisp那样强大。

四、

Lisp语言诞生的时候,就包含了9种新思想。其中一些我们今天已经习以为常,另一些则刚刚在其他高级语言中出现,至今还有2种是Lisp独有的。按照被大众接受的程度,这9种思想依次是:

1. 条件结构(即"if-then-else"结构)。现在大家都觉得这是理所当然的,但是Fortran I就没有这个结构,它只有基于底层机器指令的goto结构。

2. 函数也是一种数据类型。在Lisp语言中,函数与整数或字符串一样,也属于数据类型的一种。它有自己的字面表示形式(literal representation),能够储存在变量中,也能当作参数传递。一种数据类型应该有的功能,它都有。

3. 递归。Lisp是第一种支持递归函数的高级语言。

4. 变量的动态类型。在Lisp语言中,所有变量实际上都是指针,所指向的值有类型之分,而变量本身没有。复制变量就相当于复制指针,而不是复制它们指向的数据。

5. 垃圾回收机制。

6. 程序由表达式(expression)组成。Lisp程序是一些表达式区块的集合,每个表达式都返回一个值。这与Fortran和大多数后来的语言都截然不同,它们的程序由表达式和语句(statement)组成。

区分表达式和语句,在Fortran I中是很自然的,因为它不支持语句嵌套。所以,如果你需要用数学式子计算一个值,那就只有用表达式返回这个值,没有其他语法结构可用,因为否则就无法处理这个值。

后来,新的编程语言支持区块结构(block),这种限制当然也就不存在了。但是为时已晚,表达式和语句的区分已经根深蒂固。它从Fortran扩散到Algol语言,接着又扩散到它们两者的后继语言。

7. 符号(symbol)类型。符号实际上是一种指针,指向储存在哈希表中的字符串。所以,比较两个符号是否相等,只要看它们的指针是否一样就行了,不用逐个字符地比较。

8. 代码使用符号和常量组成的树形表示法(notation)。

9. 无论什么时候,整个语言都是可用的。Lisp并不真正区分读取期、编译期和运行期。你可以在读取期编译或运行代码;也可以在编译期读取或运行代码;还可以在运行期读取或者编译代码。

在读取期运行代码,使得用户可以重新调整(reprogram)Lisp的语法;在编译期运行代码,则是Lisp宏的工作基础;在运行期编 译代码,使得Lisp可以在Emacs这样的程序中,充当扩展语言(extension language);在运行期读取代码,使得程序之间可以用S-表达式(S-expression)通信,近来XML格式的出现使得这个概念被重新"发 明"出来了。

五、

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把语言设计成这个样子,就是为了让这种推导成为可能。

六、

就算Lisp确实代表了目前主流编程语言不断靠近的一个方向,这是否意味着你就应该用它编程呢?

如果使用一种不那么强大的语言,你又会有多少损失呢?有时不采用最尖端的技术,不也是一种明智的选择吗?这么多人使用主流编程语言,这本身不也说明那些语言有可取之处吗?

另一方面,选择哪一种编程语言,许多项目是无所谓的,反正不同的语言都能完成工作。一般来说,条件越苛刻的项目,强大的编程语言就越能发挥 作用。但是,无数的项目根本没有苛刻条件的限制。大多数的编程任务,可能只要写一些很小的程序,然后用胶水语言把这些小程序连起来就行了。你可以用自己熟 悉的编程语言,或者用对于特定项目来说有着最强大函数库的语言,来写这些小程序。如果你只是需要在Windows应用程序之间传递数据,使用Visual Basic照样能达到目的。

那么,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倍。如果你需要一年时间实现某个功能,它只需要不到三星期。反过来说,如果某个新功能,它开发了三个月,那么你需要五年才能做出来。

你知道吗?上面的对比,还只是考虑到最好的情况。当我们只比较代码数量的时候,言下之意就是假设

相关文章

深圳大学,深圳大学黑客案

深圳大学,深圳大学黑客案

中国年龄最年轻的黑客汪正扬为了不做作业,黑掉学校的答题器,后来怎样? 后来他考上了大学,他的计算机能力非常高超,大学毕业后,他找到了一份待遇非常好的工作,如今生活过得很美满。中国十大黑客排名是什么?有...

电脑被机房安全管理系统拦截,黑客闯入机房被抓了

电脑被机房安全管理系统拦截,黑客闯入机房被抓了

电脑黑客被抓且涉及金额较大后果会怎样??会不会被判刑 .. 西方国家会判很多年,有上百年的(西方没有死刑和无期)中国,如果你没有把政府或银行的系统毁坏或没有造成超级重大经济损失,应该不会判很长,基本1...

黑客dos入侵教程,黑客DC

黑客dos入侵教程,黑客DC

目前最流行的网络词语有哪些 一、论坛日常用语: 1、BBS:①Bulletin Board System的缩写,指电子公告板系统,国内统称论坛。②波霸,Big-Breasted Sister的缩写。...

美国的黑客攻击,大学遭受国外黑客攻击

美国的黑客攻击,大学遭受国外黑客攻击

西北工业大学被美国NSA攻击,通过此事我们该深思什么? 对于我国西北工业大学被美国黑客攻击这件事情,我们最应该深思的就是我们国家的网络安全事业还有非常多的路要走,我们还需要对重点的领域加强互联网安全保...

想象中的黑客现实中的黑客,现实中的黑客和想象的差距

想象中的黑客现实中的黑客,现实中的黑客和想象的差距

为什么我们感觉黑客是神秘又可怕的呢? 崇尚自由。黑客文化首先给人的突出感觉就是一种自由不羁的的精神。黑客如同夜行的蝙蝠侠,任意穿梭在网络空间中。黑客在电脑虚拟世界发挥着自己的极致的自由。黑客并不是很神...

ios日历提醒病毒,ios日历提醒被黑客

ios日历提醒病毒,ios日历提醒被黑客

iphone弹出黑客入侵怎么办? 可以关闭APP跟踪来解决。准备工具:iphone11、ios14具体步骤:1、在iPhone11主屏幕,点击设置选项。如下图所示:2、在设置界面,点击隐私选项。如下图...

评论列表

访客
2022-12-03 21:11:07

件联系在一起,而是应该把它与快速排序(Quicksort)算法进行类比。这种算法是1960年提出的,至今仍然是最 快的通用排序方法。三、Fortran语言也是上个世纪50年代出现的,并且一直使用至今。它代表了语言设计的一种完全不同的方向。Lisp是无意中从纯理论发展 为

访客
2022-12-03 17:31:05

吗?上面的对比,还只是考虑到最好的情况。当我们只比较代码数量的时候,言下之意就是假设

访客
2022-12-03 12:56:44

诞生的第一年,1969年开始,他们的影响力便不断的扩大。ARPAnet是第一条横贯(美国)大陆的高速计算机网络,由美国国防部出资兴建。作为一实验性的数据通讯网络,它将数以百计的大学、国防部分包商、研究机构连接在一起。各地的研究人员能以史无前例的速度和弹性交换信息,它为协同工作带来了巨大推进,并使得科

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。