写点什么

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

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

关注

评论

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

得物热点探测技术架构设计与实践

得物技术

热点

2023-02-21:请用go语言调用ffmpeg,解码mp4文件,输出视频信息和总帧数。

福大大架构师每日一题

golang ffmpeg 福大大

日日顺于贞超:供应链数字化要做到有数、有路、有人

联营汇聚

浅谈新媒体运营岗位的发展前景

石头IT视角

如何制作可视化报表?

XxinQi

软件测试 | postman进行发送请求

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

测试

软件测试 | 常见代理工具

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

测试

易点天下基于 StarRocks 全面构建实时离线一体的湖仓方案

StarRocks

数据库 大数据 开源

软件测试 | 抓包分析TCP

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

测试

软件测试 | Mock是什么?

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

测试

携手同心,三阳开泰:读懂2023华为中国政企合作伙伴政策

脑极体

华为

「 Java基础-Lambda 」试试Lambda表达式?通俗易懂得嘞!

小刘学编程

Lambda 代码优化 java 高级编程

架构训练营一作业

null

OSS Compass开源指南针发布,我国首个开源生态健康评估平台正式诞生

Geek_2d6073

流处理计算平台 StreamPark 2.0.0 重磅发布,首个 Apache 版本终于来了

ApacheStreamPark

flink spark 流处理 StreamPark

【深度挖掘 RocketMQ底层源码】「底层源码挖掘系列」透彻剖析贯穿RocketMQ的消费者端的运行核心的流程(Pull模式-上)

洛神灬殇

Apache RocketMQ 2月日更 运行原理 拉取模式

软件测试 | GET和POST区别与实战

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

测试

SaaS+、SaaS的机遇都存在,但不要试图找最短成功路径,该犯的错都得走一遍

B Impact

数据库掌门人论坛回顾,激辩技术和行业发展趋势

镜舟科技

数据库 数据库、

软件测试/测试开发 | 一文带你了解测试流程体系

测试人

软件测试 自动化测试 测试开发 测试流程

ForkJoinPool实践

FunTester

软件测试 | session、cookie和token的区别是什么?

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

测试

JavaScript 中深拷贝方法structuredClone

devpoint

JavaScript 深拷贝与浅拷贝 lodash structuredClone

CorelDRAW2023软件新功能抢先看

茶色酒

CorelDraw2023

软件测试 | 接口测试的价值与体系

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

测试

软件测试 | 常见接口协议

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

测试

软件测试 | 什么是HTTP

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

测试

MathType7.0简体中文汉化版下载

茶色酒

MathType2023

软件测试 | 使用CURL发送请求

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

测试

软件测试 | HTTP和HTTPS抓包分析

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

测试

得物容器SRE探索与实践

得物技术

容器

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