硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

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

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

关注

评论

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

一文带你了解跨境数据传输和隐私

镭速

跨境数据传输

跑AI大模型的K8s与普通K8s有什么不同?

华为云开发者联盟

人工智能 云计算 华为云 华为云开发者联盟 企业号 8 月 PK 榜

Elasticsearch ILM Shrink Action源码优化与探讨

腾讯云大数据

ES

深度解读智能媒体服务的重组和进化

阿里云CloudImagine

云计算 视频云

7 个使用生成式 AI 构建的项目

3D建模设计

生成式AI

软件测试/测试开发丨Python 内置库 正则表达式

测试人

Python 正则表达式 程序员 软件测试 自动化测试

高效构建实时数仓:探秘NineData数据复制技术

NineData

数据库 大数据 实时数仓 数据复制 迁移指南

KaiwuDB 助力能源企业实现 4 大价值提升

KaiwuDB

KaiwuDB 分布式储能

Java单元测试及常用语句 | 京东物流技术团队

京东科技开发者

Mockito 测试 单元测试 企业号 8 月 PK 榜 Java单元测试

人工智能改善生活:不同受众的定制化应用

测吧(北京)科技有限公司

Spring高手之路13——BeanFactoryPostProcessor与BeanDefinitionRegistryPostProcessor解析

砖业洋__

spring springboot BeanFactoryPostProcessor BeanDefinitionRegistry

机场数据安全三步走战略|盾见

极盾科技

数据安全

盘点那些国际知名黑客(上篇)

禅道项目管理

Kubernetes实现微服务容器化

雾岛听风(锋)

微服务 k8s 容器化

揭秘ChatGPT,如何打造自己的自定义指令 | 京东云技术团队

京东科技开发者

自定义指令 大语言模型 chatgpt app 企业号 8 月 PK 榜

点对点传输技术可实现更大的文件传输

镭速

大文件传输 点对点传输

深入MaxCompute -第十二弹 -PIVOT/UNPIVOT

阿里云大数据AI技术

大数据

开源图形驱动在OpenHarmony上的使用和落地

OpenHarmony开发者

OpenHarmony

云密一体,京东云密码资源池实力守护安全防线

京东科技开发者

云原生 网络安全 密码安全 企业号 8 月 PK 榜

快乐开源活动全面升级!提PR,赢PS5、Switch等缤纷好礼

飞桨PaddlePaddle

人工智能 百度飞桨

聊聊Http服务化改造实践

树上有只程序猿

微服务架构 HTTP Feign

2024光储充展|太原国际光储充技术装备展会

秋硕展览

展会 光伏展 储能展

【稳定性】揭秘团队快速排查问题的三字经,你学会了吗? | 京东物流技术团队

京东科技开发者

团队 线上故障 故障排查 企业号 8 月 PK 榜

软件测试 | 人工智能:优势与挑战

测吧(北京)科技有限公司

测试

浅析Java - SPI机制 | 京东云技术团队

京东科技开发者

Java 后端 spi 企业号 8 月 PK 榜

Ascend C保姆级教程:我的第一份Ascend C代码

华为云开发者联盟

人工智能 华为云 昇腾 华为云开发者联盟 企业号 8 月 PK 榜

一座玉带桥,盘古通天下

脑极体

AI

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