|
该用户从未签到
|
近20年来,苹果一直把Objective-C作为主要的编程语言,而在今天举行的全球开发者大会上,苹果推出了一个全新的编程语言Swift。据悉,苹果此次发布的Swift兼容Objective-C语言,从其开发者指南中,我们看到Swift从Python和javaScript中吸取了许多东西,从而让Swift更易读,或者说更为“口语化”。
0 M" v! k& E, T, `3 ?2 ?+ D6 _然而,对这类语法更为简洁的语言,许多人会质疑其运行效率。对此苹果指出,Swift在许多方面性能都比Objective-C好。& v$ a* O. }) n4 v
Rust语言创始人Graydon Hoare在看完Swift的指南后,写出了自己对这个新编程语言的看法。以下为译文:
- q4 y4 ]& @/ G9 q5 Q' i7 B7 `* dSwift保障体系$ L- b2 ^! c1 S
6 `# Y! `* {9 p4 eSwift可供所有人使用;
9 B& y2 d5 j0 B, dSwift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题;Swift采用安全编程模式,且加入多种新功能,使编程更简单、灵活;! D6 [5 i$ j' m! l& W& G
Swift广泛地借鉴了C#语言和Rust语言。对此,我很有意见。+ ?( [: Y) S) ?" D s
和许多其他的编程语言一样,Swift可被LLVM编译为本地代码,且运行速度特别快,可供很多原生设备使用。, C9 [: F: k; X+ r
6 w' c" l$ F6 }: p
Swift功能特性
7 l8 q& n4 Q" G1 m3 t1 p8 p. Z
: {4 E/ p. L( _Swift中并没有加入宏系统;其协议和扩展都源自Objective-C;0 f$ A5 n4 B& r4 p/ R
Swift采用var声明变量和let声明常量;结合if和let,可方便处理可空变量;( k" E( T+ }; m2 V( K0 D
单继承类显示重写和内容,外加多种接口;- L5 B' E, H, u! d1 y& d
Lambdas表达式看起来和类Ruby块形式十分相似;0 c7 `& F, p2 o$ c
Swift没有显示指针,而是像C#语言一样,依赖于值类型/引用类型;
% z1 B9 z( O, \: c( o1 V4 d6 ISwift是一个没有globs的基本模块系统,以进口或重命名分类,通过属性,支持重新导出功能;
9 X/ I: {% l g. I8 ?5 G7 [# aSwift支持本地类型推断、整理数值类型,但不支持隐式强制转换,所有的代码需要转化为显式类型;) y4 D% |# |6 J. f/ G0 P( H
脚本语言支持词典文字,简单的脚本可做大规模的工作,可在多核计算机、集群、网格、云和超级计算机上运行。
5 e( q4 t: a! K2 K. t0 _8 M
7 m8 q. {7 K! H) y; n; LSwift的独特性# H7 \, T1 q5 ]& W5 t* U' |
9 x/ P. j7 I9 ?" D. B; t! l% ~! E9 `Swift支持默认检查算法功能;. I( _8 B% ^' @+ U5 u
Swift使用[]操作符声明数组和字典,数组还有独特的延伸语义功能;但不清楚是否允许程序员自己执行迭代器协议;
& v, V3 n6 P* iSwift看起来并不像是个表达式语言;
6 z& j t7 U7 R9 USwift使用class来创建类,类可包含字段和方法;
+ j/ e5 i$ ~6 b4 U4 f( q' u) i+ {1 B& Q. ?" y
Swift采用Objective-C的命名参数和动态对象模型,提供了对Cocoa框架和mix-and-match的互操作性。基于这些基础,Swift引入了很多新功能,如结合面向过程和面向对象。
; `" f' g% i# _/ }+ ^/ t除了代数类型、选择类型和偶然会发生的“”runtime error外,Swift没设其他处理错误的讨论区。$ T: b3 X% q- G$ U' d
|
|