@pockry
2016-03-28T09:23:01.000000Z
字数 4075
阅读 1479
移动
Swift
今年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不会离开,能够用在任何地方,所以且让我们期待这一天的到来。