网易科技讯 7月15日消息,据国外媒体报道,《连线》杂志日前撰文解析了苹果新编程语言Swift的诸多优势。文章表示,由于这门语言易于上手,吸收了编译型语言与解释型语言的长处,而且有诸多苹果产品为依托,Swift的普及速度会让其他语言望尘莫及。

以下为《连线》“苹果Swift将很快改变编程的三大理由”一文:

克里斯·拉特纳(Chris Lattner)花了一年半时间打造了一套新的编程语言。他没有向任何人提起这件事,甚至连他最亲密的朋友和同事也不知道。

他利用晚上和周末的时间进行这项工作,从2010年夏天开始一直干到第二年年末,将这门编程语言的骨架搭建完毕,然后向公司高管透露了自己的秘密。这个项目得到了高管们的重视,数名资深工程师加入了进来。18个月之后,该项目成为了公司主要关注的对象,项目团队规模扩大了不少。

拉特纳工作的公司,就是苹果。

这门语言叫做“Swift”。苹果认为这是一个更快速、更有效开发iPhone、iPad以及Mac电脑软件应用的工具。今年6月2日,苹果向公司外部的程序员发布了一个测试版本。即便是在这个时候,也就是在拉特纳首次设想这门语言4年之后,它也只是在苹果内部圈子里产生了影响。拉特纳在伊利诺伊大学香槟分校的研究生导师维克拉姆·艾德福(Vikram Adve)帮助他完善了Swift语言的基础。和其他人一样,艾德福对自己的学生花了这么长的时间打造一门新的编程语言这件事也感到吃惊。“苹果公司口风很紧,克里斯真是贯彻了这一点,”艾德福笑着说。“我知道他在一个项目上花了很多时间,仅此而已。”

通常来说,像这样面世的一款新编程语言,通常需要多年时间才能获得大规模采用——即便有苹果这种规模的科技巨头支持也不例外。谷歌在2009年推出过一门名叫“Go”的语言。虽然这门语言的设计者在业内鼎鼎有名,但它仍然没有在全球范围内成为主流。

不过Swift就是另一回事了。等到今年秋天正式发布时,它可能会以前所未见的速度很快获得程序员的青睐,甚至有可能超越Sun的Java语言,以及微软的C#语言在20世纪90年代末与21世纪初的风头。

Swift的部分优势在于,它是为普通程序员打造的。这门语言设计用来编写最简单的手机应用,而且配有一个被苹果称之为“操场”(Playground)的智能工具。该工具提供了一种相当有效的“自学”编程方式。

此外,Swift之所以可能风靡起来,还有一个更直接的理由。在今天,成千上万的开发者使用一种名叫“Objective-C”的语言,为iPhone和iPad打造应用,考虑到苹果设备的普及程度,这些程序员会一直开发此类应用。而和Objective-C相比,Swift在很多方面提供了重大的改进,这意味着庞大的苹果开发者社区肯定会在未来数月接受这种新语言。

Tiobe指数(这是一个用来衡量编程语言流行程度的指标)的编纂者、关注编程语言发展近15年的保罗·詹森(Paul Jansen)表示:“就谷歌Go来说,没有什么真正的激励因素来使用它。相比之下Swift可以提供这样的激励。”

到目前为止,即便使用的人数非常有限,在流行的编程网站GitHub上,与Swift相关的项目也超过了2400个。而且在本月,Swift在Tiobe全球编程语言热门排行榜上排名第16。谷歌Go在2009年发布时的情况与之类似,不过在之后排名便下降了很多。但就Swift来说,詹森口中的激励因素只会推高其排名。

Facebook的开发元老安德雷·亚历山德雷斯库(Andrei Alexandrescu)指出,考虑到Swift在苹果产业链中独一无二的核心地位,“只要不胡搞”肯定就不会失败。何况这门语言的学习门槛非常低。“人们会抢着学习这门新语言,因为用它变成很容易,”詹森表示。“程序员可以用Objective-C,也可以用Swift,大部分人都将转向Swift。”

不只是一门语言

拉特纳负责监督苹果所有的开发工具——正是这些工具让苹果的工程师和外部的程序员为这家公司的电脑、笔记本、智能手机与平板电脑开发软件。在艾德福的指导下,这位伊利诺伊大学香槟分校的研究生曾设计过一套名为LLVM的元编程工具。该工具是苹果软件开发主要工具Xcode的基础,后者最新版本的下载次数已经超过了1400万。简单说,LLVM是生成并运行新应用的一种方式,可以和所有编程语言配套使用。

拉特纳在2005年加入苹果。这之后苹果用LLVM重塑了开发者使用Objective-C开发应用的方式。5年后,拉特纳又把LLVM作为Swift的基础。拉特纳拒绝了媒体的采访,但在他的个人主页上有对Swift演化过程的简要介绍。不管这个长期项目多么与众不同,实际上Swift还是要与苹果现有的开发工具共同工作——虽说它提供了一种替代Objective-C的选择。

换言之,Swift不光是一门编程语言。它与开发人员打造软件所需要的所有东西都紧密地结合在一起。这里不光是指集成开发环境(IDE),也包括调试器这样的其他工具。这些工具大多被苹果开发者所熟悉。换言之,对成千上万为iPhone、iPad以及Mac电脑开发应用的程序员来说,Swift很容易上手。

还是要有充分的理由才能让程序员从Objective-C转投Swift,毕竟他们过去从未用过Swift。“我是第一个,也是唯一一个具备4年Swift编程经验的人,”拉特纳在Twitter上写到。学习这样一门语言是需要牺牲一定时间的,这通常是个大障碍。为苹果硬件开发了15年软件产品的麦克·艾什(Mike Ash)说道:“只有很少一些语言能获得足够关注,大部分语言吸引使用者的时间都很长。”艾什现在正在钻研公司的这门新语言。

好在拉特纳和苹果已经给出了充分的理由。就其本身来说,Swift和C#、Ruby、Python等编程语言比起来没有太多吸引力,但与Objective-C相比有很大的进步。后者的历史可以追溯到上世纪80年代中期,平心而论不如更现代的编程语言易用。艾什表示:“许多人因为Objective-C和它那不常见的语法放弃了。Swift的语法更标准、更常见,这有助于吸引感兴趣的人。”

对现在的程序员来说,Swift不仅更熟悉——它有“泛型”这样的设计,也就是可以重复使用的基础模组——而且还有用来避免程序员出错的工具。它能提供一种叫做“推测输入”的功能,凭借这种功能程序员就不用花费太多时间来定义所用变量的类型。艾什表示:“它可以提供很多帮助,可以更好地理解你在做什么,也能让电脑帮助你把事情想得更清楚。它能让程序员更有效率,用更短的时间完成更多的事情。”

还有就是“操场”,包括艾德福在内的很多人都认为,这是该语言中最有趣的地方。

操场之中

按照拉特纳个人主页上的说法,“操场”是要让编程“更具交互性更直观。”他解释称,“操场”在很大程度上受到了苹果设计师布雷特·维克多(Bret Victor)以及一个叫做Light Table的交互编程系统的影响。和Light Table类似,Swift的“操场”可以让用户在屏幕一侧写代码,在另一侧看到运行的效果。

在6月初苹果开发者大会上介绍Swift的时候,拉特纳演示了如何用“操场”实时修改一款游戏。简单说,该工具可以向软件中加入新代码,而不用重新编译或让整个程序重启。Light Table的创建者克里斯·格朗阁(Chris Granger)表示:“它可以把修改的东西注入到一个正在运行的进程中——放到正在运行的程序中。”

这样做不仅是让编程更容易,而且提供了一种更好的学习编程的方法——让人人都学会这种技能。“希望更直观有趣的编程工作可以吸引下一代程序员,并重新定义计算机科学的教学方式,”拉特纳写到。

Light Table做的事情和这差不多——而且可以用多种语言实现这一点,例如Python、Clojure和Javascript。但对格朗阁来说,“操场”更为实用,因为Swift为此进行了专门的优化。他说:“因为他们控制了语言——这是他们创建的语言——他们的目标就是做到这一点。他们能做那些我们用其他语言无法做到的事情。”

这也是一个立竿见影的激励因素。妨碍编程语言普及的一大因素就是程序员没有时间去学习。“操场”则具有减少学习时间的能力。按照艾什的说法,“操场”现在还有些bug,但具备了让编程更流畅的潜力。“一般来说,编程工作很耗时——要花时间看反馈——弄明白自己在做什么。但‘操场’提供的反馈是实时的,这可以吸引很多新人。”

速度

“操场”体现出了Swift的另一个优势,那就是反应迅速。它编译起来很快,这意味着从源代码到可执行应用的转变时间很短;编译后出炉的应用执行起来也很快,这意味着程序可以在手机或平板电脑上高速运行。这也是Swift与其他编程语言不同的地方。

过去,像Objective-C和C++这样的编译型语言与Python、Ruby以及PHP这样的解释型语言两者间存在区别。编译型语言在写完代码之后,必须要等待编译器将其转化为可执行的软件。不过一旦这一工作完成,可执行的软件运行的速度很快。解释型语言则可以几乎实时地测试程序,但成品的运行速度没有那么快。

Swift取长补短。这种新语言在开发和运行时不会牺牲速度。正如艾什指出的那样,Swift“既对程序员友好,也对机器友好”。他表示:“具体的运行效果如何还要再看,不过到目前为止看上去还不错。”

这一领域并非只有苹果。Facebook也在通过“Hack”语言和“D”语言做类似的尝试,谷歌则是“Go”语言,火狐浏览器的开发商Mozilla用的是“Rust”。从某些方面看,这些语言的发展都要快过Swift。Facebook已经在使用“Hack”重建自己的大型网络服务,谷歌则使用“Go”改进内部业务。

更重要的是,这些语言大多数都是开源的。这意味着它们背后的代码可以被全世界免费使用。从理论上说,它们可以更轻松地在其他公司的设备或服务上运行。Swift并不开源——至少现在还不是——而且考虑到苹果紧紧控制自己软硬件产品的历史,自然会有这家公司是否会限制该语言发展的担忧。艾什表示:“有人担心苹果会限制该语言发展的方向——也就是能否撰写跨平台的代码以及类似的事情

即便如此,Swift的普及速度恐怕也是其他语言无法企及的。艾什相信,苹果最终会将Swift开源,而且他也相信该语言会在苹果的控制之外发展壮大——因为该语言的开发者拉特纳有着很深的开源情节。“有他在掌舵,我觉得他会做出正确的选择”。在开发Swift之前,拉特纳曾打造过一个叫做“Clang”的编译程序。“Clang”就是开源的,现在被包括谷歌在内的很多公司使用。


就算Swift被苹果牢牢控制,它的影响可能也会超过近年来涌现的其他语言,而且它的普及速度可能也会快过现代历史上所有的语言。这就是拥有iPhone、iPad以及Mac电脑的优势。


的确,Swift能做的事情,其他许多软件也能做——有些甚至做得更好。Light Table甚至就有“操场”的替代品。


但Swift是独一无二的。(赵晨)

http://tech.163.com/14/0715/20/A17J8UFT000915BD.html

为什么苹果Swift语言将会迅速普及的更多相关文章

  1. HTML5实现直播间评论滚动效果的代码

    这篇文章主要介绍了HTML5实现直播间评论滚动效果的代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. 前端监听websocket消息并实时弹出(实例代码)

    这篇文章主要介绍了前端监听websocket消息并实时弹出,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. HTML5之消息通知的使用(Web Notification)

    通知可以说是web中比较常见且重要的功能,私信、在线提问、或者一些在线即时通讯工具我们总是希望第一时间知道对方有了新的反馈。本篇文章主要介绍了HTML5之消息通知的使用(Web Notification),感兴趣的小伙伴们可以参考一下

  4. HTML5中的Web Notification桌面通知功能的实现方法

    这篇文章主要介绍了HTML5中的Web Notification桌面通知功能的实现方法,需要的朋友可以参考下

  5. HTML5仿微信聊天界面、微信朋友圈实例代码

    小编最近开发一个基于html5开发的一个微信聊天前端界面,功能很全面,下面小编给大家分享实例代码,需要的朋友参考下

  6. HTML5的postMessage的使用手册

    HTML5提出了一个新的用来跨域传值的方法,即postMessage,这篇文章主要介绍了HTML5的postMessage的使用手册的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  7. ios – Testflight无法安装应用程序

    我有几个测试人员注册了testflight并连接了他们的设备……他们有不同的ios型号……但是所有这些都有同样的问题.当他们从“safari”或“testflight”应用程序本身单击应用程序的安装按钮时……达到约90%并出现错误消息…

  8. xcode找不到匹配的配置文件

    我有一个AdhociOS应用程序,它给了我“在xcode6中找不到匹配的配置文件”,我创建了一个Adhoc配置文件,下载它,双击它并在General–Identity下选择了一个团队.但我接着得到了那条消息,并尝试使用“修复问题”按钮没有帮助.在构建设置–供应配置文件–发布我有“自动”.任何人都可以帮助我,我完全迷失了……

  9. ios – 异常断点处于活动状态时,应用程序在启动时崩溃

    我刚开始继续开发一款适用于商店的传统iPad应用程序.我注意到项目中的异常断点未启用.当我启用它时,应用程序在启动时崩溃,但在输出窗口中没有给出任何信息,而在线程视图中只有相当无用的信息(见下文)我试着解决它..>将Autolayout设置为关闭.>通过编辑和重新保存故事板文件..但到目前为止没有运气.我的猜测是,故事板中的某些内容被破坏了,因为AppDelegates“确实完成了启动……”

  10. ios – 如何使用Objective C类中的多个参数调用Swift函数?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部