写点什么

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

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

关注

评论

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

一文读懂 Fabarta ArcGraph 图数据库丨技术解读

Fabarta

人工智能 AI 图数据库 大模型 向量数据库

MySQL 数据库表格创建、数据插入及获取插入的 ID:Python 教程

小万哥

Python 程序员 软件 后端 开发

阿里面试:看过框架源码吗?举例说明一下

王磊

Java

量子计算和量子通信技术:引领潜力无限的未来

EquatorCoco

量子通信 量子计算 量子模拟

低代码平台,业务开发的“银弹”

树上有只程序猿

软件开发 低代码平台 JNPF

智驾未来:自主创新才是真正握住了命脉

不在线第一只蜗牛

华为 智能驾驶 小鹏汽车 问界

2023 IoTDB Summit 正式“官宣”,邀您见证“从数据到洞察”的未来!

Apache IoTDB

海外IP代理使用三年的经验之谈

Geek_ccdd7f

低代码平台的探究与分析

互联网工科生

软件开发 低代码 零代码 JNPF

如何使用 NFTScan NFT API 在 zkSync 网络上开发 Web3 应用

NFT Research

NFT\ NFTScan nft工具

向量数据库:释放数据潜能,重塑信息世界

熬夜磕代码、

向量数据库

20行JS代码实现屏幕录制

南城FE

JavaScript 前端 浏览器 屏幕录制

另辟蹊径者 PoseiSwap:背靠潜力叙事,构建 DeFi 理想国

石头财经

8款好用的AI流程图软件推荐,高颜值流程图轻松绘制!

彭宏豪95

人工智能 流程图 在线白板 AIGC 流程图绘制

文心一言 VS 讯飞星火 VS chatgpt (131)-- 算法导论11.2 3题

福大大架构师每日一题

福大大架构师每日一题

数字政府!3DCAT实时云渲染助推上海湾区数字孪生平台

3DCAT实时渲染

实时渲染 实时云渲染

有什么好用的IP代理吗?要求速度快,使用方便

Geek_ccdd7f

十大项目管理主流方法论介绍

爱吃小舅的鱼

项目管理 项目管理方法

强化您的应用安全,从app加固开始

雪奈椰子

VR虚拟现实应用——原型制作

3DCAT实时渲染

虚拟现实 实时云渲染 VR虚拟现实

2023云栖大会的新鲜事

法医

2023年的低代码:数字化、人工智能、趋势及未来展望

快乐非自愿限量之名

软件开发 低代码 低代码开发

PyTorch从精通到入门05:基于ResNet迁移学习和微调,实现图像分类

王玉川

神经网络 深度学习 迁移学习 图像分类 resnet

亚马逊云EC2哪些端口默认不能用

孤虹

亚马逊云 EC2 Amazon EC2 云服务器

Linux awk命令

芯动大师

快手SL200芯片获选2023世界互联网大会“创新发展典型案例”

Geek_2d6073

划重点!rola-ip跑路事件被同行商业互黑?丑态百出

Geek_ccdd7f

另辟蹊径者 PoseiSwap:背靠潜力叙事,构建 DeFi 理想国

BlockChain先知

LeetCode题解:171. Excel 表列序号,哈希表,TypeScript,详细注释

Lee Chen

JavaScript LeetCode

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