如何评价 Swift 语言?
swift 是多范式编程语言。可结构化编程struct enum,可面向对象class,可面向协议protocol,可函数式 high-order,pure function。集合了所有当前语言的精华,涉及到底层的优化(多用struct),抽象的架构思维(protocol-oriented,比java的接口强大很多),更健壮的代码(functional programming),程序员友好(代码简洁,var let 省句尾分号...),另外,甚至DSL,元编程。每个方向都带你通往另一个大门。性能优化方向,架构师方向,函数式方向,函数-范畴方向,纯函数-分布式方向(开源支持Linux),服务器端方向(不止web server)。
那是不是 Objective-C 就不需要学习呢?并非如此。Swift 还没有很好地解决好跟 C 和 C++ 混编的问题。很多项目底层核心库会采用 C/C++,界面和大部分逻辑采用 Swift 编写,需要 Objective-C 作为粘合层。
另外还存留很多库是用 Objective-C 编写的,使用这些库需要一定 Objective-C 知识。随着时间推移,Swift 在整个 iOS/Mac 工程中占的代码比例会越来越多,而 Objective-C 作为粘合层还是会存在。Objective-C 的语法很独特,就算跟 C++ 写在同一文件,也不会搞混,Objective-C 跟 C++ 混编是很容易的。
Swift 调用C 代码还勉强可以(还不够方便),但直接调用 C++ 没有什么可能。或者有些人会觉得小小的一个 App,还需要跟 C/C++ 混编?你是小看了 App 了,App 会越做越复杂的。
应该当成跟 PC 平台相同的地位看待,PC 平台的软件可以达到什么规模,App 就会达到什么规模。在需要高性能,跨平台的场合,C/C++ 还是绕不开的。很多人现在还没有学习 Swift, 觉得它没有什么优点,只是一个语言大杂烩。只是等你真正使用 Swift 编写一两个项目,就回不了头。现在 Swift 还不稳定,语言、库、相关工具将会快速变动,而这恰好说明它在发展。
很多大公司为求稳,会仍然采用 Objective-C。而个人开发者和小团队,新项目应该直接采用 Swift 编写,旧项目的新模块也应该使用 Swift 编写。这样慢慢将整个语言重心从 Objective-C 切换到 Swift。Swift 的代码更简洁,开发效率更高。原有 Objective-C 项目,已经使用 Objective-C 编写的比较稳定的库,不需要也不建议要用 Swift 重新编写,直接混编,让它慢慢过渡就行了。