我文章的中心是,以 Apple 目前给出的各种资料来看,这语言不会替代掉ObjC,它不是下一代的ObjC。它有很多缺点,使得它不足以做大型项目。这些缺点使得,Apple 自己都没有使用它做 Mac/iOS 的 app。我不排除明年后年它有很大改进,但至少现在还没有这端倪。
因此,如果你会ObjC,你不需要去看它。
但你如果问我这语言对普通开发者重要不重要,我说重要,可以明确告诉你这一点--它是 Apple 在 WWDC 向全世界推出的重磅语言我怎麽能说它不重要? 它降低了入门的门槛。使得大量的 JS, Python, Ruby用户会使用 Apple 的技术为其开发程序。它的作用,和 Core Data, Interface Builder 一样,能让你快速写出一个能用的程序来。但如果你想稍做些正经事,就心有馀力不足了。所以和 Apple 自己的 Mail 也不会去用 Core Data,自己 iPhoto 不会去用 UICollectionView,稍複杂的 App 都不会去用 Interface Builder 一样,Apple 自己不会用 Swift。它只是给三五个人的小团队能迅速做出能用的程序,让大公司能快速做些 Prototype 而已。
====
有人说它相当于 C#,或是相当于 Scala 对 Java 的改进,我可以告诉大家,Swift 不是这样的语言。它更像一种让人快速做原型的 toy language。
要求 Apple 发佈下一代 Objective-C 语言的呼声早就有了,每年写数万字 OS X 评论的 Ars Technica 两年前就写了 Apple 应该去做一个语言,Objective-C without C 并且使用更现代的功能和更短的 API,以及对自动类型推导的支持,文章见 OS X 10.8 Mountain Lion: the Ars Technica review 。
但 Apple 显然没有认真对待这门语言。很明显的,他们根本不想把ObjC给替换掉。并且按Apple的风格,如果他们把Swift当ObjC的未来来对待,肯定会有一到两个iOS/Mac应用使用Swift改写。(比如Apple 当年要砍 Carbon,首先做的就是把 Finder 重写了)。
从语言角度,Swift 有太多的缺点:
它的标准库太差,只有Dictionary, Array 和 String及数这几种数据结构,连个 Set 都没有。想用别的?你还是要用 ObjC 的。是的,当你用原生数据结构时,速度比ObjC快。但是那仅限于那几个。 它没有任何对异步/同步编程的支持。它没法绑定使用 Grand Central Dispatch,因此任何正经的网络应用根本无法编写。








