编辑:www.swiftdevelop.net快速发展社区

如何证明企业自身雄厚的财力?当耀眼的私人飞机和闪耀的总部大楼不足以解释问题时,新的编程语言开始肩负起这一“历史责任”。如今,苹果已经跟随微软(C#)、Sun(Java)和谷歌(Dart and Go)走上了同一条道路,为我们带来了Swift——,这是一种新兴的编程语言,使用类似C的语法,旨在帮助程序员轻松为MAC和iPhone开发新应用。

虽然苹果傲慢的风格怎么估计都不过分,但Swift不仅仅是一个建立在虚荣心上的计算机编程项目,它希望像英语一样主宰全球技术人员。自从NeXT进入公司以来,苹果的软件栈一直紧紧围绕着Objective-C的绝对核心,许多新手普遍抱怨它的指针、文件(两者都有。m和。h)和含有大量标点符号的语法令人头疼。

1997年苹果试图用“现代语法”更新语言,但广大用户明确拒绝放弃所谓的经典语法。然而,其他项目——,比如将Java绑定包添加到Cocoa库——,从未真正得到遵守和实现。如今,Objective-C语言已经成为鼓励开发者为苹果平台编写代码的最大障碍之一。

好消息是:Swift将是一个伟大的礼物,足以帮助任何想要摆脱Objective-C困境的开发者。已经学会了如何使用Java编译计算机科学、如何使用JavaScript创建网页以及如何使用Ruby构建网站的程序员将在Swift中获得相当亲密的熟悉。多文件和继承的过程非常流畅,代码表达中标点符号不再占优势,这显然可以看作是Swift的显著优势。此外,这种新语言的自动化功能更丰富,包括自动推断输入内容和引用计数——,旨在帮助编译器纠正程序员在开发过程中经常犯的错误。

为什么要推出Swift?

很多人可能不理解为什么苹果不直接选择一种已经在市场上有一定基础的现有语言。在Web逐渐占领世界的时代,JavaScript可以算是一个理想的解决方案,但它并不能提供对字节的所有低级访问,这显然会导致在系统程序帖子之外构建更多的接口来定义苹果应用的使用体验。无论如何,JavaScript程序员已经在使用像PhoneGap/Cordova这样的框架了。其他语言,如Python或Ruby,可以与Unix后端流畅集成,但都缺乏与系统软件深度连接的能力。最好的答案可能是充分利用巨大的研发;d苹果在可可层投入的资源,而Swift则是保护过去投入、带来现代便利功能的最佳方式。

Swfit程序的基础结构看起来非常类似于Java。内容分为类,类中填充了字符段和方法。其中,最决定性的区别是,这些方法以关键字(func)开头,返回值位于方法名之后而不是之前。这些类可以赋给结构,结构中有很多继承自原机制的面向对象代码内容;此外,属性可以通过点语法读取。

您只需要掌握一个高级路线图和一些关于声明变量语法的具体知识。在苹果发布Swift语言的几天内,Swift编写的开源软件已经开始出现在GitHub上。其中,最引人注目的项目包括内特默里编写的“Flappy Bird”的副本版本,它只使用了两个主要的Swift文件和一点点联合代码。如果你已经有了自己擅长的OS X或iOS编程方法,你肯定能很快上手Swift,一种新的表达方式。穆雷说,他只用了一天时间就完成了游戏重刻。

Swift修复了一些最受批评的Java语法。你根本不需要浪费输入操作来拼出每一个变量类型;从一开始,编译器就可以自动推断我们想要输入什么。您可以享受的一个明显优势是,编译器可以在没有大量关键字的情况下检查变量类型。如果您打算将多个变量与字符串组合在一起,Swift提供的一组简单模板可以将输入变量转换为只有三个输入的字符串。这真是一个伟大的壮举。

Swift带来了更多的改进。Scode现在提供了所谓的“游乐场”,用户用手指操作时,可以在这里输入代码,直接观看这些代码的执行效果。这种沙盒机制让开发者学习JavaScript和JavaScript API变得越来越容易。例如,谷歌通过仅提供一组“游乐场”网页,成功地为其谷歌地图应用编程接口吸引了许多开发人员的粉丝。Xcode的游乐场在效果上远远超过了谷歌的方案,因为它可以在正确的区域直接显示灰色选中部分的代码运行效果,从而帮助大家理解如何执行语言。我在使用playbround时遇到的唯一一个负面问题是,我有几次崩溃,无法成功重现。请相信,我从来没有犯过“除以0”的低级错误。这次崩溃了,不过下次重新执行就没事了。——有点奇怪。

纵观Swift带来的所有改进和提高,我发现Swift的规模有点吓人。虽然内特默里在一天之内成功使用“Flappy Bird”并不难,但语言中也有很多重要的细节是几分钟内无法掌握的。我花了很长时间试图找出根据结构传输的数据和根据类传输的数据之间的区别。理解这些差异是C语言编程的一大挑战,而对于Swift程序员来说,这个任务取决于

然困难、特别是对那些希望能让自己代码获得最佳性能表现的开发者而言更是如此。

优化工作对于某些特定代码类型来说也可能成为令人头痛的实际障碍。举例来说,字符串始终根据值进行传输,也就是说Swift会在每一次函数调用时从左到右对字符串内容进行复制。这种处理方式对于游戏这类以图形元素为基础的程序来说也许并不算什么问题,但像Web服务器与内容管理系统这样的程序从本质上讲则属于连结机制。任何打算从字符串入手的开发人员都需要在编写Swift代码的时候认真考虑这种情况。他们可能最终需要对类当中的字符串值进行打包以防止上述复制过程。

我还指定了其它一些需要深入研究的议题。举例来说,向下转换允许大家利用类型转换运算符(as)将关注对象从类转移到子类身上。这可能会导致问题,因为还有另一种添加问号的类型转换运算符(as?),如果向下转换无法成功、该运算符则会返回“零”值。有一些此类可选功能会由于存在问号或者不存在问号而彻底改变关键字的执行效果。而另一项特性,也就是子脚本,允许大家快速接入某个类并提取出一个特定值。Swift虽然带来了可观的简洁性提升,但却也大大增加了出现表达混淆的潜在可能性。

新增的playground能够在我们输入Swift代码的同时对内容进行评估。大家在左侧输入的代码内容会直接以效果形式显示在右侧区域当中。

一项重大承诺

如果有人告诉大家Swift是一种简单的语言,请绝对不要相信他。尽管对于编写“hello world”或者只有几行代码的简单应用程序来说它足够易用,但从另一个角度看,要编写出具备无数细节并存在细微差异因素的应用则需要我们花费大量时间磨炼自己的水平。熟练的程序员们会乐于将自己的技术实力以及聪明才智运用到自己的软件成果当中,但很多新手肯定会发现这类代码内容很难阅读。这绝不是一种能够轻易掌握的语言,大家千万别被它简单上手的表象给迷惑了。

关于Swift,最需要认真考虑的就是其发展前景。尽管一部分规模相对较小的新语言往往给人一种玩具般的感觉,但Swift却绝对是一项重大承诺。关于Swift开发的第一本指南教程非常优秀,这一方面是因为它拥有超过850页的浩大篇幅。Xcode下载包现在已经达到2.5GB。Swift语言并不是一种使用难度很低但只能应对轻量级开发任务的玩物——它是名符其实的一款完整软件包,设计目的在于为任何技术团队的程序员们提供足以支持重大项目的开发方案。

Swift语言当中还包含大量“钩子”及其它用于同现有Cocoa库进行协作的工具。苹果并不希望重新编写其iOS及OS X堆栈,因此Swift能够与之前的代码轻松对接。整个Swift项目的建立目的在于维持开发者对于这些堆栈的兴趣并帮助有志投向于应用程序开发的朋友能够更轻松地跨过这道门槛。与此同时,大家还可以在自己的iOS或者OS X项目当中尽可能多或者尽可能少地使用Swift代码——具体情况各位可以随性而为。

苹果并没有以强制性手段推动Swift。毫无疑问,很多保守派开发人员会继续坚持使用Objective-C。不过Swift能让原本熟悉其它语言及传统机制的程序员们快速上手这种新的开发途径,拿起Xcode这柄利器马上投入到实际生产当中。单这一项就足以成为苹果公司发展历程上的一大步,而且也很可能带来数量原超过从前的原生iOS与OS X代码。Swift并不打算接管整个世界——它更像是一份专门送给开发者们的大礼。