现在是弃Objective-C从Swift的最好时机?
Swift语言在FFT与Mandelbrot两种算法中几乎已经能够与C++的性能水平相比肩。根据Primate实验室的说法,GEMM算法性能测试结果证明,Swift编译器无法像C++编译器那样实现代码量化——而这种量化方式正是快速提升性能表现的便捷途径,并将在下个版本中正式登陆Swift。 7.减少与开源项目之间的命名冲突 一直困扰着Objective-C代码的一大问题在于,其缺乏对于命名空间的正式支持能力,而这正是C++在解决代码文件名冲突时给出的办法。当这种名称冲突状况发生在Objective-C当中时,其会表现为一项链接错误,而且应用程序将无法正常运行。解决的办法虽然已经出现,但其却有可能引发其它潜在问题。一般而言,程序员往往会利用一段由两个或者三个字母组成的前缀来区分已经编写完成的Objective-C代码——换言之,就像是在Facebook上@了我们的代码一下。 Swift语言提供隐含的命名空间,允许不同项目之间使用同样的代码文件名称,且既不会导致build故障、亦不强制要求程序员使用NNString(即Next Step,是由乔布斯在离开苹果后创建的公司)或者CGPoint(即Core Graphics)这类命名方式。最后,Swift中的这一特性使得程序员能够进一步提高生产效率,且意味着他们无需再像使用Objective-C时那样记录大量文件名称。在Swift项目中,大家可以看到由这一影响而产生的诸如Array、Dictionary以及String等简单名称,而不再像过去那样被迫使用NSArray、NSDictionary以及NSString等Objective-C缺少命名空间所造成的畸形产物。 在Swift的帮助下,命名空间基于代码文件归属的目标所存在。这意味着程序员们能够利用命名空间标识符区分类或者值。Swift中的这项变更可谓意义重大。这极大地简化了将开源项目、框架以及库整合到自有代码中的流程。该命名空间使得不同软件厂商能够创建出同样的代码文件名称,而又无需担心在将其与开源项目整合时出现命名冲突。总而言之,现在Facebook与苹果都能够使用名为FlyingCar.swift的对象伖雇佣兵,而不会导致任何错误或者build故障了。 8. Swift支持动态库 Swift当中的最大变化——但同时又没能受到足够的重视——当数从以往的静态库经历多次大版本更新(iOS 7、iOS 8以及更多后续版本)而最终迎来了动态库支持。动态库属于可执行代码片段,且能够被接入到应用程序当中。这一特性意味着,如今Swift应用程序可以随着Swift语言的不断发展随时与其最新版本相对接。 开发者需要同时提交应用程序及其对应库,而二者都利用开发证书进行了数字签名,从而确保其完整性(听起来美国安全局又能有所作为了)。这意味着Swift语言甚至能够以高于iOS的速度得到更新,而这也正是现代编程语言的一项重要要求。指向库的所有变更都能够被包含在App Store当中应用程序的最新更新包内,而且整个过程的实现可谓非常简单。 直到Swift与iOS 8面世之前,iOS系统一直无法支持动态库机制——然而在桌面端,Mac早就已经开始对动态库提供支持。动态库存在于应用程序执行文件外部,但却会在用户从App Store获取应用程序时以绑定方式被一同下载。由于这部分内容会被载入到内存当中,因此其降低了应用程序的初始大小,而且这些外部代码只会在被使用时才得到接入。 在Apple Watch平台之上,这种在移动应用程序或者嵌入式应用当中实现延后载入的能力可以提高呈现在用户使用过程中的性能表现。而这正是iOS生态系统的一大独特之处,即使用体验更为灵敏快捷。苹果公司一直专注于让应用程序在运行过程中仅仅载入所需的资产与资源,而如今经过编译的接入代码也被纳入了这一范畴。这种运行过程中即时载入的方式能够降低应用程序的初始等待时间,并保证其直到需要被显示在屏幕上时才真正被载入。 动态库支持能力的出现令Swift成为一款能够以前所未有的速度实现变更与改进的编程语言。用户不必再等等iOS的版本更新,即可即时享受到苹果在Swift当中添加的任何性能提升或者可靠性改善效果。 9. Swift Playgrounds鼓励程序员采取交互式编码方式 Swift全新引入的Playgrounds正是经验丰富的开发人员们的最大福音。Playgrounds的诞生受到了苹果公司前任员工Brett Victor的启发。Playgrounds能够帮助程序员实时测试一种新算法或者图形例程——例如包含五到二十行代码——而且无需创建出整套iPhone应用程序。 苹果公司还为Playgrounds添加了内联代码执行能力,从而帮助程序员在创建一条代码片段或者编写一种算法的同时,从开发环境处获得效果反馈。这一反馈循环能够大大提高代码的编写效率,因为从传统角度讲,程序员需要用想法的方式来估计当前代码的运行效果——而有了Playgrounds,一直皆以可视化方式进行。编程是一种迭代式过程,而其中任何可以减少或者用于补充创建流程的机制都能让程序员们更具生产效率,并把他们的精力解放出来用于处理更为重要的问题——而非专注于解决传统编译器强加给程序员的那些恼人的细节调整工作。 备注:根据我个人在教授新人程序员时的感受,Playgrounds的实际效果对于刚入门的新手而言其实不像经验丰富的老鸟们那么突出。单纯在Swift Playgrounds当中显示出某条变量的运行效果并不能帮助新人们理解这部分代码到底是需要浮点变量还是整数变量——是的,如果打算开发一款能够记住用户上一次Facebook新闻内容访问位置的应用,这种变量类型的需求将非常显著。对新手们来说,关于“为什么”的问题只能在实现运行中的iPhone应用里找到答案——而不是Playgrounds上的片段运行效果。 10. Swift代表着我们能够参与并对其产生影响的未来 Objective-C在相当长的一段时间里仍将继续存在,但其已经不会再迎来任何重大改变,而这完全是因为Swift的出台。Swift中的一部分功能可能会被迁移到Objective-C当中,但Objective-C脱胎于C语言的血统就注定了它也只能吸收这么一丁点新鲜血液。 Swift语言则给开发社区带来了一种直接的途径,允许我们每位参与者对其作出影响,并利用最终成果创建应用程序、嵌入式系统(如果苹果未来发布嵌入式框架许可并向第三方提供芯片架构授权的话)以及像Apple Watch这样的设备。 苹果公司专注于提供最出色的消费者使用体验,并正在着手构建那些真正值得认真关注的功能特性。随着Swift 1.2版本在Xcode 6.3中的发布,苹果方面已经修正了苹果bug报告所收集到的数千个已知bug。负责支持Swift发展与演进的技术团队对该语言的命运非常关注,他们期待着观察Swift如何实现更出色的支持效果、从而帮助开发社区打造出优秀的应用程序及系统成果。 Swift:更加平易近人且功能更为齐备的语言选项 前面提到的一系列变更让Swift得以凌驾于Objective-C之上,同时彻底摆脱了后者作为衍生型语言所残留的大量固症顽疾。苹果公司并不会放弃Cocoa,因为其正是创建出苹果产品特殊使用体验的核心API及代码库。相反,他们会推出功能齐全的校验机制,并使Cocoa能够轻松与其它可以支持Force Touch或者Taptic Feedback(即力度感应与力反馈)等功能的新型API实现交互。 过去的许多传统设定从设计思路上看,完全是为了保障编译器设计方案的易用性。Swift则将注意力集中在了摒弃传统编码实践当中那些容易令人神经紧张的糟粕,从而帮助应用程序开发人员更轻松地完成工作。随着现代编译器方案的不断改进,我们将能够利用更少代码表达出更多信息。 有了Swift语言,程序员们需要维护的代码文件只相当于原先的一半、不必以手动方式进行代码同步、产生标点错误的可能性也变得更低——这将保证他们将更多时间花在真正具有意义的高质量代码编写上。在Swift当中,代码现在能够实现自我记录并提供更多可选类型:编译时安全机制会返回某个值或者无值,这恰恰是异步操作、网络故障、无效用户输入内容或者数据验证错误等多发问题的根源。在Swift当中,ARC在C语言式过程代码与采用苹果Cocoa框架的面向对象代码之间得到了统一。 开发人员会发现,他们在Swift中需要编写的代码量更少,而且能够借助各类现代语言特性支持自己让代码行内容变得更为可靠。Swift自身在不断演变的同时,将始终保证苹果生态系统站在编程发展潮流的前沿,而这都要归功于iOS与Swift当中提供的动态库支持能力。与家庭自动化、设备以及社交服务相集成的开源项目、第三方SDK以及框架等都将更轻松地实现对接,而无需忍受由此带来的额外构建时间。Swift在一部分算法测试中几乎拥有可以与C++相媲美的速度表现,而最新发布的Xcode 6.3与Swift 1.2版本则标志着苹果将进一步推动这一性能优化步伐。 而且如今有了Playgrounds的加盟,Swift能够以一种全新方式为程序员提供可视性反馈信息,从而帮助我们利用内联数据可视化机制实现算法开发。由于反馈循环更短且提供图形化描述,迭代编码过程也要比原先更为简便。 最后让我们进行一番总结:Swift是一款平易近人且功能齐备的编程语言,不仅允许开发人员利用它构建应用程序、同时也将发展目标指向了未来多年内将陆续出现的Apple Watch等新型低功耗嵌入式系统平台。 想学Swift语言?可查看:Swift语言教程 (编辑:网站开发网_安阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |