写点什么

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

  • 2016-03-28
  • 本文字数:3745 字

    阅读完需:约 12 分钟

今年 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 不会离开,能够用在任何地方,所以且让我们期待这一天的到来。

2016-03-28 19:002508
用户头像

发布了 164 篇内容, 共 107.3 次阅读, 收获喜欢 392 次。

关注

评论

发布
暂无评论
发现更多内容

如何获取所有安装的应用程序信息

Changing Lin

11月日更

Apache APISIX 扩展指南

API7.ai 技术团队

Apache 插件 API网关 Apache APISIX

如何用WebIDE打开并运行CRM Fiori应用

汪子熙

Cloud SAP 11月日更

初识Java反射概念和使用

CRMEB

JavaIO流核心模块与基本原理

Java nio IO流 字符流 字节流

行云管家荣登36kr企服点评云计算软件排行榜NO.1

行云管家

云计算 软件 排行榜 IT运维

原来我才是内卷王,闭关3个月肝完Java 7大核心知识,成功斩获字节58万Offer。

Java高级开发

字节跳动 java; 字节跳动面经

让脂肪起内讧?从内部全面瓦解脂肪

脑极体

百度人脸活体检测系统通过信通院“护脸计划”首批优秀级安全防护能力评估

百度开发者中心

安全 人脸识别 百度安全

白码低代码/无代码开发平台功能及作用

低代码小观

低代码 开发工具 开发平台 无代码 企业服务

11.11上云嘉年华,华为云数据库助力客户备战业务高峰

华为云数据库小助手

GaussDB GaussDB(for openGauss) GaussDB ( for Redis ) 华为云数据库

低代码是什么意思?

低代码小观

程序员 低代码 开发工具 开发平台 企业开发系统

个人信息保护法生效,企业数据安全合规正当时

行云管家

信息安全 数据安全 企业安全 网络保护

恒源云(GPUSHARE)_Child Tuning: 反向传播版的Dropout

恒源云

深度学习

极光笔记丨Spark SQL 在极光的建设实践

极光JIGUANG

大数据 spark 计算引擎

ABAP和Java的destination和JNDI

汪子熙

SAP JNDI hana 11月日更

什么是DISA STIG?概述+STIG安全

麦禾测试

推动产业创新,腾讯的底层逻辑是什么?

ToB行业头条

内在可解释模型之RuleFit

索信达控股

机器学习 算法 模型

一文,动态规划入门

bigsai

算法 动态规划

“神算子”上线!EasyDL时序预测模型零门槛轻松上手

百度开发者中心

百度飞桨

入职字节跳动那一天,我哭了(蘑菇街被裁,奋战7个月拿下offer)

Java MySQL redis 程序员 算法

springboot集成阿里云短信

小鲍侃java

11月日更

《Linux一学就会》:第二章:Linux基本命令操作和文件管理

侠盗安全

Linux 运维 linux运维 云计算架构师

真香!180页100+题15W+字解析的《Java高级面试指南》,果断收下

Java 程序员 架构 分布式 算法

墨天轮国产数据库沙龙 | 黄新著:金仓数据库全生命周期管控

墨天轮

国产数据库 KingBase 人大金仓

为什么那么多人在用WGCLOUD

王逅逅

zabbix 监控系统 linux运维 运维系统

技术干货|开源项目-FlyFish使用攻略

云智慧AIOps社区

开源 大前端 低代码 数据可视化 大屏

腾讯安全李滨:腾讯云数据安全与隐私保护探索与实践

腾讯安全云鼎实验室

数据安全 云安全

业务数据清洗,落地实现方案

数据 数据清洗 数据管理 数据服务 业务数据

300行ABAP代码实现一个最简单的区块链原型

汪子熙

区块链 SAP abap 11月日更

专访Chris与Greg:国外iOS大牛的分享经验,以及如何看待Swift?_移动_徐川_InfoQ精选文章