10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

专访 ThoughtWorks 傅若愚:Swift 足够成熟了吗?

  • 2015-11-12
  • 本文字数:2038 字

    阅读完需:约 7 分钟

2016 年 1 月 10 日,第一次由国内社区主办的 iOS 开发盛会 Swift 开发者大会将在北京举行,本次大会旨在推动 Swift 语言在国内的发展,不但邀请了国外资深专家,社区的传奇人物,还邀请了拥有 Swift 实践经验的国内专家,为你在实际项目中使用 Swift 扫清障碍。

ThoughtWorks 的工程师、 SwiftyJSON 开源项目作者傅若愚将在大会上分享《越过 Objective-C 与 Swift 的鸿沟》话题,据了解,他们已经使用 Swift 开发商业应用近一年时间,InfoQ 记者对他进行了专访,探讨 Swift 是否已经足够成熟的问题。

InfoQ:请介绍一下您在 ThoughtWorks 负责什么工作?使用 Swift 多长时间了?

傅若愚:ThoughtWorks 的工作内容往往一言难尽,可以这么说:有 Coding,有 Architecting,还有 Coaching,总之各种技术相关的有趣的事情。在 ThoughtWorks,有的团队已经用了 1 年多的 Swift 了,比如我现在的这个团队,就正在使用 Swift 来为客户开发定制的 iOS 客户端产品。

InfoQ:最近苹果发布了 Swift2.1 版本,这门语言发展很快,您觉得新版本的 Swift 足够成熟了吗?

傅若愚:应该说,Swift 到达 2.0 以后,已经比较成熟和稳定了,今后大规模的语法更改不会像第一年这样频繁。然而作为 iOS 开发者,苹果的行事大家都懂,不断的变化和折腾肯定会是常态的。如何能够快速适应新的版本,迁移时尽量减少痛点,迭代时如何保持项目的稳定,这些问题依然会是 Swift 用于大型项目开发时的重点之一。

InfoQ:你们已经将 Swift 实际应用到生产项目中,能不能分享下使用 Swift 最让您想砸键盘的是什么?

傅若愚:我们用 Swift 到现在 1 年左右了,经历了 Swift 1.0,1.2 以及 2.0 的各个版本在实际项目中的使用。其中的趟过的坑有的确实是让人痛不欲生,比如编译时间的问题(我们可以通过合理拆分多个 Module,Build Pipe Line 中利用之前的 Index 来解决),XCode Crash 的问题(有条件的团队可以考虑 App Code,XCode 本身的升级也对此解决得很好),这些基本上都有解决的办法。要说真正的痛点,我认为还是在人的身上:我们的许多开发者,特别是对 Objective-C 非常资深的开发者在写 Swift 的时候往往习惯于用 Objective-C 的模式去做,非常依赖 Runtime,这样的代码在 Swift 中往往很痛苦。我曾经跟同事打趣说今后项目加人的时候,我们得要写 scala 的开发者而不是写 objc 的,当然这只是一句笑话,但确实是说明我们开发者代码思维的转变非常重要。

InfoQ:您最喜欢 Swift 的什么特性?

傅若愚:一个是 Swift 的类型系统很亮,当前较新的静态类型语言基本都借鉴了这些类似 Haskell 的特性,还有自动的加里化(currying),模式匹配等等,这方面倒无需多言。另一个就是 Swift2.0 引入的 Protocol Extension 了,Protocol Extension 的引入一定程度上让‘面向协议编程’不再是一句空话,或将概念停留在某些设计模式的层面,而可能是实实在在的引发一些编程范式层面的变化,结合 Swift 本身非常 Haskell Style 的类型系统,开发者们可以更多地使用一些全新的视点去设计代码。

InfoQ:从实际的编程体验来看,相对于 Objective-C,Swift 是否提高了生产力和编程效率?

傅若愚:Swift 带来的生产力提高可以说是毋庸置疑的,但 Objective-C 并不会那么快消亡,就像函数式编程并不见得会取代面向对象编程。Swift 的 Code 会更加轻盈,许多 Haskell 或 F#中的理念可以轻轻松松地 Port 过来直接用。而 Objective-C 则更偏底层,更加厚重,传承自 SmallTalk 的消息转发机制和其 Runtime 给了它非常强大的力量,而往往能设计出令人惊异的代码。

InfoQ:目前关于 Swift 有一些新的概念出现,比如面向协议编程,您对这些新概念怎么看,Swift 是否会出现新的设计模式?

傅若愚:Swift 中这些新概念带来的变化,往往并不仅仅发生在设计模式的层面,而是在编程范式的层面。比如现在火热的 RFP(Reactive Functional Programming) 的实现,在 Swift 社区中竟然出现了 RAC 与 RxSwift 双雄并立的局面。同时我们常常发现一些以前通过 OO 中的设计模式搞定的功能,现在或许更加适合使用 Monadic Programming 或者 Parser Combinator 等函数式的设计模式来做。

InfoQ:您自己也写了一个 Swift 开源库,您认为目前还有哪些关键地方缺少成熟的用 Swift 编写的开源库?

傅若愚:目前 GitHub 上面纯粹用 Swift 写的开源库已经越来越多了,然而毕竟还有些东西是天然不适合单纯用 Swift 写一个 Objective-C 的替代版本的,举两个例子,一个 Mapper,另一个是测试时的 Mock 框架,这些东西往往会需要大量地利用 Runtime,并且往往立身于面向对象的编程范式内,那么我们与其去写一个纯粹 Swift 实现,倒还不如直接用以前 Objective-C 的库。

InfoQ:您对 Swift 的未来有什么看法?您认为 Swift 还有几年将成为 iOS 开发主流语言?

傅若愚:我一直觉得,在较长一段时间内,Swift 都会和 Objective-C 并存,再过几年后 Swift 很可能会更加主流,因为绝大部分 App 用 Swift 就已经够了,但 Objective-C 也会一直与我们相伴,去解决一些 Swift 不那么适合的场景。

2015-11-12 19:364257
用户头像

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

关注

评论

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

探秘YashanDB的数据安全机制,保障企业信息安全

数据库砖家

探讨YashanDB数据模型设计的最佳实践

数据库砖家

自控学习历程系列 自控维护经验总结(5)

万里无云万里天

工厂运维

自控学习历程系列 自控维护经验总结(8)

万里无云万里天

工厂运维

大语言模型中因果世界模型的零样本物理推理

qife122

机器学习 大语言模型

数据分析中的YashanDB数据库应用探讨

数据库砖家

探索YashanDB的分布式数据库技术

数据库砖家

探索YashanDB数据库的最佳实践及应用框架

数据库砖家

探讨YashanDB数据库的未来发展方向

数据库砖家

AI语音最强王者Speech 2.5的攀登故事,藏着万亿市场的密码

脑极体

AI

基于深度学习的多声源定位技术解析

qife122

信号处理 声源定位

深入剖析YashanDB数据库存储优化策略

数据库砖家

探索YashanDB数据库的API与开发工具

数据库砖家

探索YashanDB数据库的革命性数据管理功能

数据库砖家

自控学习历程系列 自控维护经验总结(7)

万里无云万里天

工厂运维

jank实现C++无缝互操作的技术探索

qife122

c++ 内存管理

探秘YashanDB的内存管理与资源优化技术

数据库砖家

深入浅出YashanDB数据库事务管理与异步处理技术

数据库砖家

随着大数据发展,YashanDB数据库的演变

数据库砖家

探索YashanDB数据库的扩展性与灵活性特性

数据库砖家

提高YashanDB数据库查询效率的关键技术

数据库砖家

自控学习历程系列 自控维护经验总结(3)

万里无云万里天

工厂运维

自控学习历程系列 自控维护经验总结(4)

万里无云万里天

工厂运维

企业级远程协助与安全防护的整合实践——以腾讯 iOA 为例

申公豹

安全

提高开发速度:YashanDB数据库的开发工具

数据库砖家

自控学习历程系列 自控维护经验总结(6)

万里无云万里天

工厂运维

量子密钥分发与认证技术解析

qife122

密码学 量子通信

许多 AI 智能体评测基准并不可靠

Baihai IDP

AI 基准测试 AI Agent AI 智能体

数据隐私保护在YashanDB数据库中的实施方法

数据库砖家

探索YashanDB数据库的并发处理机制

数据库砖家

开源项目 - 基于 C++ 实现沪深交易所流式二进制协议

歆晨技术笔记

专访ThoughtWorks傅若愚:Swift足够成熟了吗?_移动_徐川_InfoQ精选文章