时间:2015-4-14来源:本站原创作者:佚名

原文链接: chris dannen翻译: 伯乐在线 - 伯乐在线读者

新的基础结构

如今计算机已经普及到各个领域,我们拥有的计算机语言难道还不够用吗?最简单的答案就是:不够

你也许会说:“可这根本不算一个新语言啊”的确如此,但和人类语言一样,编程语言经常也是从一个相近的语言发展而来,当发展到和原语言相当不一样的时候,就会被它的支持者们冠以“新语言”的名头emacs的故事说明了新语言被发明的另外一个原因:它们省事

程序员们,如果你对为何编程语言会兴起(或衰落)有任何见解,请在twitter上告诉我,请@chrisdannen

和其他创新一样,语言最开始也是由一些固执的人想用自己的方式做事而创造出来的,“自编程语言好学吗己的方式”也就是“最佳方式”下面这个故事发生在很久以前

1971年的时候,人们用lisp编程斯坦福大学的一个工程师发明了一个工具来lisp代码,今天的话我们会将其称为原始的文件器–就和mac上的textedit应用一样但它用起来相当不直观

3月21日 深圳 osc 源创会开始报名罗,送华为海思开发板

自二进制代码以后,几乎每种的语言都是为了让人们可以简易可靠地读写机器指令而存在的如果要人用冗长的二进制来写这些指令的话,他们会无聊到自抠 双目的(譬如大写字母a,用二进制代码表示的话,是小写字母a是因此,这样写一个单词就得花不少时间,更不用说一 般的程序都得有成千上万行的代码了)

如果你是一个自由主义艺术家,不要被抽象这个编程语言怎么学术语吓到–它在编程中的意思和生活中的意思其实是一样的试着这样想下:在写作的时候,我们将一段文字 称为“段落”这是对一种想法,或者一些语句的概念作出的抽象我们采用“段落”这个词,于是我们向别人说起这段文字时不用将整个段落的文字背诵出来

如果这个问题可以看做”先有鸡还是先有蛋”的问题,那么我们先从蛋开始许多语言(譬如我接触的第一个语言,basic)的开发初衷是为了将编程概念简单化,好让初学者、爱好者甚至所有人都能掌握计算机实际上是以二进制代码在“思考”这个说法的理由很简单:如果你将下达给机器的指令都用“是”或“否”(分别用1和0来表示)的问题来表达,那么计算机是不可能将事情搞得一团糟的(当然,如果你的代码有错的话编程语言发展另当别论)这个天才的想法是一个名为克劳德·香农的人想出来的,他在二战后认识到无线电信号在传输重要信息的时候非常地不可靠,这些信息现在你可能会交给计算机来存储或者处理

自我复制

抽象

许多开发者更愿意他们的应用能作为服务来运行,因为网页与可下载的应用相比有更多优点,譬如:没有东西可下载!node.js可以让网页应用大规模 地降低运行成本,因此参与到此项目中的人数有爆炸性地增长node.js平台使用javascript写的node(以及其他的一些流行的库,譬如 meteor.js和angular.js)解释了为何javascript的使用人数最近呈爆炸性增长

然后你得敲击esc键来查看更改的地方,就和编程语言参考手册“保存并预览”博文的草稿一样总之,这事让人挺痛苦的

实际上,使用这么多“黑客工具”的原因在于 理解编程概念最愉悦的方式就是将其转化成现实中的东西如此一来,刚开始编程的人就可以很好地接受这些概念如果以上这些你听来觉得无聊的话,并不意味着编程不适合你,只是你可以从硬件开始编程,而不要从软件开始

同样的道理,程序员总是在创建可重用的代码,因为和其他人类一样,他们很懒,不想做重复劳动大约30年之前,产生了一项重大的开发运动,计算机程序几乎都可以用可重用部件组装而成,程序员们将这些部件成为“类”(这和建筑、汽车或家具设计中的模块化运动相 似)这个设计模式就是人们熟知的“面向对象编程”next,也就是乔布斯在appl编程语言发展有哪些e之后创立的公司,将这个创意无限的模式称为编程的未来他们对对 “面向对象编程”兴趣十足,决定将其用来命名他们自己版本的c语言,于是objective-c诞生了apple在收购next之后也继承了 objective-c,并将os变成了mac os x只要有人想学新语言,我们就会开发新语言这么做的原因很简单,而且能让反对机械自动化的人都可以接受(向我们的node.js项目中的高手chris mcclellan致敬,他和我讨论了这个话题)

文化

“语言不仅是针对不同工作的不同工具,它们还是可以描绘你思考编程的技术”richard pattis说他是加州大学的信息学高级讲师,他于1981年发明了karel教育编程语编程语言版本区别pattis 建议多才多艺的程序员要扩展思维的话,最好学习不同编程范式的语言,从面向对象语言(譬如c++/java),到函数式语言(譬如ml和 haskell),到脚本语言(譬如lisp和python),到逻辑基础语言(譬如prolog),到低级语言(譬如c,java虚拟机或者机器语 言)目标不是为了熟练运用这些语言,而是能从不同的角度来思考解决问题好的程序员不仅仅学习如何编程,还要学习核心概念,用其武装自己的大脑,从而写 出高效的代码来解决问题

nasser评论到: “我们使用的工具承载着它们创造者的文化设想”当nasser创造???的时候,他在将true和false翻译成阿拉伯语时遇到了困难最终他使用了 co编程语言好学吗rrect和incorrect这两个词,虽然两者的概念并不完全吻合,但是他说这最终演变成了一场他不得不和他父母以及朋友进行的奇妙对话 nasser旨在创造编码的通用性:“emojinal意在甩掉文化包袱”

更新:在”抽象”部分提到的编程中设计模式的重要性是不可以低估的在我发布这篇推文时,开发人员 matt drance回答了这个问题如果要我挑出一句话来回答的话,这句话也许是最精准的了:新语言之所以兴起,是因为目前的设计模式(也就是目前的 开发语言)可能无法满足我们在未来的需求了

有时你会为了适应构造上的改变而需要一种新的语言在“云”的概念出来之后,这种情况一直在发生

如果某种语言使用了大量的通俗英语单词编程语言的版本区别而简单易读的话,那么它是“冗长”的objective-c,apple的编程语言,其荒谬的冗长程度臭名 昭著,而这也为apple赢得了“对用户友好”的名声简单易用的并不仅仅是计算机,还包括语言本身以下是一段虚拟代码,objective-c中的函 数就是这个样子的即使你从来没有编过程,你也可以一星半点地明白程序员是想让计算机做什么事:

教人编程

对于swift编程语言的兴奋劲逐渐消散之后,早上我醒来后在《纽约时报》看到了farhad manjoo的推文,他非常好奇,为什么还有人会需要新的编程语言

译文链接: http://blog.jobbole.com/72508/

swift,apple 编程语言的新生儿,就是编程语言好学吗基于objective-c的另一个抽象层,web开发人员因此可以用更合适他们风格来写代码但是当程序运行时,swift还是 将其编译成旧风格的c语言代码很多语言都是这样–仅仅是为了适应开发者的风格另一个例子是coffeescript,它是另一种风格的 javascript,但是当计算机编译运行程序时,还是将coffeescript代码转换成javascript(swift和objective-c的不同之处)

1

编程语言是由一些人为另外一些人创造的因此,它们承载着创造者的文化印记,有些文化印记不为其他群体的工程师们喜爱,因此他们转而创造出了自己的版本这在计算机科学历史中无数次上演,导致产生了许多流行语言的编程语言是什么方言最明显例子就是首个阿拉伯语编程语言去年有篇关于ramsey nasser的文章,他创造了第一个表情文字编程语言:

苹果公司推出了一个新的 mac/ios 应用开发语言——swift以下是一个门外汉对此的理解

创建这样的应用实际上代价是很高的:你耗费大量的计算力和带宽来将分发“作为服务的软件”,也就是“运行于云端”运行这些云要耗费大量的金钱,尤其是用于冷却服务器的空调因此最近一群天才聚集到一起创造了一个被称为node.js的开源平台,它可以大幅度地降低网页中运行应用的成本,至于原因,在此我不会有所涉及

要替换字符的话,人们无法直接将其键入到文档中,而得将一个字符先写到teco命令语言中,让其切换到编程语言开发输入模式,然后键入要替换的字符,在此期间被的文档并不会显示在屏幕上

传统上程序是运行在本地计算机上的这些程序就是你下载并安装在计算机上的那些“应用”有时,被称为“网络”的东西可以将一台计算机上的应用运行 到远程的其它计算机上这些被称为网页应用,譬如facebook.com或者twitter.com它们被称为应用程序,因为他们并不仅仅是静态的信 息页面在网页应用中,你可以做出动作,并立即看到随之产生的改变,虽然真正的facebook.com应用是运行在某处的服务器上的,而不是在你自己的 计算机上面

这是一个古老格言的另一种版本:你说的语言改变了你思考的方式有些语言有助于某些类型的思考;而有些有助于其编程语言发展他类型的正如我们在四月份写下的文字所说:

这并不是说最流行的语言就独领风骚其它语言譬如erlang重新激起了人们的兴趣,因为应用正在趋向于运行在云端实际上,正是这款并不怎么流行的语言 erlang给whatsapp提供了强劲的动力

[someinstance dosomethingwithobject:a andanotherparam:b];

另一个来自于麻省理工的工程师,在访问帕罗奥多(斯坦福大学所在地)时看到了这项发明,回到剑桥市(麻省理工所在地)之后决定自己重做一个改进版他的同行们最后开始为这种新的接口编写“宏”–重用部分代码来节省时间当他们将这些宏规范化到系统中之后,他们将其称为 emacs,“e编程语言特性diting macros”的缩写

i would love to read a somewhat but not extremely technical article on this question: why are we still seeing new programming languages?

















































































北京白癜风医院咨询
转载请注明原文网址:http://www.gzdatangtv.com/cksc/139.html
------分隔线----------------------------