专访 Chris 与 Greg:国外 iOS 大牛的分享经验,以及如何看待 Swift?

  • 徐川

2016 年 3 月 28 日

话题:移动iOS语言 & 开发架构

今年 1 月份 Swift 大会在北京召开,这是国内第一次由社区组织的移动技术大会,大会取得了圆满成功,来自国内外的 iOS 开发大牛为大家奉献了精彩的演讲。在大会期间 InfoQ 记者采访了两位国外讲师 Chris 和 Greg,他们分享了平时是如何工作的,如何做分享,以及对 Swift 的看法。

嘉宾介绍

Chris Edihof 是一名生活在德国柏林的荷兰开发者,他是 iOS 与 Mac 开发者,同时还是 Objc.io 的创建者,组织了德国的 UIKonf 技术会议,还写了两本书:Functional Programming in Swift 和 Advanced Swift,成为了 Swift 的布道者。

Greg Heo 是一名韩裔加拿大人,自由职业的软件开发者,他同时还是 Ray Wenderlich 的作者和编辑,还编写了一些 iOS 开发的视频教程,还出席了不少的 podcast.

InfoQ:作为 iOS 开发者,如何安排一天的时间?

Greg:早起对我是一个挑战,早上起来我通常难以集中精力做事情,所以我一般先检查邮件、和别人沟通,到了下午我才开始专心写代码,一直工作到晚上,吃完晚饭后继续写代码,因为编程是我所喜爱的事情,有时候会写到很晚。当然,我也知道这样是不健康的,所以也尝试着改变。

因为我在家工作,所以基本每天都是这样,当然,有些时候也会有其它的事情插入进来,比如电话、会议等等。

Chris:我的情况有一些不一样,我早上的头脑是最清醒的,所以我一般早上来解决工作上的难题。随着时间经过,我的脑袋转得越来越慢,所以如果工作很晚的话我也会写出 Bug,最后我进入梦乡,做的也是和编程相关的梦,经常是关于那些 Bug 的。当年我写 PHP 的时候,曾经有一段时间做噩梦(笑。

我也是在家工作,因为我是独居,家里非常安静,所以我拥有很多无人打扰的思考时间,我很容易分心,如果有人打扰我的工作效率也会变慢。

因为上面这些原因,我会避免工作到很晚,并且避免为白天的工作列太多计划。

InfoQ:Objc.io 和 Ray Wenderlich 都是非常好的 iOS 学习资源,你们都是产出了不少好的学习内容,对于分享经验方面有什么诀窍?

Chris:Objc.io 的诞生完全是个意外,某次参加大会后,我和我的朋友 Florian 和 Daniel 坐在那里突发奇想,要不咱们开个博客吧。当然,我想做得和其它博客不一样,所以模仿杂志,每月出一期,每一期围绕一个主题,并且我们会雇佣专业的编辑,改善文字的可读性以及排版设计等等。Daniel 以前在苹果工作,所以他知道很多东西,Florian 和我则有很多自由时间。所以这种联合让我们可以做出一些高质量的内容出来。当我们发布了第一期 issue 后,很多人很喜欢并且催促我们出下一期。我们一开始设定了很高的标准,后面要想达到同样的标准真的是很难,不过也很有趣,因为在这过程中我学习了很多东西。当你需要表达某东西时,你必须了解其细节。我可以说,如果我写篇文章,文章最后所表现的和我需要了解的不成正比,我需要学习的要多得多。所以分享对我来说,先是学习,然后才是分享,这可能有点自私,不过最后大家都获得了好处。

Greg:2012 年开始我在 Ray Wenderlich 担任技术编辑,作者写完文章后,我会先审校一遍,然后是第二个、第三个编辑审校,最后才会发布到网站上。正因为每篇文章都经过了很多双眼睛,所以 Ray Wenderlich 上的文章质量才能保持一个很高的水准。对于分享,我的情况和 Chris 有些相似,因为如果你要做一个技术分享,你必须完全了解技术的背景、内涵以及可能遇到的各种问题,另外还要保证分享的内容完全无误,哪怕是缺少一个逗号,文章的代码可能就不能运行。在一个分享中,我所学习的要远远超过最后分享出来的内容,而且作为编辑,我有机会学习别人的思想,和聪明人进行交流,所以我很享受这个过程。刚才 Chris 提到一个词语自私,我想这也适合于我吧,因为在分享中我所获得的要远超过所分享的。

Chris:还有一点,分享也和我是独立开发者有一定的关系。如果是大公司的开发者,公司内有足够的学习资源,还有经验丰富的老人教导,学习对他并不是一件难事。但如果是独立开发者,你需要持续学习以保持自己的竞争力,而分享是一个很好的学习的办法,它迫使你去了解更多更深入的知识。甚至可以说,如果我不分享的话,我不知道如何才有动力持续学习。

InfoQ:苹果每年都会推出很多新产品和技术,特别是去年 watchOS 和 tvOS 带来了新的平台和机会,你们是如何跟随苹果的新产品的?

Greg:是的,(要做到关注所有产品)的确很难。每年苹果都会推出很多令人兴奋的产品,对我来说,Apple Watch 推出让我特别兴奋,我学习了大量的关于它的资料和视频,打算做一些开发,结果马上 tvOS 也出来了,对于这个我也非常兴奋,然而我精力有限,只能做出选择。所以我最终选择聚集在 iOS 和 watchOS 平台上。要知道现在 Swift 开源了,光是 Swift 就有一大堆的东西要关注了。我想,比起什么都会一点,我还愿意精通少数一些技术。

Chris:对我来说,情况可能不太一样,直到 iOS 7 之前我只开发 iOS Apps,但之后我转向了 Mac 开发,对于 iOS 世界里发生的事情已经不太关注了,而现在 Swift 出来,我的精力都扑在 Swift 上,对于 Mac 开发也没有以前那样关注了。对于我来说,很难同时去关注所有事情,所以,我决定去关注和做那些让我感到开心和有趣的事情,比如目前就是学习 Swift。我觉得,与其一个人去学习那么多东西,还不如大家都只关注自己感兴趣的部分,然后将它们分享出来,这样能节省大家的时间。事实上,要同时掌握那些技术是不太可能的,你最终必须要选择一些深入进去。

InfoQ:你们第一次接触 Swift 是什么感受,它比 Objective-C 好在哪里呢?

Chris:14 年我本来想去现场参加 WWDC,可惜抽签没有抽中,于是我和朋友们去波兰度假了。当时我正在山上,只有一点点的网络信号,我只能拿它刷刷 Twitter,来看 WWDC 上出现了什么,当我看到他们都在说 Swift 时候,我的感觉是 Oh My God,我立马去下载了它的电子书,当我深入了解 Swift 后,就彻底爱上了它,因为现在我们有了 FP,有更好的类型系统,它可以帮助我们编写更好的,更安全的代码,我认为它几乎在每个方面都胜过 Objective-C。

Greg:我很同意。之前很多人对 Objective-C 的观感并不好,就是因为它的语法比较奇怪,虽然我觉得没有什么,但我发现这对于很多人来说还是很重要的。而 Swift 没有这种缺点,它的语法很现代,人们会更愿意学习它。所以,我觉得 Swift 的优点之一还在于它让更多的开发者进入到 iOS 开发里来。

Chris:Swift 对于你来说更简单吗?

Greg:不能这么说,我觉得 Swift 会比 Objective-C 看上去简单,并且代码的可读性更好,而我认为这是很重要的,但实际上,它们都是 iOS 开发,难度都差不多,甚至因为 Swift 有更多的特性,有时候会更难一些,看上去简单但实际上更难,这的确是一个难解的问题。

InfoQ:对于 Swift 的开源,您认为这次苹果是否足够开放?

Greg:是的,苹果的确更开放了,这是第一次苹果将它的项目管理都放在 Github 上,开发者能够在线的关注项目的进展。之前苹果每次发布了新版的 iOS,过几个月,扔出一堆代码说,Hi,这就是我们的开源代码,但现在开发者能够看到每一个 commit 的内容,看到哪些地方的代码修改了,并且能够参与 Swift 新版特性的讨论。

Chris:拿 Webkit 来说,因为它是继承自 KHTML,所以苹果不得不开源,但 Swift,是苹果自主决定来更开放的做这件事。我觉得 Swift 团队是的确关心这门语言,也关心语言的用户,并不是所有的团队都是这样,有的只是干他们必须做的工作,而 Swift 团队的动力来自于他们的激情。而且,我还有一个印象是 Swift 团队想让 Swift 扩展到更多的地方,而不仅仅是苹果的平台,开源也能够帮助它们达到这个目的。

InfoQ:Swift 还要多久成为 iOS 开发主流,是否还需要达成某些里程碑事件?

Greg:我知道 Swift 3 的目标之一是 ABI 的兼容性,一旦达成这个目标,Swift 3 开发的应用就可以向前兼容,甚至运行在 OS X 10.10 的系统上,这对于 Swift 来说是非常重要的。另外还有并发特性,现在的移动设备上多核已经很普遍,有了并发就可以更好的利用 CPU,对于 Swift 来说也将是一个里程碑。

Chris:我相信 Swift 会很快成为 iOS 主流开发语言,如果你去看看年轻的开发者,他们不喜欢写 Objective-C 代码,并且很多新加入的 iOS 开发者,他们首先学习的也肯定是 Swift,另外对于像我这样的人来说,我已经不写 Objective-C 了,虽然有很多朋友仍然在写,但他们的数量也越来越少。对于找工作,开发者想进入那些已经开始用 Swift 开发的公司,所以对于公司来说,要想找到有才能的开发者,他们必须尽快采用新技术。对于什么时间发生,我不知道一个确切的时间,但我知道会非常快。至于里程碑,我认为 Swift 仍需改进的一点是它的编译时间,与 Objective-C 相比太慢了,如果改进之后,Objective-C 开发者再也不能用它当做拒绝 Swift 的借口了。另外也许当某个 WWDC 上的 Session 全部都是 Swift 相关的,这应该也能算做一个里程碑。

Greg:我还想到一个就是,什么时候苹果能够推出一个 Swift 独有的框架,本身用 Swift 编写,并且你只能用 Swift 来调用它,这应该也算一个巨大的里程碑事件。到了这一步,Objective-C 才真算是渐渐推出历史舞台吧,因为你想要进行新的开发,使用新的特性,你就必须用 Swift。不过目前的话,苹果还是宣传 Objective-C 不会离开,能够用在任何地方,所以且让我们期待这一天的到来。

移动iOS语言 & 开发架构