该用户从未签到
|
近20年来,苹果一直把Objective-C作为主要的编程语言,而在今天举行的全球开发者大会上,苹果推出了一个全新的编程语言Swift。据悉,苹果此次发布的Swift兼容Objective-C语言,从其开发者指南中,我们看到Swift从Python和javaScript中吸取了许多东西,从而让Swift更易读,或者说更为“口语化”。" K$ Y0 X' j% N( T& \
然而,对这类语法更为简洁的语言,许多人会质疑其运行效率。对此苹果指出,Swift在许多方面性能都比Objective-C好。% R' N/ P3 l9 O c1 T/ U) g. W
Rust语言创始人Graydon Hoare在看完Swift的指南后,写出了自己对这个新编程语言的看法。以下为译文:
" \ |+ d: x# t" ESwift保障体系
. n; k! U/ s4 t+ S, t" T, t4 f
2 s8 ]7 N: N+ b( B) l& PSwift可供所有人使用;
. A3 x9 g$ i! p+ X7 tSwift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题;Swift采用安全编程模式,且加入多种新功能,使编程更简单、灵活;
* L& T' z4 w, i, i6 f; m1 kSwift广泛地借鉴了C#语言和Rust语言。对此,我很有意见。0 `- L# ]: m% g1 B* Z
和许多其他的编程语言一样,Swift可被LLVM编译为本地代码,且运行速度特别快,可供很多原生设备使用。) d3 Z( d/ X7 [ {% S/ y
1 {8 \" b2 T$ T. ?6 CSwift功能特性
+ Y7 Z2 n& B+ ^/ d7 h, C$ t2 o3 @7 M! e$ J
Swift中并没有加入宏系统;其协议和扩展都源自Objective-C;
3 K% c# }1 s8 h* ?. o: e$ ?, ?Swift采用var声明变量和let声明常量;结合if和let,可方便处理可空变量; O% B h0 _; e+ F+ c
单继承类显示重写和内容,外加多种接口;
, j' B* J7 P$ |% }7 K; tLambdas表达式看起来和类Ruby块形式十分相似;
/ P; i" S$ a n* u9 v) a- ASwift没有显示指针,而是像C#语言一样,依赖于值类型/引用类型;
7 z7 s N: l* D9 c, F0 }Swift是一个没有globs的基本模块系统,以进口或重命名分类,通过属性,支持重新导出功能;: `, b& W& z/ @- Y S3 g
Swift支持本地类型推断、整理数值类型,但不支持隐式强制转换,所有的代码需要转化为显式类型;
& O, ^/ K- o( _, y) A7 i脚本语言支持词典文字,简单的脚本可做大规模的工作,可在多核计算机、集群、网格、云和超级计算机上运行。
0 N& s! i A3 c7 y C
& y; Z$ e( }0 W' {Swift的独特性/ |5 X( Q- r q3 C# w) k- W
# M5 s( C. n+ z' F% c
Swift支持默认检查算法功能;
1 H/ v9 f# t: D0 pSwift使用[]操作符声明数组和字典,数组还有独特的延伸语义功能;但不清楚是否允许程序员自己执行迭代器协议;# k& s+ ?% H. f2 M4 J% `
Swift看起来并不像是个表达式语言;* L4 c0 Z7 b: T6 U6 U0 z% F
Swift使用class来创建类,类可包含字段和方法;
3 m, @9 `4 s. {) ~- [8 ~0 }' Z4 A+ k K
Swift采用Objective-C的命名参数和动态对象模型,提供了对Cocoa框架和mix-and-match的互操作性。基于这些基础,Swift引入了很多新功能,如结合面向过程和面向对象。9 g! O' _; ?" L' q- f7 V z
除了代数类型、选择类型和偶然会发生的“”runtime error外,Swift没设其他处理错误的讨论区。1 v: z( K! w/ u( V; F
|
|