BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

苹果的Swift:iOS和OSX上的高性能高级语言

| 作者 Alex Blewitt 关注 4 他的粉丝 ,译者 丛一 关注 2 他的粉丝 发布于 2014年7月7日. 估计阅读时间: 4 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

WWDC 2014大会上,苹果宣布发布Swift的beta版本。这是一种新的程序设计语言,将在今年晚些时候与iOS 8和OSX Yosemite一起面世。对JavaScript开发者来说,Swift将会是一种看上去比较熟悉的高级程序设计语言,不过它是用LLVM编译生成OSX和iOS上的高性能可执行代码的。

苹果已经在LLVM技术上进行了巨大的投入,这种技术提供了一个抽象的指令集,可以被翻译成适用于特定的计算机体系结构的指令集。Clang替代GCC成为C和Objective-C程序的默认编译器,这两种语言的程序都由Clang转换成LLVM指令,再由LLVM对其进行优化并转换成目标平台的可执行代码。Swift这种新的程序设计语言也采用同样的方式生成LLVM字节码,并且可以和已有的Objective-C应用和库共存。

另外,Swift中还包含用于测试代码的REPL环境。REPL环境通常用于Javascript或Python这类解释执行语言,提供读取-求值-输出循环(Read-Evaluate-Print Loop),可以在命令行中对单个的表达式或语句求值,便于开发人员进行调试。Swift强大的循环,字符串插值(string interpolation)和打印/调试选项,让开发人员可以以交互的方式完成开发和测试,这是C和Java这类编译式语言通常比较欠缺的。

Swift是强类型语言,尽管它使用类型推断(type inference)减少由开发人员键入的字符数量。可以显式地提供类型,对于数字类型,可以指定大小,如UInt8和Int32。类型引擎还提供可选值类型(Optional valued types);基于该值是否存在的预期,可以使用?或!对可选值解除引用。在Swift中,集合支持以字面量形式定义数组(用[])和字典/映射,并且可以包含泛型类型。

函数也是Swift中的第一等元素,可以作为变量传递给其他元素。参数可以被显式的命名(这样就可以兼容Objective-C的命名参数)或仅作为位置参数。参数可以设定缺省值,在不需要的情况下可以不传入。

Swift中可以使用Objective-C的对象,包括标准库(如UIKit或Cocoa)和用户自定义类型。Swift中也可以创建原生的类(这些类也可以被Objective-C程序使用),并且像其他Objective-C对象一样,也是引用计数的。(这些引用由运行时自动管理,使用者不需要直接关心Swift中的内存管理。)在Swift中,可以创建结构体(struct)值类型,这种类型可以通过值拷贝的方式传递给函数类型,而类则是引用类型。

最后,通过使用元组(tuples),Swift可以有多个返回类型。这些元组可以被用于语义匹配(使用case语句)或变量赋值。

Swift已经包含在XCode 6开发者预览版中,并且将在接下来的几个月内正式发布。目前还没有确定Swift语言是否会被整合到上游的LLVM中,不过LLVM最近已经融合了ARM 64位的支持,并且正在致力于对Safari的Javascript JIT引擎的支持,基于LLVM的上游Clang运行时很有可能将包含对Swift的部分支持。如此一来,对于其他的架构,只要有支持它的Clang编译器,就可以为其编写Swift程序。

查看英文原文:Apple Releases Swift, a High-performance High-level Language for iOS and OSX


感谢臧秀涛对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT