苹果开发语言swiftSwift语言的前途会怎样

从Go、Swift出发:语言的选择需谨慎
无论是开源的Go,还是闭源的Swift,新的语言总是利弊一体。不过可以确定的是,新的语言给予程序员一些有用的支撑点。而对于开发者而言,不管你成长多少,你都会受制于你使用的根源语言,所以选择需谨慎。
Google于2009年第一次提出了Go的构思,Facebook在去年春天引入了Hack,随后不久Apple也发布了其Swift语言。在战争中,胜利者写历史书;在科技中,赢的公司都在写编程语言。互联是建立在开发标准和代码之上,但是社交网络和云计算领域受企业巨头控制,并且它们开始把自己独一无二的印记烙在数字科技上——这是必然的,就像征服者威廉和他的诺曼人一样,大量新的词汇加入到英语中。他带来许多新事物,如陪审制度,这些都影响着当地的法律和语言的方式。可以确定的是,新的语言给予程序员一些有用的支撑点。Google Go语言的构建简化了并发运行代码的工作,由于存在并行编程模式,因此这一语言也被设计用来解决多处理器的任务。对于流行的Web脚本语言,像PHP和JavaScript,Apple的Swift语言提供给iPhone程序员一些简洁性和灵活性。每个语言都有它自己的标志:Swift是一只风格化的鸟,Go语言则是一只拗脚的地鼠。Ken Thompson、 Rob Pike 和Robert Griesemer是Google的三位编码大师,于2009年半开玩笑的提出了Go的构思。像C++和Java这些广泛使用的编程语言是迟钝的,尤其是面对Google那种大规模的项目部署时。每次添加或改变一些东西时候,你都需要等待编译器将代码转换为机器可读的二进制版本。Rob Pike说:“这个等待过程要45分钟,我认为这是痛苦的。当需要等待那么长时间时,你有很多时间可以考虑,你需要怎么做可以更好。”设计编程语言在于权衡——对于程序员容易,对于机器最适合创建运行快的代码要求程序员付出更多的努力。人们编写运行迅速的代码需要花费多少时间和精力呢?另一个主要权衡在于直接访问机器时语言提供的内存数量。不仅在这里,在其它地方也一样,语言发明者必须选择:知道他们可能会搞砸时,你为程序员提供多少自由?你为他们提供多少措施来缓解他们的失误?语言设计的任务是庄严的、正式的、宏伟的、充满了难题和矛盾。这里没有正确的答案,只有不同的选择,以适应不断变化的硬件、多变的用户和挑剔的程序员。Go语言的创造者有足够的经验去做这些选择,Ken Thompson创建了Unix,他和他的同伴Pike(贝尔实验室老将)共同设计了字符编码的风格,被称为UTF-8,现如今大多数Web会使用。所以他们知道小的决策也会有巨大的影响。现在增加的每一条规则,可能就意味着在未来极多的按键需要程序员去操作。每一条规则的遗漏可能意味着无数的崩溃。例如,编程语言通常使用分号来分隔语句,使用括号将相关语句组织在一起。典型的如“Hello,World”C语言程序:main()
printf(“hello world”);
}Go的创造者认为括号是至关重要的。有些语言(尤其是Python)把这放到了一边,允许程序员使用缩进(空格)或“隐形的字符”来告诉人和机器代码的位置。Go团队认为这是一个“深刻的错误”,括号意味着程序员可以明确不含糊的告诉计算机如何在很大一块区域组合代码。在一次与Sergey Brin会面上,Google的创始人提出Go的设计人员使用方括号,而不是花括号,节约开发者无数趟使用“Shift”键。在2009年12月份,Go决定停止要求程序员以分号结束语句。分号用于解析器——把项目分解成块(相关代码组成一块)的幕后工具,目前的FAQ解释道:“我们想尽可能的消除它,从此当你递送你代码到解析器的时候,机器将注入分号。”Go清除分号减轻了程序员的眼睛疲劳,但是程序员需要更严格的部署花括号,否则分号会注入到错误的地方。这些选择并不是没有争议的,一个批评家在Pike的讲座上抱怨道:“他们通过冗余的花括号破坏了语言。”语言也可以被设计的很容易,仅仅使用空格行使花括号的角色来阻断代码的不同部分。Google的Andrew Gerrand 回应道:“每天都有一定规模不可思议的倒霉事发生。意思是有人会偷偷的把一些看不见的符号放入代码库中,导致一个微妙的Bug。这在Google的Python程序中已经发生了不止一次。”然而对于那些在软件论坛争论细微差别的程序员来讲,“任性的”语法也会使他们“醉了”。和我们所说的语言不同,程序员称之为自然语言。编程语言是为特别目的和用途精心编制的。Go,正如Pike解释的那样,它是由Google设计的用来解决Google问题。Google存在大的问题......我们需要一种语言,可以让我们更容易的完成我们的工作——编写服务软件。Google在云服务中运行它自己的全球性超级计算机,这种计算恰恰使Go能够得到最佳化的使用。但是Google并没有从销售软件中获得一分钱。并且Go已经是一种免费的、开源的项目,这使得它迅速的进入了其他装备的技术库。Redmonk咨询公司的一名分析师说:“它成为云基础设施的新兴语言。”Go已经逐渐的流行起来。例如,Dropbox已经从Python转移了大部分的后端代码到Go。Automattic,一家运营的公司,也使用了Go,虽然WordPress本身一直使用PHP脚本语言。Automattic开发者Demitrious Kelly说:“这些天有十几个新的框架和方法摆在那,你必须要问自己,它比我们拥有的要好吗?但是这本身就是一个复杂的问题,要好到什么程度?它可以让我们做到什么是我们以前做不到的事情?值得吗?”Kelly称,在众多测试当中Go的表现不错,部分原因是该语言比较小,他说:“Go语言很容易在一个星期内就上手。”鉴于Go的设计主要是针对Google特定的问题,语法的选择,即分号和花括号。这个问题并不那么简单,需要追求细节,还要有热情。愿意无视传统的编程给这个世界带来新的语言。可能最终推动语言的采用的就是程序员认真注意日常的编码——程序员称之为“痛点”Swift的起源每个编程政权都有这样的痛点,但是迅速崛起的iOS给了开发者多于常规的份额。直到今年夏天Swift语言的出现为止,如果你想为iOS写一个程序,你必须使用Objective C语言。在80年代,Steve Jobs就已经采用了Objective C,并且当Steve Jobs重返Apple之后,该语言逐渐成为Mac OSX的主力工具。现在开发者说一个语言也就透露了他的年纪。编写Mac操作系统老将Andy Hertzfeld说:“当看到Swift公告的时候我非常激动。因为我一直鄙视Objective C,我喜欢其背后的原则,但是讨厌其语法,我从来没能够真正的享受编程。”Apple将其下一代产品、编程语言项目委托给一位名叫Chris Lattner的计算机科学家,LLVM项目的主要发起人与作者之一。LLVM 是一个开源项目,其核心库提供了与编译器相关的支持,可以在不同的平台上运行(包括Apple和Google在内,都广泛的使用它)。在2005年加入Apple后,Chris Lattner继续LLVM项目以及相关的工作,随后在大众视野里消失了几年,去年6月份,在Apple全球开发者大会上,其携带Swift出现在大家的面前。Swift旨在成为“第一款工业级质量的系统编程语言!”换句话说,Swift是有前途的,你将能够不用费力就可写出运行迅速的代码。这赢得了大批iOS开发者和旁观者的欢呼。 Hertzfeld说::“做得好,它缓解了每个人巨大的痛点。对于iOS开发者来说不去追求Swift的顶端是愚蠢的。”如果你“签约”了Swift,意味着你购买了Apple的整个领域:你需要通过Apple开发和销售你的程序;你的程序将运行在Apple机器上;如果你想在其它地方运行的话,你需要使用其它语言重新写一遍;你的命运将和Apple密不可分。Hertzfeld说:“你必须提交到这个“有围墙的花园”,所以他抵制了用Swift工作的诱惑。不过如果他们实现开源,或者对跨平台有一点点兴趣的话,我可能会接受Swift工作。”开源版本的Swift意味着开发者能够找到一种方法快速的将程序移植到不同的平台,并且这也能保证在未来,当Apple失去了Swift继续下去的兴趣,该语言还是有未来的。那些曾逗留在“有围墙的花园”外围的开发者往往非常关心这个问题。Apple对于开源并不完全过敏,虽然它似乎决心要抓住世界范围内iOS的控制权。在Swift公布不久后,LLVM项目里的开发者开始就Swift“隔绝自然”问题纠缠于Apple和Lattner,Lattner回应说:伙伴们,你的推测仅仅是——投机。我们还没有讨论过这个,因为我们有大量的工作去应对大量的反馈,并要在今秋发布1.0版本之前落实大量的事情(如访问控制)。你可以想象我们当中有很多人希望它开源,并成为LLVM的一部分,但是讨论尚未发生,并且短时间内也不会出现。Swift的出现并没有Go时间长,在任何情况下,其未来在Apple领域是安全的,如果Apple说Swift是十亿iOS设备的未来,那么它就是。就像一位波特兰独立的iOS开发者David Wheeler一样,人们会采用它,因为从长远看来,他们别无选择,同时它也有意义。Wheeler说Swift迅速的将他“拿下”了,他以为Apple将继续修补Objective C,“我想知道它现在去哪了?”Wheeler说。语言本能大型计算机时代的主流语言有相似的起源:来自IBM的FORTRAN,以及COBOL在很大程度上是基于Grace Hopper的Flow-matic,而这个是为Remington Rand公司的Unicac创建的。在1990年,Sun创建了Java,2000年 Microsoft创建了C#。事实上,大多数的语言是大型机构、企业或学校的产物。Hertzfeld说:“创建一种新的编程语言需要花费大量的资源。这是一个长达十年的项目去让新的语言完全用工具加工、建立和使用,小公司做不到这点。”尽管有困难,但是悲哀的是自1960年以来,计算机行业里有太多的语言存在重复的部分。今天的悲哀是无用的,程序员不太可能停止设计新的语言,或者同意去分享,因为如早期开发者Alex Payne说的那样:没有激励,语言的历史充斥着标准化的努力。这是非常错误的,浪费了大量的时间,却没有产出一个让任何人都满意的结果。这么说并不意味着忽视Facebook开发的新语言Hack,尽管Hack是开放源代码的,但是本质上PHP语言的变体或扩展。并没有受到公司外部的人追捧。毫无疑问,Facebook希望看到变化,但是它并不是社交网络积极推动的东西。这些天对于Facebook的Hack的反应就是“观望”。开发者指出,每一个新的语言开始作为一个摆脱不掉的种子存在于个人或小组的大脑中,这一直困扰着我。我们可以做的更高。无论如何,需要有耐心和努力去学习一个新的语言;开发者要仔细选择。Payne说:“当选用一个新的语言时,我会跟随其他人的东西,因为这些人和你一样依赖于图书馆和文档,我想你希望知道你是否进入了一个正确的‘小镇’。”有一点我们可以有信心的说,新语言是好的,它们简化了程序员的生活;简化了编程的工艺;它们融入了新的有前途的思想;它们赢得了包括公司内外部开发者的尊重。因为这些原因,霸权主义可能是一个错误的历史对照来制造新编程语言潮流。相反,我们讨论的这些更像是称为软实力的外交政策类型:Go和Swift以特定方式体现它们公司的精髓。服务器VS个人设备;开放Web VS应用商店;一个跨平台的世界VS一个公司。所有区分编程语言的分歧——编译或解释?静态VS动态变量类型?内存管理/垃圾回收?在今天这些可能都是很重要的。换句话说,任何人担心企业发展编程语言的真正原因可能不是“OMG,他们想要接管世界!”相反,他们担心的原因是不管他们成长的多大,他们总会受到根源语言的约束。关于编程语言,一旦它们占领程序员的“头脑”,那么你永远不会知道它们最终会去哪里。在80年代创造Objective C的面向对象编程爱好者,他们可能不知道该语言在25年以后会变成一个巨大的全球生态系统移动设备所必要的编程语言。当Sun于1995年推出Java时,每个人都认为它将是一个用于构建浏览器小程序的好工具,然而它的命运走向了服务器端。同时发布的Javascript被广泛的遗忘,在今天却让很多Web“移动”。对于开发者来说,选择一个语言就像选择一个国家的国籍,你不仅仅购买语法和语义,你也购买了经济和文化,以及你怎样获得生计和力量的规则。就像他们常说的:为了避免一个“死”语言控制了世界,购买需要谨慎。&原文链接:
本文为CSDN编译整理,未经允许不得转载,如需转载请联系market#csdn.net(#换成@)
CODE官方微信
扫描二维码关注
微信号:CSDN_CODE1134人阅读
D语言是被设计用来取代C/C++进行系统级开发的语言,由著名的C/C++编译器大牛Walter Bright设计和实现。D语言借鉴了C、C++、Java和C#等静态类型语言以及LISP、Python和Ruby等动态类型语言的优点,具有一系列非常吸引人的特性:它具有C/C++语言的进行底层开发的能力(能够直接嵌入汇编),又具有大量Java和C#的开发特性(比如自动垃圾回收,delegate等),还可以进行函数式编程,同时在语言级别支持一些数据结构(比如哈希字典,复数和元组等),软件工程方面的契约编程和单元测试等也引入其中。
这种种特性让D语言看起来非常吸引人,仿佛看到了系统开发的救世主,很多厌烦了C++和Java等的程序员投入到它的社区中,创立了很多相关的项目,主要是把C/C++的库移植到D语言中来,也有人进行正式的项目开发。
D语言的是由Walter Bright一个人设计和实现的,它的编译器DMD只开放了前端部分的源代码,可能是因为后端部分是他认为最后技术含量的部分,毕竟是从十几年的C/C++编辑器开发中积累起来的。D语言规范和DMD实现是典型的个人项目,一条单一的开发主线,版本好不停往上涨,变化频繁。他在2007年年初的时候发布了1.0版,本以为会是一个里程碑似的版本,给D语言的发展注入新的活力。可在1.0发布之后又在快速更新,现在已经更新到1.013版,从更新日志来看,语言本身的变化依然非常频繁,甚至关键字和操作符的变化都很快。
由于D语言本身和DMD编译器的过于不稳定,让一些热心的D语言开发者很郁闷,为了解决某个Bug而跟新编译器后,却使得原本在1.0下能够编译通过的代码在新版本的DMD下不能编译。3月11日,D语言的长期用户Chris Miller不得不再次在D语言的新闻组中发言要求DMD和D语言规范增加分支(DMD needs branches),以获得一个相对稳定的D语言版本,引来大水滔天,几乎所有人都支持这个请求。可Walter这个老顽固却死活不开窍,坚持使用他传统的C/C++项目开发方式,以为只要每次发布前都保证通过所有测试用例可以保证版本的向前兼容,甚至使用了-v1参数来获得一个相对稳定的1.0版本支持,其事实上效果相当差,还会给代码维护带来很大问题。为了让他明白创建分支的好处,很多人跳出来动之以情晓之以理,而他总是抱着解决某几个Bug就能解决稳定性的思路来回答。无奈决定权掌握在他一个人手里,大伙只能干着急,甚至有人提出了要单立门户的想法,可是没有后端部分的源代码,同时还要受到版权的限制,只能放弃。
Walter Bright是编译器的高手,这一点毋庸置疑,可他单枪匹马想独自一人创立一个被广泛使用的语言,还是相当难的,尤其是现在这种半开放源码方式和一根筋的不合作作风,要想D语言盛行几乎不可能。回想一下当前一些非常成功的项目,比如Linux和Python等,虽然当初只是一个人的创意,后来的发展也主要由创始人来把握方向,但它们在已开始就是一种完全开放的姿态,很快的吸引到大量的志同道合之式来合作开发,形成庞大的社区,最后走向了成功。
D语言本是非常有前途的,C/C++和Java等的众多弊病注定了需要一个新的更好的语言来取代,可由于Walter Bright的个人因素会导致他终究只能是少部分人的玩具,难以大面积推广应用。另外,随着JIT(实时编译)等优化技术的发展,并非要将静态类型语言编译成本地可执行代码才能够获得足够高的执行效率,动态语言同样可以用来进行对性能要求较高的系统开发,就更没有D语言的生存空间了,将是Python等动态语言的天下,非常看好和期待PyPy的进一步发展。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:102085次
积分:1540
积分:1540
排名:第11686名
原创:33篇
转载:47篇
评论:28条
(44)(33)(1)(6)(1)编程语言进化链的顶端:为什么说Swift正在颠覆整个互联网生态? | 36氪
苹果自家的编程语言Swift一经便引起了多方,一些人说Swift将会改变整个苹果的应用生态,一些人则认为这不过是一个玩具语言。因此今天我和的创始人靳岩,以及的iOS开发工程师一起聊了聊Swift对互联网的影响。有趣的是,我们三个,一个是互联网的观察者(我),我一个是互联网技术教育的从业者(靳岩),一个是iOS应用的开发者(正为避免失业而开始看Swift的卢侃),都对Swift可能带来的前景感到兴奋。
观察者暮山:
从一个旁观者的角度,我认为Swift的代表的是编程语言的基本发展方向。
纵观计算机的发展史,我们可以看到,计算机编程语言在由以机器为中心向以人为中心发展,即,从更便于机器阅读的语言发展为更便于人类编写,更接近人类自然语言。
最开始的电脑编程都是人工输入“0”和“1”的机器语言,完全以电脑为中心。后来大家觉得每天输“0”“1”效率实在太低了,便有人发明了汇编语言,用一些符合和字母来代替特定的“0”和“1”的组合。再后来,汇编语言也显得写起来太慢,如果想用汇编语言写一个较大的程序需要海量的代码。于是有人发明了C语言这门“高级语言”,让开发者本身能够更高效快速的编写代码,同时不太牺牲计算机读取代码的效率。然后C语言迅速成为了代码界的主流语言。
尽管C语言比起最初的机器语言已经好懂很多,而且需要写的代码量更少了,但依然有人想,编程语言能不能更简单,更像人话?这就出现了脚本语言,比如大家熟知的Python,Perl,以及我们的网站所用的PHP。然而脚本语言并没有像C语言一样基本替代了汇编语言,这是为什么呢?
最简单的原因便是,脚本语言运行效率较低。电脑并不理解脚本语言,因此,用脚本语言写的程序会被转化为机器语言,从而让计算机执行。然而问题是,这就好像我说中文,你说英语,我们之间隔了一个翻译,翻译给机器后总是会产生词不达意的情况,因此许多本来很简单的运行会被拖的冗长,从而降低了运行效率。而C语言等面向机器的语言则更像是一个懂英语的人用中文说话给翻译,他了解英语思考者的思路和逻辑,并且明确的用中文中类似的表达说出来,所以C语言的运行效率更高。
而我对Swift看好的原因便是它既解决了脚本语言运行效率的问题,又继承了其简洁的语法和强大的功能。Swift语言的发明者Chris Lattner之前最大的成就便是开发了编译系统LLVM,能将高级语言转换为机器语言,也就是前文所说的“翻译”。Lattner也因为LLVM其极大的提高了包括Objective C在内的诸多高级语言的执行效率而获得了美国计算机协会颁发的“软件系统奖”。这次Lattner开发Swift相当于从高级语言到编译器做了个全套,并且他表示Swift在许多方面的运行效率都优于Objective C,而且远超的Python。
也就是说,如果Swift的运行效率真的像Lattner描述的那样,那么Swift代表的程序猿先进生产力的发展要求(提高编程效率),代表了计算机先进文化的发展方向(语法简洁,现代),代表了广大人民的根本利益(写起来爽,学起来快)。当然,前提是Swift真的像Lattner所说的那样强大。
教育者靳岩:
我认为现在大家不论怎样高度评价Swift都是低估了它会对业界带来的影响。
首先是他是一门新语言,而且关键是它是被苹果推动的,有非常好的应用场景。围绕Swift未来会出现与之相关的社区,开源代码,培训课程等...Swift将会带动一整个与之相关的生态,而里面一个非常小的部分都有很大的商机。
其次我个人也非常看好Swift,因为它是苹果对自己的一次颠覆,而它对抗的正是代码界的官僚化。举个例子,现在Java都更新到8.0,但现在大部分人用的都还是Java 1.6,为什么大家不用有更多新特性的Java 8.0呢?说白了就是大家觉得1.6已经能做许多事情,懒得去看新功能了。而Java本身也一样,一度我都觉得它要死了,结果Andorid又把它救活了。但现在Java修修补补到8.0依然还是有许多问题是没法解决的,因为本身就是架构上的过时,那为何大家还在用它?因为那些大公司都用习惯Java了,没有勇气去换一个更现代更高效的语言,而Swift则是逼着公司和开发者去适应新的语言和功能。
Swift的情形和Go(Google发布的编程语言)不一样。大家都知道Go很好,但Google从来没说要大家用Go来写Andorid的应用。这就不像苹果,推出Swift后,对Objective C的支持肯定会逐渐减弱,最后完全转到Swift,这就逼大家必须抛弃二十多年前发明的Objective C而必须用Swift。退一步,如果用Swift的效率比Objective C高,你如果不用Swift在应用市场上的反应就会比别人慢,那还是逼你用Swift。
特别是这样一来,Google最后还是只能要求大家用Go而不是Java来写Andorid的应用,这样对整个IT圈都是一件进步的事。
iOS开发者卢侃:
自从Swift推出后小伙伴们都嘲笑我这个Objective C的开发者要失业了...所以我最近一直在看Swift...
事实上,我身边的很多人都在看Swift,除了一些其他领域的coder外,也有人想从Swift作为编程学习的入门。但我觉得Swift并非一门为入门者准备的语言。
Swift参考了诸多主流脚本语言的语法,这让它在语法上非常容易,一些有经验的开发者花一两个小时看看开发指南就能上手,但开发应用和了解语法毕竟是不一样的事。举个例子,如果一个开发者本来做服务器端的人,那他可能完全不知道一款应用的开发模式(比如苹果推崇的MVC)模式,那么,尽管他对语言本身很熟悉,但和应用开发有关的一切都还是要重新学。因此,尽管Swift降低了编程语言的学习成本,但程序开发依然需要经验,所以很多人说Swift只是表面上把大家拉到了同一个起点,原本熟悉iOS的开发者还是拥有极大的优势。而对初学者来说,语言门槛之后还有许多门槛,不可能突然涌现出许多之前对编程没什么了解的开发者。
当然,Swift的特性会得到怎样的应用,能否提高iOS应用的性能等,我们可能需要在用Swift编写的应用上线后才能看到。
我看Swift去了...
(可怜的即将失业的Objective C工程师...)
当然,我们对Swift的讨论都以它是一款开发iOS端和OS X端的编程语言为前提,并非讨论各种编程语言本身的优劣。目前GitHub上已经出现了一些Swift的开源,极客学院也了Swift的开发课程,有兴趣的同学可以去查看。
36氪还会在之后继续报道和Swift有关的内容。并且,这次讨论代表了三个人从三个角度得出的观点,然而远非全部。大家可以把自己的观点发到report[交流(记得留下联系方式),也可以在本文下方留言交流:)
[36氪原创文章,作者: 甘源]
/ breaking
/ cn-startups
/ breaking
/ breaking
/ us-startups
无需注册,直接使用社交账号登录
没有帐号?
已有帐号?
右键另存为下载到本地
分享到微博
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮已有0条评论,
建议使用以上版本或、浏览器访问本站,获得更好的用户体验。}

我要回帖

更多关于 swift语言 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信