翻译完成

This commit is contained in:
runningwater 2014-10-06 23:17:30 +08:00
parent d76f302e1c
commit f4fb4e4266
2 changed files with 85 additions and 86 deletions

View File

@ -1,86 +0,0 @@
(translating by runningwater)
Why Do Some Old Programming Languages Never Die?
================================================================================
> We like what we already know.
![](http://a4.files.readwrite.com/image/upload/c_fill,h_900,q_70,w_1600/MTIzMDQ5NjY0MTUxMjU4NjM2.jpg)
Many of todays most well-known programming languages are old enough to vote. PHP is 20. Python is 23. HTML is 21. Ruby and JavaScript are 19. C is a whopping 42 years old.
Nobody could have predicted this. Not even computer scientist [Brian Kernighan][1], co-author of the very first book on C, which is still being printed today. (The language itself was the work of Kernighan's [co-author Dennis Ritchie][2], who passed away in 2011.)
“I dimly recall a conversation early on with the editors, telling them that wed sell something like 5,000 copies of the book,” Kernighan told me in a recent interview. “We managed to do better than that. I didnt think students would still be using a version of it as a textbook in 2014.”
Whats especially remarkable about C's persistence is that Google developed a new language, Go, specifically to more efficiently solve the problems C solves now. Still, its hard for Kernighan to imagine something like Go outright killing C no matter how good it is.
“Most languages dont die—or at least once they get to a certain level of acceptance they dont die," he said. "C still solves certain problems better than anything else, so it sticks around.”
### Write What You Know ###
Why do some computer languages become more successful than others? Because developers choose to use them. Thats logical enough, but it gets tricky when you want to figure out why developers choose to use the languages they do.
Ari Rabkin and Leo Meyerovich are researchers from, respectively, Princeton and the University of California at Berkeley who devoted two years to answering just that question. Their resulting paper, [Empirical Analysis of Programming Language Adoption][3], describes their analysis of more than 200,000 Sourceforge projects and polling of more than 13,000 programmers.
Their main finding? Most of the time programmers choose programming languages they know.
“There are languages we use because weve always used them,” Rabkin told me. “For example, astronomers historically use IDL [Interactive Data Language] for their computer programs, not because it has special features for stars or anything, but because it has tremendous inertia. They have good programs theyve built with it that they want to keep.”
In other words, its partly thanks to name recognition that established languages retain monumental staying power. Of course, that doesnt mean popular languages dont change. Rabkin noted that the C we use today is nothing like the language Kernighan first wrote about, which probably wouldnt be fully compatible with a modern C compiler.
“Theres an old, relevant joke in which an engineer is asked which language he thinks people will be using in 30 years and he says, I dont know, but itll be called Fortran,” Rabkin said. “Long-lived languages are not the same as how they were when they were designed in the '70s and '80s. People have mostly added things instead of removed because that doesnt break backwards compatibility, but many features have been fixed.”
This backwards compatibility means that not only can programmers continue to use languages as they update programs, they also dont need to go back and rewrite the oldest sections. That older legacy code keeps languages around forever, but at a cost. As long as its there, peoples beliefs about a language will stick around, too.
### PHP: A Case Study Of A Long-Lived Language ###
Legacy code refers to programs—or portions of programs—written in outdated source code. Think, for instance, of key programming functions for a business or engineering project that are written in a language that no one supports. They still carry out their original purpose and are too difficult or expensive to rewrite in modern code, so they stick around, forcing programmers to turn handsprings to ensure they keep working even as other code changes around them.
Any language that's been around more than a few years has a legacy-code problem of some sort, and PHP is no exception. PHP is an interesting example because its legacy code is distinctly different from its modern code, in what proponents say—and critics admit—is a huge improvement.
Andi Gutmans is a co-inventor of the Zend Engine, the compiler that became standard by the time PHP4 came around. Gutmans said he and his partner originally wanted to improve PHP3, and were so successful that the original PHP inventor, Rasmus Lerdorf, joined their project. The result was a compiler for PHP4 and its successor, PHP5.
As a consequence, the PHP of today is quite different from its progenitor, the original PHP. Yet in Gutmans' view, the base of legacy code written in older PHP versions keeps alive old prejudices against the language—such as the notion that PHP is riddled with security holes, or that it can't "scale" to handle large computing tasks.
"People who criticize PHP are usually criticizing where it was in 1998,” he says. “These people are not up-to-date with where it is today. PHP today is a very mature ecosystem.”
Today, Gutmans says, the most important thing for him as a steward is to encouraging people to keep updating to the latest versions. “PHP is a big enough community now that you have big legacy code bases," he says. "But generally speaking, most of our communities are on PHP5.3 at minimum.”
The issue is that users never fully upgrade to the latest version of any language. Its why many Python users are still using Python 2, released in 2000, instead of Python 3, released in 2008. Even after six years major users like Google still arent upgrading. There are a variety of reasons for this, but it made many developers wary about taking the plunge.
“Nothing ever dies," Rabkin says. "Any language with legacy code will last forever. Rewrites are expensive and if its not broke dont fix it.”
### Developer Brains As Scarce Resources ###
Of course, developers arent choosing these languages merely to maintain pesky legacy code. Rabkin and Meyerovich found that when it comes to language preference, age is just a number. As Rabkin told me:
> A thing that really shocked us and that I think is important is that we grouped people by age and asked them how many languages they know. Our intuition was that it would gradually rise over time; it doesnt. Twenty-five-year-olds and 45-year-olds all know about the same number of languages. This was constant through several rewordings of the question. Your chance of knowing a given language does not vary with your age.
In other words, its not just old developers who cling to the classics; young programmers are also discovering and adopting old languages for the first time. That could be because the languages have interesting libraries and features, or because the communities these developers are a part of have adopted the language as a group.
“Theres a fixed amount of programmer attention in the world,” said Rabkin. “If a language delivers enough distinctive value, people will learn it and use it. If the people you exchange code and knowledge with you share a language, youll want to learn it. So for example, as long as those libraries are Python libraries and community expertise is Python experience, Python will do well.”
Communities are a huge factor in how languages do, the researchers discovered. While there's not much difference between high level languages like Python and Ruby, for example, programmers are prone to develop strong feelings about the superiority of one over the other.
“Rails didnt have to be written in Ruby, but since it was, it proves there were social factors at work,” Rabkin says. “For example, the thing that resurrected Objective-C is that the Apple engineering team said, Lets use this. They didnt have to pick it.”
Through social influence and legacy code, our oldest and most popular computer languages have powerful inertia. How could Go surpass C? If the right people and companies say it ought to.
“It comes down to who is better at evangelizing a language,” says Rabkin.
Lead image by [Blake Patterson][4]
--------------------------------------------------------------------------------
via: http://readwrite.com/2014/09/02/programming-language-coding-lifetime
作者:[Lauren Orsini][a]
译者:[runningwater](https://github.com/runningwater)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://readwrite.com/author/lauren-orsini
[1]:http://en.wikipedia.org/wiki/Brian_Kernighan
[2]:http://en.wikipedia.org/wiki/Dennis_Ritchie
[3]:http://asrabkin.bitbucket.org/papers/oopsla13.pdf
[4]:https://www.flickr.com/photos/blakespot/2444037775/

View File

@ -0,0 +1,85 @@
为什么一些古老的编程语言不会消亡?
================================================================================
> 我们中意于我们所知道的。
![](http://a4.files.readwrite.com/image/upload/c_fill,h_900,q_70,w_1600/MTIzMDQ5NjY0MTUxMjU4NjM2.jpg)
当今许多知名的编程语言已经都非常古老了。PHP 语言20年、Python 语言23年、HTML 语言21年、Ruby 语言和 JavaScript 语言已经19年C 语言更是高达42年之久。
这是没人能预料得到的,即使是计算机科学家 [Brian Kernighan][1] 也一样。他是写著第一本关于 C 语言的作者之一只到今天这本书还在印刷着。C 语言本身的发明者 [Dennis Ritchie][2] 是 Kernighan 的合著者,他于 2011 年已辞世。)
“我依稀记得早期跟编辑们的谈话告诉他们我们已经卖出了5000册左右的量”最近采访 Kernighan 时他告诉我说。“我们设法做的更好。我没有想到的是在2014年的教科书里学生仍然在使用第一个版本的书。”
关于 C 语言的持久性特别显著的就是 Google 开发出了新的语言 Go,解决同一问题比用 C 语言更有效率。
“大多数语言并不会消失或者至少很大一部分用户承认它们不会消失”他说。“C 语言仍然在一定的领域独领风骚,所以它很接地气。”
### 编写所熟悉的 ###
为什么某些计算机编程语言要比其它的更流行?因为开发者都选择使用它们。逻辑上来说,这解释已经足够,但还想深入了解为什么开发人员会选择使用它们呢,这就有点棘手了。
分别来自普林斯顿大学和加州大学伯克利分校的研究者 Ari Rabkin 和 Leo Meyerovich 花费了两年时间来研究解决上面的问题。他们的研究报告,[《编程语言使用情况实例分析》][3],记录了对超过 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 说。
开始的图片来自 [Blake Patterson][4]
--------------------------------------------------------------------------------
via: http://readwrite.com/2014/09/02/programming-language-coding-lifetime
作者:[Lauren Orsini][a]
译者:[runningwater](https://github.com/runningwater)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://readwrite.com/author/lauren-orsini
[1]:http://en.wikipedia.org/wiki/Brian_Kernighan
[2]:http://en.wikipedia.org/wiki/Dennis_Ritchie
[3]:http://asrabkin.bitbucket.org/papers/oopsla13.pdf
[4]:https://www.flickr.com/photos/blakespot/2444037775/