【转】如何评价 Apple 新推出的编程语言 Swift?

如何评价 Apple 新推出的编程语言 Swift?

原文地址:http://www.zhihu.com/question/24002984

评价:如果你会Objective-C,你不需要去看它。

       如果问我这语言对普通开发者重要不重要,我说重要,可以明确告诉你这一点--它是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 的。
- 它没有任何对异步/同步编程的支持。它没法绑定使用 GCD,因此任何正经的网络应用根本无法编写。
- 它没有任何的保护机制(private, protected),所有的 method 和 variable 都是全局可见的,这显然不能满足正经工程项目的需要。
- 只能和 ObjC 互动。如果你想正经地使用 C 或者 C++,你得写 ObjC 的 wrapper。
- 没有办法 catch Objective-C 的 exception,如果一旦出了 exception,你的 App 立马就崩了。

Chris 在设计这门语言时,可以明显地看到他的短视。这也很正常,他是一个做编译器的,不是做语言研究的。所以这门声称支持函数式编程的语言,根本不是函数式的:
- 仅有的支持在 lazy,闭包,及简单的函数语言函数(如 map, filter)。这 ObjC 中都能做
- 没有 pattern matching
- 类型推导差不多和 C++11 差不多,没有使用 hindley milner。

从上面这些特点看, Apple 对其的定位仅是给对 ObjC 头疼的开发者降低学习曲线所推出的玩具语言。前面五条中的每一条,基本都是致命的,因此 Apple 自己的项目也不会使用。做个早期 proof of concept 的 prototype 到是可以的。

我可以想象,实现上 Swift 是很简单的(LLVM 很成熟了,写个新语言越来越简单,比如只要几步就能做个小语言: 1. Kaleidoscope: Tutorial Introduction and the Lexer),当然有可能 Apple 将来会解决这些问题使得其真正实用。但现在来看,Apple 并不希望 Swift 来替代 Objective C。

 

下面罗列一些知乎上其他大神的评价,并给出别人给这个评价的支持票数:


【转】如何评价 Apple 新推出的编程语言 Swift?,布布扣,bubuko.com

【转】如何评价 Apple 新推出的编程语言 Swift?

上一篇:Javaweb中利用rpc(hessian)与Android通信


下一篇:浅谈月薪3万 iOS程序员 的职业规划与成长!(进阶篇)