神刀安全网

SWIFT世界中的OBJECTIVE-C

本文授权转载,作者: ray16897188 (简书)

本篇文章翻译自: Objective-C in a Swift World

原作者: BEN SANDOFSKY

如果Swift成功了,Objective-C就会离开。它不会被遗弃,而是会去佛罗里达州享受它的退休时光。在无数个白天中运行着有百万行代码的古董级app,在无数个夜晚伴带着没人再敢去重写的OAuth库,小口的抿着玛格丽塔。直到多年以后,打开iOS 的发行说明,你会看见在仆告栏中写着Objective-C辞世了。于是它就这样的离开了我们。

iOS的交叉编译工具链(toolchain)一直支持多语言,每种语言解决不同问题。C++是为跨平台的app服务,尤其是游戏。如果你需要提高性能或是位操作(bit fiddling),就用C语言。

Apple没说过"Objective-C和Swift是分别用来针对不同问题的"。2014年WWDC的演讲中,Swift 第一次 被描述为"现代的"。 今年 则是"写的更快,更易维护"。Apple说这两种语言它都喜欢,却把最好的成年礼给了swift。

双语言环境分裂了iOS开发者社区。你的公司可以决定使用其中一种,让剩下50%的开发者苦恼,或者两种都支持,然后在 琐碎 的style guide上多花一倍的时间。

如果长远目标不是用来取代Objective-C的话,Apple也不会在Swift上投资。Apple还没做好准备这么说,因为他们知道事实有可能不是这样。他们不想重蹈Mac OS X 10.5中引入的垃圾回收器(garbage collector)在10.8中遗弃,又在10.10中移除这样尴尬的覆辙。对系统而言是更好,不过你还是和那些用了垃圾回收器然后又被迫放弃的衰人们这么说吧。

我们正处于developer advocacy(大意是有部分开发者置身于做出更利于其他开发者开发的各类平台,工具,开源软件,第三方API等等 – 译者注)的第一阶段。Apple开始说,"你应该看看Auto Layout!"之后他们收集了一年的反馈,修好了bug和使用上的不便,接着说,"你现在应该是正用着Auto Layout呢。"然后他们发布了不同尺寸的iPhone。"真的建议你用Auto Layout了,顺便再看看size classes!"哦看呐,iPad的多任务就是用size classes做的。

Swift在它的初期采用者中很成功,但是稍大的公司都是"再等等看"。如果Apple决定了正式宣布swift就是被选中的语言,这事儿必须一次成。让你的CTO看上Xamarin(一个有跨平台能力的开发平台,可以做到一次编码,iOS、Android和windows通用 – 译者注)可是一个极难的过程。"啥?iOS用两种语言?那把它写进.Net里然后全公司统一(意思是有这么简单就好了 – 译者注)!"

Swift从Python3的惨败中吸取了很多经验。在Python3发布6年之后, 68%的开发者 的项目还是用Python2.x写的。其中的一个问题是与第三方库后向兼容性,如果不支持Python3的话它们根本就用不了。

因此Swift就必须要有完美的后向兼容性,实际上这点Apple做的很棒。它是显得那样的神奇,可出现问题之后就不是了。我浪费了一个小时尝试用swift与C函数指针做互操作,最终放弃,退而求其次用了Objective-C。我做的每一个Swift 1.2的项目都需要自己写的这些Objective-C的小补丁。

时至今日,如果不先成为一个Objective-C开发者的话你是成为不了一个Swift开发者的。而在Apple正式说"用Swift吧"之前,你需要锻炼出只用Swift就能完成开发的能力。他们正在大步前进:我的函数指针挣扎了几周之后,Swift 2.0的发布就把我的这个问题解决了。

Python 3的另外一个问题是你不能去说服一个社区把现有的一切都丢弃掉,重写那些已能完美运行的代码,除非报酬极高。Python 3语言的纯度还不高。"没错,它挺酷的,但要用它我还得过来把它装载起来。"

Swift小组选取了高格调却更困难的方式。 Joe Groff说 ,"如果它确实好,我们就不需要强迫人们去使用它。"

最快实现这个的方法是让swift在开放世界的app中反复的迭代运行。但是Swift想要彻底改变现有语言环境需要的是一个没有常年反对声音的自由环境。Apple需要人们去用Swift,太多人还不行,而且这些人还得了解即将进入的这个领域。于是我们现在就处于一种"Objective-C暂时哪儿也不会去,但是你真应该试试Swift!"的中间立场。

Swift会迎来一个引爆点。当Objective-C的搬迁已经完美,开发者求着经理要swift的开发许可时,Apple会说: "你现在就应该用着Swift呢",然后推崇大家放弃Objective-C。多年以后Objective-C可能会被遗弃,但是永远也不会被移除。它依然给iOS提供性能,而且OS X依然还运行着部分Carbon(MAC系统的一种API – 译者注),即使后者被官方宣布弃用。

当我发了一条Objective-C终将离开的 twitter 时,我也开启了互联网最爱的娱乐时间:"告诉你,你错了。"我选词还是很慎重的。Objective-C的离开,不会是因为官方宣布弃用它了,而是由于它本身变得无足轻重。

如果你坚持用Objective-C,有3种事情可能会发生:

  • Swift失败了,然后消失了:漂亮!你会是一个娴熟的工程师,而且为公司节省了时间、金钱,还消除了风险。

  • 我们被卡在一个双语言的世界中:你可能会错过一些大的机遇。

  • Swift成功了:Objective-C成了下一个Cobol(一种非常古老的高阶编程语言 – 译者注)。如果你喜欢古董级的程序,在宇宙的热寂来临前你还是能保住你的饭碗的。

什么是投身于Swift的最佳时机?

2005年我在Rails上发现了Ruby。当时是非常前沿的技术,拿来做业务还不是很安全。不过我还是找到机会做了很多项目,一个比一个大。2007年我得到了自己职业上的巨大回报。2009年,我的Rails背景让我在Twitter上找到了自己的职位。

学习超前沿的技术就像给一个创业公司做投资:高风险,高回报。这就是为什么你只在认为赔钱能接受的情况下才去做天使投资的原因。同时还要把你的退休金保存共同基金里。

对Swift先持观望态度是有诸多合理原因的。 据大家说 swift的每次更新会需要我们用1到2天去做适配。也许你的代码库更加庞大,或者你不能接受更新所带来的中断。目前,完全可以理解。

如果你正管理着一家大型公司,去年应该还是"再等等看"。2015年就是你应该加速并安排它未来计划的一年了。此时就是把swift试用在非关键的,green field项目(指受之前项目约束很小的项目 – 译者注)里的恰当时机。

你不需要把一切都押在Swift上,但最好开始尝试它。

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » SWIFT世界中的OBJECTIVE-C

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址