SWIFT世界中的OBJECTIVE-C

本篇文章翻译自: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上,但最好开始尝试它。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,595评论 4 59
  • 解决冲突 人生不如意之事十之八九,合并分支往往也不是一帆风顺的。 准备新的feature1分支,继续我们的新分支开...
    AndroidCat阅读 51评论 0 0
  • 今天朋友带了荷尔蒙霜过来,说让我体验一下,据她说目前我每天觉得很累,没有精神力气都是体内缺乏荷尔蒙,尤其像我,年过...
    NutsVicky阅读 331评论 0 0
  • 「秘密」 说不出口的话语 就永远烂在心里 要勇敢保护自己 才没人能看穿你
    肥鸽子麻麻阅读 326评论 4 9
  • 作者……瀛音 秋风 吹乱了我的规划 秋雨 淋湿了我的牵挂 我是夏 在秋天 忘记了出发...
    瀛音原创阅读 243评论 3 5