Swift,你不得不学的5个原因

自从2014年WWDC,Swift已经有了数不清的改进。苹果也在2015年开源了Swift的源代码。

当苹果宣布Swift的时候,我有一点兴奋,甚至有一点吃惊。这并不是说我对Objective-C不感兴趣,恰恰相反,我是Objective-C的粉丝。然而,Swift集成了许多我喜欢的其他语言特性,如:protocols,closures,generics和tuples。

我不知道你是否已经开始探索Swift的魅力,这篇文章是我使用Swift一年半以来的一些观察和感悟。

1.这不仅仅是为了iOS

当然,Swift在苹果平台上非常好用。但是现在苹果已经为Ubuntu提供了预编译的二进制文件,这使它同样可以应用在Linux平台上。这对那些想要同时在服务端和客户端写Swift的人是个好消息。一些社区的成员,甚至已经进一步把Swift代码应用于Android平台。

2.打造一门语言的机会

从一开始就参与到一门语言打造过程的机会并不多。得益于社区,每天Swift都变得更快、更稳定和更强大。

当苹果开源了Swift的时候,他们专门制作了一个叫做swift-evolution的repository用来放置用户对Swift的反馈和建议。swift-evolution同时也用来记录Swift的重要改变。

Swift3.0的许多特性正在被讨论中。这里有一个列表标明了哪些东西不会被集成到Swift3.0中,例如:与C++的集成和对并发的支持。

3.非常易学

苹果公司尽量使Swift语言更易学。使用Swift Tour可以快速入门,如果你以前也写过代码,你会很快上手Swift。

更重要的是,无论你是一个初学者还是一个有经验的开发者,网上都有很多的资源可以利用。斯坦福在iTunes U上有免费的课程,Ray Wenderlich上也有很多有关Swift的资源。如果这些还不够,Coursera,Treehouse和Udemy都提供了很多Swift的课程。

此外,就像我前面提到的:Swift被很多其他语言影响。如果你是一名有经验的开发者,你会在Swift中看到很多熟悉的语法和概念。至少从我的角度来看,使用Swift写代码从来不是一件困难的事。恰恰相反,我发现使用Swift写代码很自然、很简单。

4.Swift面向未来

Swift采纳了Objective-C很多好的特性,并且引入了许多能够解决实际问题的新特性。Swift是一个快速、灵活和强大的语言。Objective-C语言引入 了ARC(Automatic Reference Counting)机制,使得程序员不必要担心内存管理。Swift保留了这个机制,这意味着所有必要的retain和release都已经被设定好了,你根本不用担心垃圾回收的问题。

一些重要的特点包括:

  • ARC机制被保留,不用担心垃圾回收。
  • Named参数使得创建和使用API更简单。
  • 错误处理非常简单。
  • Swift支持inferred类型,这意味着你可以快速创建静态类型。Swift也有一些函数式编程模版,比如map和filter函数。
  • Swift速度很快,它使用LLVM编译器生成机器代码,并且自动为平台适配,这个repository记录了Swift性能方面的表现。

5.好用的工具和完善的生态系统

当你使用Swift写代码时,大部分都在使用Xcode作为IDE。Xcode包括了苹果不同平台的界面生成器和模拟器。对Xcode实在喜欢不起来?你也可以使用AppCode甚至一些文本编辑器,比如:Sublime Text、Textmate和Vim。

Swift现在有三个主要的包管理工具:Cocoapods,Carthage和最近发布的Swift Package  Manager。其中,Swift Package Manager的发布是与Swift开源同时进行的,并且很有可能成为Swift通用的包管理解决方案。

同样,Swift有完整的从Objective-C继承过来的整合生态系统。例如:Travis通常都会在几天之内增加对Xcode新版本的支持。这意味着你可以使用很多非常好的测试框架,比如:Quick,这能让你快速测试Swift代码,并推送到Github上。

所以你还在等什么?

从上面这些内容,你也许已经猜到了,我是一个Swift的狂热者。苹果对语言的初始设计非常棒,并且把它开源,以使它变得更好。你要做的就是:从现在开始,上手学习。

如果你对Swift开源项目感兴趣,可以看看我们开放的一个基于野狗SDK的实时聊天项目swiftchat。你可以参与进来,看看有什么可以改进的。

本文文字及图片出自 www.sdk.cn

余下全文(1/3)
分享这篇文章:

请关注我们:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注