该用户从未签到
|
近20年来,苹果一直把Objective-C作为主要的编程语言,而在今天举行的全球开发者大会上,苹果推出了一个全新的编程语言Swift。据悉,苹果此次发布的Swift兼容Objective-C语言,从其开发者指南中,我们看到Swift从Python和javaScript中吸取了许多东西,从而让Swift更易读,或者说更为“口语化”。1 p. }% H: ], o# s) z2 K# m
然而,对这类语法更为简洁的语言,许多人会质疑其运行效率。对此苹果指出,Swift在许多方面性能都比Objective-C好。7 c% t8 _1 M2 |/ R; s
Rust语言创始人Graydon Hoare在看完Swift的指南后,写出了自己对这个新编程语言的看法。以下为译文:
& a- h( h5 @1 [3 C) pSwift保障体系
' s: U9 x1 J# u$ i6 N3 z4 o5 K' D+ A8 |1 ] t! S5 m& H) L$ d
Swift可供所有人使用;
8 o4 Q9 F: v! [( ~; t% }Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题;Swift采用安全编程模式,且加入多种新功能,使编程更简单、灵活;
* f- V7 }& N7 J8 ESwift广泛地借鉴了C#语言和Rust语言。对此,我很有意见。3 |& p( N5 h8 k/ X7 p5 |) i6 n! O
和许多其他的编程语言一样,Swift可被LLVM编译为本地代码,且运行速度特别快,可供很多原生设备使用。
4 z# X9 s8 S/ U' A V# y+ W
" H* ^5 E2 U( a& n4 n. D) ~Swift功能特性- F/ Q/ w9 X( V8 X' e h
+ V& @/ h, y$ |+ p8 b
Swift中并没有加入宏系统;其协议和扩展都源自Objective-C;
; j4 \9 w6 [4 Q- ~ { I* |Swift采用var声明变量和let声明常量;结合if和let,可方便处理可空变量;, x$ `5 q: q7 N8 M! Z
单继承类显示重写和内容,外加多种接口;
5 I1 Z. {' P: n% ]1 r) LLambdas表达式看起来和类Ruby块形式十分相似;1 @- a% |% U3 c& @3 j/ v4 }9 ?$ ~
Swift没有显示指针,而是像C#语言一样,依赖于值类型/引用类型;7 O- [' I# ?& W; j
Swift是一个没有globs的基本模块系统,以进口或重命名分类,通过属性,支持重新导出功能;
, ^; s Z' k& |# N: VSwift支持本地类型推断、整理数值类型,但不支持隐式强制转换,所有的代码需要转化为显式类型;
; ~4 a* E x' Z/ O( O/ }* `脚本语言支持词典文字,简单的脚本可做大规模的工作,可在多核计算机、集群、网格、云和超级计算机上运行。
; ?) e4 Y; G5 I) k3 G. r) N. H' E% ?# u# Q% Y4 f
Swift的独特性
. {- T3 s) L! K9 V3 V0 O7 Q
0 R& T3 E( m' C2 ]) c; z4 JSwift支持默认检查算法功能;9 b0 _* L3 E! v! x
Swift使用[]操作符声明数组和字典,数组还有独特的延伸语义功能;但不清楚是否允许程序员自己执行迭代器协议; G5 ]! v! R1 i5 E
Swift看起来并不像是个表达式语言;1 T! c3 J9 ^) O4 b/ l9 U: [, A
Swift使用class来创建类,类可包含字段和方法;
9 ]4 V5 K- H- y+ {! q5 L! E: p& L1 _
Swift采用Objective-C的命名参数和动态对象模型,提供了对Cocoa框架和mix-and-match的互操作性。基于这些基础,Swift引入了很多新功能,如结合面向过程和面向对象。+ U5 K& A7 y& F; {% m3 o: f( G
除了代数类型、选择类型和偶然会发生的“”runtime error外,Swift没设其他处理错误的讨论区。
" g+ C7 Q( Z) u" Q$ ` |
|