生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

专访 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:002414
用户头像

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

关注

评论

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

行业分析| 智慧消防对讲

anyRTC开发者

人工智能 监控 消防 调度 快对讲

京东二面:MySQL 主从延迟,读写分离 7 种解决方案

钟奕礼

Java 程序员 java面试 java编程

新力量,新希望|明道云伙伴大会2022秋圆满落幕

明道云

新版阿里神级“高并发”教程《基础+实战+源码+面试+架构》

钟奕礼

Java java面试 java编程 程序员、

PID和TID的区别

源字节1号

APP开发 低代码开发 小程序开发 网站开发

【iOS逆向与安全】frida-trace命令大全

小陈

iOS逆向 ios安全 Frida ios 开发

“天翼云杯”厦门软件开发大赛开赛 为开发者提供“沃土”

Geek_2d6073

当Kubernetes遇见Macvlan——网络互通

陆云

鲲鹏开发者创享日杭州站:你想知道的所有精彩都在这里了

Geek_2d6073

双机热备与集群的区别分析-行云管家

行云管家

高可用 双机热备 双机

嘉为科技彭一宽:组织度量,先做造钟人,再做报时人

嘉为蓝鲸

DevOps 度量

源自双11混部实战,Koordinator 如何保障应用服务质量?

阿里技术

云原生 混部技术

涨薪跳槽利器!清华大佬总结的Java核心突击讲,一应俱全

钟奕礼

Java java程序员 java面试 java编程

SpringBoot邮件发送demo

@下一站

编程 email Java core 11月月更

LeetCode题解:938. 二叉搜索树的范围和,递归,JavaScript,详细注释

Lee Chen

JavaScript 算法 LeetCode

二面美团,有惊无险已拿offer,不得不说“太难了”

钟奕礼

Java 程序员 java编程 Java 面试题

JS有哪些变态语法,你知道吗?

千锋IT教育

2022年中国母婴新消费市场专题分析

易观分析

母婴 消费市场

【C语言】return 关键字

謓泽

11月月更

如何平衡客户和用户的诉求冲突?

QualityFocus

产品经理 需求 产品需求

南京等保测评公司有哪些?一共有几家?

行云管家

等保测评 等保备案 等保整改 南京等保测评

Jenkins + Docker 一键自动化部署 Spring Boot 项目

小小怪下士

Java Docker jenkins springboot

热门资讯:超大规模数字产业生态正在加快构建!

优秀

数字化转型

云计算:基于互联网的超级计算

Finovy Cloud

云计算 云渲染

DevOps制品管理——软件“工业革命”的里程碑式改革

嘉为蓝鲸

DevOps 制品管理

AI机器学习模型部署的典型策略

Baihai IDP

人工智能 AI MLOps 模型部署

一步一图带你深入理解 Linux 物理内存管理

bin的技术小屋

内存 内存管理 Linux Kenel 内核 内核源码

腾讯云大神亲码“redis深度笔记”,不讲一句废话,全是精华

钟奕礼

Java 程序员 java面试 java编程

Serverless 架构下的 AI 应用开发

阿里巴巴云原生

阿里云 Serverless 云原生

把Mybatis Generator生成的代码加上想要的注释

京东科技开发者

maven IDEA 代码注释 MyBatis标签 Generator

百度APP iOS端内存优化实践-内存管控方案

百度Geek说

android 后端 内存管理 企业号十月 PK 榜

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