【编者按】在2015 WWDC 大会上,软件工程资深副总裁 Craig Federighi 说Swift 将会变成开源。直到今天,苹果已经兑现承诺实现开源。本文来自Swift社区的伍星,是国内最早实战推广Swift的开发者之一,文章是6月份作者为雷锋网独家分析Swift语言的文章,原标题为《拥抱Swift 吧,骚年》——
苹果将Swift 开源,这意味着什么,Objective-C已经是过去时?
在阅读本文之前,先看看此前苹果官网对于Swift开源的说明:
(截图来自:Swift 2.0 - Swift Blog)
编者提取下要点:
具体的开源许可证没有确定(现已正式宣布开源,确定为 Apache License);
苹果官方支持的系统,除了苹果自家OS X,iOS以外,还有Linux;开源的是编译器和标准库。
这里扩展一下,其实根据Chris Lattner( LLVM 和 Swift 的作者 ,下文有介绍) 的说法,早在2015 WWDC 大会之前,Swift 背后的 LLVM就一直是开源的,Chris Lattner 本人曾写过一篇 LLVM 介绍: 《The Architecture of Open Source Applications: LLVM》,有兴趣的童鞋可以去看看。当然,这些并不意味着可以在 Windows上开发 iOS 应用的,但是,Swift 语言的开源的真正意义并在此。
【以下是正文】
推出 Swift 语言,苹果的商业目的是什么?
为了提高开发者们的编程效率,将更多的开发者吸引入苹果的开发者阵营,在去年2014年的WWDC上,苹果推出了一套新的语言 Swift。在这一年中,Swift 经历了不下十次版本更新,开始成为一门相对成熟稳定的编程语言。也以其语法简洁、安全为广大开发者使用,在这一年中,国外的Swift iOS书籍、教程和培训,无一例外已全部采用 Swift 来编写。在国内,Swift 书籍、培训也正在兴起,公司也在接纳这门新的编程语言,比如优才学院还推出了iOS全栈工程师培训课程 。
如今一年过去,苹果又做出惊人之举。在今天的2015 WWDC 发布会上,除了发布 Swift 2,Swift 2.0增加的主要特性包括泛型、更快的调试模式、更快的编译、错误处理机制、C函数指针API、注释里Markdown格式等等。更重要的是,软件工程资深副总裁 Craig Federighi 正式宣布 Swift 将会变成开源。「我们认为 Swift 应该成为所有人都能使用的语言。」他在台上这么说道。 这让整个开发者社区为之点赞和欢呼。
其实Swift 语言开源,既在意料之外,又在情理之中。以苹果之强势,对核心产品开源看似不可以理解,这是意料之外。情理之中则在于:
1、Swift 出自开源大神 Chris Lattner之手。
Chris Lattner在编译器方面,为开源所做的贡献,可谓居功至伟。他是 LLVM 项目的主要发起人与作者之一,Clang 编译器的作者。简单做一个介绍,LLVM 编译器是一个雄心勃勃的项目,其目的是要建一个可重用的编译器组件系统,可用于构建各种工具,包括编译器、调试器、JIT系统、优化器、静态分析系统等 等。LLVM 常用作 C 和 C++ 的优化器,能生成用于多种不同架构的机器码。Clang 项目目前是业内领先的 C、Objective-C 和 C++ 编译器,广泛用于学术界和业界。在语言支持和其他特性方面,LLDB 调试器(LLDB Debugger)开创了先河。LLVM 正在多方面扩展和改进,以支持新优化、新目标、新领域和新特性。所以Swift不开源,Swift他爸爸不答应啊,是不是?
2、看看苹果推出 Swift 语言的背后商业目的。
以苹果之精明,不会纯粹为了开发社区贡献技术。更重要的是其商业原因,Objective-C 出现30多年来,其语法、冗长的写法,并不为大量的开发者所习惯,尤其是已经熟悉过像Java、PHP类似的开发者,想转到Objective-C,倒不说学习曲线,心理上的门槛就挺高的。而Swift 的出现,让这个转换的门槛成为历史,可以想见的是,Swift 语言的出现,再加上开源,更多的开发者将熟悉和使用 Swift 语言,意味着在苹果的视野之中,增强了大量的,数以百万计的开发者的支持。
那么,Swift 发展到今天并开源,对于我们开发者的选择,有什么影响呢?
1、Swift 开源意味着什么呢?
今天一早,在技术群里就有人讨论这个问题。个人的感觉是Swift 开源,必然导致众多开发者对其本身的深入参与,以Swift 目前的优良特性,会有牛人把它迁移至Linux、Windows甚至 Android等平台。届时,Swift 也许会成为一门真正全栈式的编程语言。有了更多开发者的参与,Swift 开发库不足的情况,会快速缓解,据笔者统计,过去一年中,在github上,有13357开源项目被创建。
2、那么Swift 会不会替换Objective-C呢?
这是一个特别多朋友都关注的问题。个人使用Swift 一年以来的感觉是:苹果官方目前没有说要用Swift 代替Objective-C,但是做iOS开发的默认语言就是Swift了。其次来讲,语言的选择是一个开发者用脚投票的过程,我想下面的这个趋势图,应该说明了这点。所以我的建议是,如果想了解Swift ,请尽早,新事物的窗口期就是那么长时间。
编者注:
关于Objective-C介绍,可以看这篇文章:《拥抱Swift吧,Objective-C已经是过去时》。为方便理解,摘录其中的一段话:
目前iOS中的很多应用框架都还是Objective-C的,调用的方式是使用桥接头文件,但未来会出现更多基于Swift的框架,今后的调用也会变为更加简洁的方式,苹果正在努力实现这个艰巨的任务,因为需要转换的框架有很多。
不过很快,我们就会看到专属于Swift的新框架,这样的框架在Objective-C中甚至都找不到同类。这种情况的发生也会对Objective-C的后续使用造成很大的影响。
3、Swift 稳定成熟了吗?
在去年刚发布时,虽然已经可以兼容现有的库和支持Objective-C互操作,能真正开发出iOS产品,但是Swift 确实有很多的不足,比如最坑爹的就是编译速度很慢,最早时,有更新,所有文件要编译,这是工程上无法忍受的,但是到了今天,语法本身完善了,工程上的开发效率问题也得到了解决,就差库了。而对库的提供,这不正是开源社区所擅长的么?
所以,拥抱Swift吧,骚年!
【作者介绍】伍星,优才无限、优才学院(原优才网)创始人,现主导优才无限教学、研发工作。是开心网早期创始团队成员,架构师。是国内最早实战推广Swift的开发者,国内最畅销的《Swift语言实战入门》主编,并国内首家推出Swift iOS全栈工程师培训,为IBM、北京公交集团、动批网、OneAPM、创新工场系等提供培训咨询服务。