初始Apple Swift语言

这一周在iOS开发者之间讨论的最多的话题应该就是apple在WWDC 2014上推出的Swift语言了,微博上充斥着各种对swift语言的讨论,更多的是很快的出现了很多swift语言的学习教程、示例。Swift一出来就这么火是必然的,不仅仅因为它是由Apple推出的语言,更多的是他会影响iOS和OSX开发者今后的工作:

  • 对于大部分现有的app而言,Objc仍然会是主要的开发语言,但是或许在项目中我们需要引入Swift的一些元素,因此在未来一段时间内iOS和OSX的开发人员不得不同时融汇贯通两种语言。
  • 对于新的iOS和OSX项目,会有不少开发者直接采用swift语言,毕竟现在看来,Swift是apple今后的方向。

从上面两点就可以看出,我们确实需要去学习Swift,今后在工作中必然会用到。但是我觉得我们需要理性的去看待一件新事物。

微博上很多开发者对Swift有盲目的推崇,说它优秀,但是优秀在哪里,我没有看到有关这一点的具体论述。难道紧紧因为Swift具有类似python的语法?仅仅因为Swift引入了像Lambda表达式、类型推断等语法糖?举个例子,Swift是一种类型安全的语言,就是说它不会对类型进行自动的转换,比方说下面的代码:

1
2
3
4
var a = 10
var b = 1.0
var c = a + b //this will not compile,because a is int and b is double
var d = Double(a) + b//this is correct

有人在称赞swift类型安全的同时,却重载了+操作符,来避免需要专门做类型转换这件事。难道这不是很矛盾吗?既然你认为类型安全是好的,何须按照自己之前的编码习惯去重载操作符呢?

每一种语言都有自己的特性,一门编程语言真正的优劣不在于它提供了多么友好的语法,不在于它提供了多少的语法糖,而应该通过它在大型项目中的表现,包括大型代码的组织,对OO各种特性的支持,对项目中各种模式的支持等。而这些只有通过在大型项目中的实践,我们才能够得到结论。因此个人认为现在一窝蜂的说Swift是好是坏,完全没有意义,大部分说法都是开发者根据自己对某一特性的喜好得出的。

再者就是对于Swift的学习,网上已经有了很多的教程,示例,我个人不推荐大家去读这些教程,除非是WWDC中相应的session,其他的在如此快的时间推出的教程毫无疑问是不负责任的,因为即使作者自己也没有在实践中体验过Swift的特性,误人子弟的可能性倒是不小。官方推出的“The Swift Programming Language”应该作为当前学习Swift的教材,书的内容非常详细基础,却涉及到了Swift的各个方面,对于有开发经验的人来说,1天多的时间就可以将这本教材通读。

C++语言发展至今,经过了C++委员会的多次修改,每一个语言特性的增加或者改变都是经过深思熟虑的,都有文档规范为依据;ObjectiveC也经过了apple的产品和众多的app的验证,可以说是一门不错的开发语言;Swift的出现究竟是基于什么样的考虑,它的这些特性又是通过了怎样的验证,我们暂时不得而知,而这些需要我们开发者在今后的工作中去亲自体验。