为什么一些古老的编程语言不会消亡?

编译自:http://readwrite.com/2014/09/02/programming-language-coding-lifetime 作者: Lauren Orsini
原创:LCTT https://linux.cn/article-4524-1.html
译者: runningwater
本文地址:https://linux.cn/article-4524-1.html

2014-12-25 10:22   
评论: 4 分享: 6

我们钟爱我们已知的。

当今许多知名的编程语言已经都非常古老了。PHP 语言20年、Python 语言23年、HTML 语言21年、Ruby 语言和 JavaScript 语言已经19年,C 语言更是高达42年之久。

这是没人能预料得到的,即使是计算机科学家 Brian Kernighan 也一样。他是写著第一本关于 C 语言的作者之一,直到今天这本书还在印刷着。(C 语言本身的发明者 Dennis Ritchie 是 Kernighan 的合著者,他于 2011 年已辞世。)

“我依稀记得早期跟编辑们的谈话,告诉他们我们已经卖出了5000册左右的量,”最近采访 Kernighan 时他告诉我说。“我们设法做的更好。我没有想到的是在2014年的教科书里学生仍然在使用第一个版本的书。”

关于 C 语言的持久性特别显著的就是 Google 开发出了新的语言 Go,解决同一问题比用 C 语言更有效率。不过,我仍然很难想象 Go 能彻底杀死 C,无论它有多么好。

“大多数语言并不会消失或者至少很大一部分用户承认它们不会消失,”他说。“C 语言仍然在一定的领域独领风骚,所以它很接地气。”

编写所熟悉的

为什么某些计算机编程语言要比其它的更流行?因为开发者都选择使用它们。逻辑上来说,这解释已经足够,但还想深入了解为什么开发人员会选择使用它们呢,这就有点棘手了。

分别来自普林斯顿大学和加州大学伯克利分校的研究者 Ari Rabkin 和 Leo Meyerovich 花费了两年时间来研究解决上面的问题。他们的研究报告,《编程语言使用情况实例分析》,记录了对超过 200,000 个 Sourceforge 项目和超过 13,000 个程序员投票结果的分析。

他们主要的发现是什么呢?大多数时候程序员选择的编程语言都是他们所熟悉的。

“这些我们使用的语言还继续存在是因为我们经常使用他们,” Rabkin 告诉我。“例如:天文学家就经常使用 IDL
[交互式数据语言]来开发他们的计算机程序,并不是因为它具有什么特殊的亮点功能或其它特点,而是因为用它形成习惯了。他们已经用些语言构建出很优秀的程
序了,并且想保持原状。”

换句话说,它部分要归功于这些语言所创立的知名度仍保持较高。当然,这并不意味着流行的语言不会变化。Rabkin 指出我们今天在使用的 C 语言就跟 Kernighan 第一次创建时的一点都不同,那时的 C 编译器跟现代的也不是完全兼容。

“有一个古老的,关于工程师的笑话。工程师被问到哪一种编程语言人们会使用30年,他说,‘我不知道,但它总会被叫做 Fortran’,”
Rabkin
说到。“长期存活的语言跟他们在70年代和80年代刚设计出来的时候不太一样了。人们通常都是在上面增加功能,而不会删除功能,因为要保持向后兼容,但有
些功能会被修正。”

向后兼容意思就是当语言升级后,程序员不仅可以使用升级语言的新特性,也不用回去重写已经实现的老代码块。老的“遗留代码”的语法规则已经不用了,但舍弃是要花成本的。只要它们存在,我们就有理由相信相关的语言也会存在。

PHP: 存活长久语言的一个案例学习

遗留代码指的是用过时的源代码编写的程序或部分程序。想想看,一个企业或工程项目的关键程序功能部分是用没人维护的编程语言写出来的。因为它们仍起
着作用,用现代的源代码重写非常困难或着代价太高,所以它们不得不保留下来,即使其它部分的代码都变动了,程序员也必须不断折腾以保证它们能正常工作。

任何编程语言,存在了超过几十年时间都具有某种形式的遗留代码问题, PHP 也不例外。PHP 是一个很有趣的例子,因为它的遗留代码跟现在的代码明显不同,支持者或评论家都承认这是一个巨大的进步。

Andi Gutmans 是已经成为 PHP4 的标准编译器的 Zend Engine 的发明者之一。Gutmans
说他和搭档本来是想改进完善 PHP3 的,他们的工作如此成功,以至于 PHP 的原发明者 Rasmus Lerdorf
也加入他们的项目。结果就成为了 PHP4 和他的后续者 PHP5 的编译器。

因此,当今的 PHP 与它的祖先——即最开始的 PHP 是完全不同的。然而,在 Gutmans 看来,在用古老的 PHP
语言版本写的遗留代码的地方一直存在着偏见以至于上升到整个语言的高度。比如 PHP 充满着安全漏洞或没有“集群”功能来支持大规模的计算任务等概念。

“批评 PHP 的人们通常批评的是在 1998 年时候的 PHP 版本,”他说。“这些人都没有与时俱进。当今的 PHP 已经有了很成熟的生态系统了。”

如今,Gutmans 说,他作为一个管理者最重要的事情就是鼓励人们升级到最新版本。“PHP有个很大的社区,足以支持您的遗留代码的问题,”他说。“但总的来说,我们的社区大部分都在 PHP5.3 及以上的。”

问题是,任何语言用户都不会全部升级到最新版本。这就是为什么 Python 用户仍在使用 2000 年发布的 Python 2,而不是使用
2008 年发布的 Python 3 的原因。甚至在六年后,大多数像 Google
这样的用户仍没有升级。这种情况是多种原因造成的,但它使得很多开发者在承担风险。

“任何东西都不会消亡的,”Rabkin 说。“任何语言的遗留代码都会一直存在。重写的代价是非常高昂的,如果它们不出问题就不要去改动。”

开发者是稀缺的资源

当然,开发者是不会选择那些仅仅只是为了维护老旧代码的的程序语言的。当谈论到对语言选择的偏好时,Rabkin 和 Meyerovich 发现年龄仅仅只代表个数字。Rabkin 告诉我说:

有一件事使我们被深深震撼到了。这事最重要的就是我们给人们按年龄分组,然后询问他们知道多少编程语言。我们主观的认为随着年龄的增长知道的会越来
越多,但实际上却不是,25岁年龄组和45岁年龄组知道的语言数目是一样的。几个反复询问的问题这里持续不变的。您知道一种语言的几率并不与您的年龄挂
钩。

换句话说,不仅仅年长的开发者坚持传统,年轻的程序员也会认可并采用古老的编程语言作为他们的第一们语言。这可能是因为这些语言具有很有趣的开发库及功能特点,也可能是因为在社区里开发者都是喜爱这种开发语言的一伙人。

“在全球程序员关注的语言的数量是有定数的,” Rabkin
说。“如果一们语言表现出足够独特的价值,人们将会学习和使用它。如果是和您交流代码和知识的的某个人分享一门编程语言,您将会学习它。因此,例如,只要
那些 Python 库存在、 社区也对 Python 语言很有经验的话,那么 Python 仍将会大行其道。”

研究人员发现关于语言实现的功能,社区是一个巨大的因素。虽然像 Python 和 Ruby 这样的高级语言并没有太大的差别,但,程序员总是容易觉得一种比另一种优越。

“Rails 不一定要用 Ruby 语言编写,但它用了,这就是社区因素在起作用,” Rabkin 说。“例如,复活 Objective-C 语言这件事就是苹果的工程师团队说‘让我们使用它吧,’ 他们就没得选择了。”

通观社会的影响及老旧代码这些问题,我们发现最古老的和最新的计算机语言都有巨大的惰性。Go 语言怎么样才能超越 C 语言呢?如果有合适的人或公司说它超越它就超越。

“它归结为谁传播的更好谁就好,” Rabkin 说。

时间: 2024-10-10 20:14:39

为什么一些古老的编程语言不会消亡?的相关文章

史上最全编程语言列表_你掌握了哪些?

摘要: 计算机编程语言可用于将指令传达给计算机.下面可能是史上最全编程语言列表,我将它们分为以下几类,你掌握了哪些? 计算机编程语言可用于将指令传达给计算机.下面可能是史上最全编程语言列表,我将它们分为以下几类,你掌握了哪些? 解释型编程语言 函数式编程语言 编译型编程语言 过程式编程语言 脚本编程语言 标记编程语言 基于逻辑的编程语言 并发编程语言 面向对象编程语言 解释型编程语言 解释型语言是这样一种编程语言,其大部分实现直接执行指令,而无需先将程序编译成机器语言指令.解释器直接执行程序,它

2018十大最热门编程语言排行榜出炉,Java竟不是第一!

编程语言的受欢迎程度.学习的人群数量,以及由于人工智能的兴起,最热门的编程语言排行榜也发生了变化.让我们来看看. 1.Python Python的历史可以追溯到1989年,因其高度可读的代码而深受其粉丝的喜爱.许多程序员认为这是最简单的语言开始. Python是一种面向对象的解释型计算机程序设计语言,由荷兰人1989年发明,第一个公开发行版发行于1991年.Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进. Python具有丰富和强大的库.它常被昵称为胶水语

盘点:2019年最赚钱的10种编程语言

GitHub 逐渐成为一个中心,超过 4000 万开发人员使用 GitHub 来分享项目的代码,无论是个人的.行业的还是其他的. 在去年,因为与 Google 和 Amazon 的竞争,微软以 75 亿美元的价格收购了 GitHub,这很快成为它吸引云开发人员的关键. 作为开发人员的最大活跃站点之一,GitHub 是追踪开发人员中最流行的最佳场所.为此,我们发布了年度报告,让我们了解一下全世界的开发人员正在使用哪些技术. 根据对 GitHub 的统计,这是 2019 年最流行的 10 种语言:

Android NDK开发(一)——环境搭建

转载请注明出处:http://blog.csdn.net/allen315410/article/details/41800955 Android下的NDK开发是Android开发中不可或缺的一部分,通过Google提供的NDK套件,我们可以使用JNI这座桥梁在Java和C/C++之间建立联系(互相调用).那么,为什么在Android开发中需要了解NDK开发呢?诚然,这些原因有很多说法,在我总结来是这样的.C/C++是比Java还要古老的编程语言,由于其古老的特性,导致早期有很多优秀的类库出现,

rsync error: protocol incompatibility / mismatch ?

1.问题 今日在维护集群环境的时候,遇到了一个小问题,rsync 向集群中的机器传输文件的时候报错: protocol version mismatch -- is your shell clean? (see the rsync man page for an explanation) rsync error: protocol incompatibility (code 2) at compat.c(171) [sender=3.0.6] 即使打开调试选项 -vv,也没能得到更多的有用信息,

深圳汇道科技:新手不知道的入门编程的技术路线!速码!

不会设计的编程不是好前端,看着我们汇道科技的设计大神小哲与前端小宇又在为项目争执不下,小编不禁发出如此感慨,其实一个团队里面,项目都是环环相扣的,上一环节的参与者必须要懂得一些下一环节的相关知识,这样大家沟通起来才会更好更快!这就要求我们必须掌握多方面知识! 把编程单独拿出来说,编程不是一件无趣的事,它会给你带来无尽的欢乐.如果掌握不了多方面知识,那么我们可以把专业技能练到:精.致.特! 可是如何以最快的速度入门,这才是广大新手最关心的问题.本文就来谈谈编程入门的学习路线. 一.技术路线介绍 技

程序员阿士顿的故事[zz]

程序员阿士顿的故事 2011-03-19 21:37:51 前几天有人在 Stack Exchange 上提了一个问题 How can a new programmer impress the software engineer (boss)?(作为新手程序员如何给软件工程师出身的老板留下好印象?),Joel Spolsky(Joel on Software 的主人,<软件随想录>的作者) 看到了这个问题,他没有正面回答,而是在下面讲了悲催的程序员阿士顿的故事.正文:我告诉过你有关阿士顿的事情

编程珠玑番外篇

1.Plan 9 的八卦 在 Windows 下喜欢用 FTP 的同学抱怨 Linux 下面没有如 LeapFTP 那样的方便的工具. 在苹果下面用惯了 Cyberduck 的同学可能也会抱怨 Linux 下面使用 FTP 和 SFTP 是一件麻烦的事情. 其实一点都不麻烦, 因为在 LINUX 系统上压根就不需要用 FTP. 为什么呢? 因为一行简单的配置之后, 你就可以像使用本机文件一样使用远程的任何文件. 无论是想编辑, 查看还是删除重命名, 都和本机文件一样的用. 这么神奇的功能到底如何

1.Python编程基础

1. 其实,程序指的就是一系列指令,用来告诉计算机做什么,而编写程序的关键在于,我们需要用计算机可以理解的语言来提供这些指令. 虽然借助 Siri(Apple).Google Now(Android).Cortana(Microsoft)等技术,我们可以使用汉语直接告诉计算机做什么,比如“Siri,打开酷狗音乐”,但使用过这些系统的读者都知道,它尚未完全成熟,再加上我们语言充满了模糊和不精确因素,使得设计一个完全理解人类语言的计算机程序,仍然是一个有待解决的问题. 为了有效避开所有影响给计算机传