写点什么

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

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

关注

评论

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

SaaS应用加速解决方案

Ogcloud

网络加速 SaaS 产品 海外网络加速 SaaS应用加速

Final Cut Pro for Mac(fcpx视频剪辑)v10.7.1 中文版

iMac小白

macOS Sequoia 15(Macos15系统)v15.0 Beta 3测试版本

iMac小白

Elasticsearch基本概念与使用

爱吃小舅的鱼

elasticsearch 数据分析

内网穿透

源字节1号

小程序 开源 前端 后端

Termius for Mac(SSH客户端)v8.4.0激活版

iMac小白

Navicat Premium 15 for Mac(数据库开发工具)v15.0.36中文激活版

iMac小白

PDF Reader Pro for mac(全能pdf编辑阅读软件)激活版

iMac小白

什么原因让你想当程序员?

源字节1号

小程序 开源 前端 后端

如何通过一条SQL变更多个分库分表?

NineData

数据库 sql NineData 库分组 DDL变更

用二维码介绍旅游行程,扫码就能获取路线信息

草料二维码

二维码 草料二维码 旅游行程 旅游简介

Final Cut Pro for Mac(fcp专业视频后期制作)v10.8.0中文版

iMac小白

客户在哪儿AI助大客户销售最高成功概率的见到目标客户决策层

客户在哪儿AI

ToB营销 ToB获客 ToB增长 大客户营销

想做出好看的PPT课件?这3款AI生成PPT工具助你一臂之力!

彭宏豪95

人工智能 效率工具 PPT 办公软件 AI生成PPT

【YashanDB知识库】yac修改参数后关闭数据库hang住

YashanDB

yashandb 崖山数据库 崖山DB

SecureCRT for mac(终端SSH工具)v9.3.2激活版

iMac小白

IntelliJ IDEA 2024 for Mac(Java语言开发集成环境)

iMac小白

Illustrator 2024 for Mac(AI2024领先的矢量图形软件)v28.1中文激活版

iMac小白

【论文解读】大模型算法发展

合合技术团队

算法 LLM

【YashanDB知识库】23.1.3.101版本创建物化视图coredump

YashanDB

yashandb 崖山数据库 崖山DB

【YashanDB知识库】v$instance视图中实例角色含义不明确

YashanDB

yashandb 崖山数据库 崖山DB

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