设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

为什么需要更多的编程语言

2014-7-2 10:57| 发布者: joejoe0332| 查看: 3705| 评论: 0|原作者: 伯乐在线|来自: 伯乐在线

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

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


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

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


  如今计算机已经普及到各个领域,我们拥有的计算机语言难道还不够用吗?最简单的答案就是:不够。只要有人想学新语言,我们就会开发新语言。这么做的原因很简单,而且能让反对机械自动化的人都可以接受。(向我们的Node.js项目中的高手Chris McClellan致敬,他和我讨论了这个话题。)


  教人编程


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


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


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


1
[someInstance doSomethingWithObject:a andAnotherParam:b];


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


  自我复制


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


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

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


  然后你得敲击ESC键来查看更改的地方,就和“保存并预览”博文的草稿一样。总之,这事让人挺痛苦的。


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


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


  抽象


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


  同样的道理,程序员总是在创建可重用的代码,因为和其他人类一样,他们很懒,不想做重复劳动。大约30年之前,产生了一项重大的开发运动,计算机程序几乎都可以用可重用部件组装而成,程序员们将这些部件成为“类”。(这和建筑、汽车或家具设计中的模块化运动相 似。)这个设计模式就是人们熟知的“面向对象编程”。NeXT,也就是乔布斯在Apple之后创立的公司,将这个创意无限的模式称为编程的未来。他们对对 “面向对象编程”兴趣十足,决定将其用来命名他们自己版本的C语言,于是Objective-C诞生了。Apple在收购NeXT之后也继承了 Objective-C,并将OS变成了Mac OS X。


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



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部