为什么非苹果开发人员也有理由关注Swift语言?

为什么非苹果开发人员也有理由关注Swift语言?

就在上周,苹果公司已经公布一项承诺:其Swift语言如今正式转型为开源项目。作为一款一年之前才刚刚出炉的编程语言,Swift属于C语言家族中的组成部分,其设计目的在于实现通用型应用程序开发任务。苹果公司最初发布Swift语言之时主要针对新型桌面与移动应用开发工作,且采用LLVM编译器。Swift汲取了众多现代语言设计方案中的思路成果,并将C语言的复杂性与深度同Python等解释语言的易用性加以结合。除此之外,其运行速度亦非常出色,且能够与大型数且及集合顺畅对接。

Swift的开源发布版本将继续保持自身发展,同时加入了Linux支持能力与服务器端语言功能。Swift目前已经走上了前进的快车道:在其发布的当年,Swift已经升级至2.2版本,此外其同时增加了LLVM与clang编译器等对接能力。目前Swift尚不提供Windows版本,不过微软公司已经在其最新Visual Studio版本当中加入了iOS与OS X应用的Swift支持能力。

如果大家曾经在OS X系统平台上使用过Swift,就会发现Swift在Xcode当中的使用方式与多年以来Objective-C开发者所熟知的开发环境非常相似,而两种语言也能够使用同一款编译器。苹果公司甚至直接将Swift描述为“剔除C元素的Objective-C”。

这是因为Swift实际上就是Objective-C的一种抽象化版本,且同样使用底层LLVM编译器。事实上,Swift与Objective-C相当相似,大家甚至可以将Swift描述为一种新的、对特定关键性结构进行了简化并提升代码可阅读性的Objective-C语言分支。Swift立足于Objective-C的语法基础,同时添加了现代结构支持能力以简化语言自身并帮助习惯于利用JavaScript或者C#进行iOS或者OS X应用创建的开发人员轻松上手。这部分开发人员会从中发现大量自己熟知的特性,包括Swift的控制流处理机制以及函数使用方式等等。

Swift与Objective-C之间的共性简化了应用程序面向新语言进行更新的流程。大家可以将Swift与Objective-C代码在同一应用之内进行混合与匹配,从而保证现有库能够在新应用中进行复用。如果大家从其中一种语言转移至另一种语言,则完全无需对有必要加以复用的代码内容进行重写——除非各位刻意为之。

苹果公司在语言设计当中高度关注安全性保障原则,而Swift语言的一大核心特性亦在于其支持类型推断。如此一来,尽管Swift并非强类型,但其仍然具备类型安全保障。具体来说,如果大家未能声明某变量类型,但却为该变量赋予某个已经进行过声明的值,那么Swift能够自动推断其声明类型。在这种情况下,我们的代码将更加安全——即降低了发生崩溃的风险。Swift还利用自身内存管理机制对指针进行访问限制。

类型安全还意味丰大家永远不会将int传递至string;Swift编译器能够始终将此标记为错误。其中将有一条守护语句在某段代码的值为nil时阻止其执行,这就使得我们能够确保自己的代码远离各类常见用户与API错误的困扰(一般来讲,nil往往会导致编译器时间错误)。或者,大家也可以使用optionals以允许特定变量的赋值为null,而无论其实际类型为何。

编写Swift应用非常简单:大家只需要着手进行即可。整个过程不需要设置任何主函数或者导入引用。这种方式的设计目的在于进一小提高代码可访问性。尽管目前舂OS X或者iOS用户界面都是由库负责处理,不过大家仍然可以在为其设置外观以及使用体验之前首先开发应用核心。

Swift中的一大关键元素为苹果所谓“面向协议编程”机制。作为接入其它语言的关键性途径,协议会利用某个类特定方法,从而保证大家能够在该协议的帮助下在任意类当中使用已定义方法。另外,协议还允许我们对任意类进行扩展——包括核心语言元素在内——而无需对其源代码进行编辑。这意味着大家可以同时使用各类第三方代码与库。

另一大优势:大家可以利用一整套协议组合帮助自己的开发团队实现代码标准。协议本身也是一款极为强大的工具,我们可以将其作为开发策略中的一项关键性因素。

Swift最为重要的创新成果之一在于将Playgrounds添加至Xcode当中。苹果公司目前正利用Xcode与Swift将LLVM编译器推广到更多开发人员手中,并确保使用者能够在IDE之内直接查看代码功能。Playgrounds机制允许开发人员快速尝试代码片段功能,从而在无需切换至IDE之外的前提下了解其是否与预期相符。大家不必对代码进行编译再运行其build或者调试工具;一切都能够在代码编写完成后立即进行检验。这种方式无疑极大鼓励了开发人员做出新鲜尝试,并将代码编写变成一种更具娱乐性的体验。

将这些特性代入其它平台则是同样重要的一步。编程语言需要能够在任意平台上供开发人员使用,从客户端到服务器端再到云端,而一套能够跨越全部现代堆栈元素的一致性语言正是这类开发场景中的核心角色。但需要强调的是,目前大家尚无法在Linux平台上享受到Swift编译器内的Playgrounds功能。

不过这种功能缺失也有其道理:作为主要面向服务器应用程序的开发环境,大家在Linux当中可能工不需要这种快速功能可视化机制——在这里,我们只需将输出结果导入控制台即可。苹果公司在其Linux工具组合中提供一款基于REPL的调试工具,允许大家以交互形式快速运行代码,这样大家就能够利用REPL(即读取-运算-输出-循环)工具作为表达式评估机制。

相关推荐