新的基础结构 有时你会为了适应构造上的改变而需要一种新的语言。在“云”的概念出来之后,这种情况一直在发生。 传统上程序是运行在本地计算机上的。这些程序就是你下载并安装在计算机上的那些“应用”。有时,被称为“网络”的东西可以将一台计算机上的应用运行 到远程的其它计算机上。这些被称为网页应用,譬如Facebook.com或者Twitter.com。它们被称为应用程序,因为他们并不仅仅是静态的信 息页面。在网页应用中,你可以做出动作,并立即看到随之产生的改变,虽然真正的Facebook.com应用是运行在某处的服务器上的,而不是在你自己的 计算机上面。 创建这样的应用实际上代价是很高的:你耗费大量的计算力和带宽来将分发“作为服务的软件”,也就是“运行于云端”。运行这些云要耗费大量的金钱,尤其是用于冷却服务器的空调。因此最近一群天才聚集到一起创造了一个被称为Node.js的开源平台,它可以大幅度地降低网页中运行应用的成本,至于原因,在此我不会有所涉及。 许多开发者更愿意他们的应用能作为服务来运行,因为网页与可下载的应用相比有更多优点,譬如:没有东西可下载!Node.js可以让网页应用大规模 地降低运行成本,因此参与到此项目中的人数有爆炸性地增长。Node.js平台使用JavaScript写的。Node(以及其他的一些流行的库,譬如 Meteor.js和Angular.js)解释了为何JavaScript的使用人数最近呈爆炸性增长。。 这并不是说最流行的语言就独领风骚。其它语言譬如Erlang重新激起了人们的兴趣,因为应用正在趋向于运行在云端。实际上,正是这款并不怎么流行的语言 Erlang给WhatsApp提供了强劲的动力。 文化 编程语言是由一些人为另外一些人创造的。因此,它们承载着创造者的文化印记,有些文化印记不为其他群体的工程师们喜爱,因此他们转而创造出了自己的版本。这在计算机科学历史中无数次上演,导致产生了许多流行语言的方言。最明显例子就是首个阿拉伯语编程语言。去年有篇关于Ramsey Nasser的文章,他创造了第一个表情文字编程语言: Nasser评论到: “我们使用的工具承载着它们创造者的文化设想。”当Nasser创造قلب的时候,他在将true和false翻译成阿拉伯语时遇到了困难。最终他使用了 correct和incorrect这两个词,虽然两者的概念并不完全吻合,但是他说这最终演变成了一场他不得不和他父母以及朋友进行的奇妙对话。 Nasser旨在创造编码的通用性:“Emojinal意在甩掉文化包袱。” 这是一个古老格言的另一种版本:你说的语言改变了你思考的方式。有些语言有助于某些类型的思考;而有些有助于其他类型的。正如我们在四月份写下的文字所说: “语言不仅是针对不同工作的不同工具,它们还是可以描绘你思考编程的技术。”Richard Pattis说。他是加州大学的信息学高级讲师,他于1981年发明了Karel教育编程语言。Pattis 建议多才多艺的程序员要扩展思维的话,最好学习不同编程范式的语言,从面向对象语言(譬如C++/JAVA),到函数式语言(譬如ML和 Haskell),到脚本语言(譬如Lisp和Python),到逻辑基础语言(譬如Prolog),到低级语言(譬如C,Java虚拟机或者机器语 言)。目标不是为了熟练运用这些语言,而是能从不同的角度来思考解决问题。好的程序员不仅仅学习如何编程,还要学习核心概念,用其武装自己的大脑,从而写 出高效的代码来解决问题。 程序员们,如果你对为何编程语言会兴起(或衰落)有任何见解,请在Twitter上告诉我,请@chrisdannen。 更新:在”抽象”部分提到的编程中设计模式的重要性是不可以低估的。在我发布这篇推文时,开发人员 Matt Drance回答了这个问题。如果要我挑出一句话来回答的话,这句话也许是最精准的了:新语言之所以兴起,是因为目前的设计模式(也就是目前的 开发语言)可能无法满足我们在未来的需求了。 原文链接: Chris Dannen 翻译: 伯乐在线 - 伯乐在线读者 译文链接: http://blog.jobbole.com/72508/ |