该用户从未签到
|
近20年来,苹果一直把Objective-C作为主要的编程语言,而在今天举行的全球开发者大会上,苹果推出了一个全新的编程语言Swift。据悉,苹果此次发布的Swift兼容Objective-C语言,从其开发者指南中,我们看到Swift从Python和javaScript中吸取了许多东西,从而让Swift更易读,或者说更为“口语化”。
# P& M2 i* N& }+ G+ k2 T; D8 m0 H然而,对这类语法更为简洁的语言,许多人会质疑其运行效率。对此苹果指出,Swift在许多方面性能都比Objective-C好。
* v5 P! N2 X$ ^: g; A; N Z- Q8 K( Y6 a; pRust语言创始人Graydon Hoare在看完Swift的指南后,写出了自己对这个新编程语言的看法。以下为译文:* Q. A8 W" `4 i. `
Swift保障体系
0 R! w1 T# n/ ^- j. B$ J: U: C0 ]
Swift可供所有人使用;
+ R p9 h( e+ [$ o; e ^3 }) d$ g0 GSwift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题;Swift采用安全编程模式,且加入多种新功能,使编程更简单、灵活;% m) k' @* ]; {% z8 {" g) m" M
Swift广泛地借鉴了C#语言和Rust语言。对此,我很有意见。+ a! P5 c0 M% ]; ~% Q7 q
和许多其他的编程语言一样,Swift可被LLVM编译为本地代码,且运行速度特别快,可供很多原生设备使用。7 F( {; z) X# V" Z( u: U# m/ u; h( _0 w1 }
( U& K1 ?( W3 H/ S1 i
Swift功能特性
! |2 u2 V6 Y* G( p& T, l
1 i* u5 A+ J5 H1 w% K) [7 Y% xSwift中并没有加入宏系统;其协议和扩展都源自Objective-C;
4 {- R4 s* T. _+ n! YSwift采用var声明变量和let声明常量;结合if和let,可方便处理可空变量;6 M, p$ l4 P# @- b- }
单继承类显示重写和内容,外加多种接口;% ~) u8 b0 j6 q' l% c$ M& ]
Lambdas表达式看起来和类Ruby块形式十分相似;
# x6 T+ {' {1 E. o$ e# O' N" RSwift没有显示指针,而是像C#语言一样,依赖于值类型/引用类型;% Q3 O! V0 i4 W
Swift是一个没有globs的基本模块系统,以进口或重命名分类,通过属性,支持重新导出功能;9 T3 }; Z7 ?" |
Swift支持本地类型推断、整理数值类型,但不支持隐式强制转换,所有的代码需要转化为显式类型;
7 Y! \0 ^! Y7 k: N9 a6 z脚本语言支持词典文字,简单的脚本可做大规模的工作,可在多核计算机、集群、网格、云和超级计算机上运行。
& d# P, T! K6 i7 _+ }/ [/ @9 H- j' f* k" {
Swift的独特性
1 E- [' U7 P; _2 r3 u! V, @5 H* H) E/ `+ |' w( ?; P
Swift支持默认检查算法功能;% @( K9 |5 Y- j. u' a
Swift使用[]操作符声明数组和字典,数组还有独特的延伸语义功能;但不清楚是否允许程序员自己执行迭代器协议;
4 [" y7 F0 C% s" B- a( S9 _! ]# CSwift看起来并不像是个表达式语言;1 _2 L, e" c7 ]7 D
Swift使用class来创建类,类可包含字段和方法;
" I C# U% E4 O7 Y2 d
8 z5 G. }% `: o* W/ NSwift采用Objective-C的命名参数和动态对象模型,提供了对Cocoa框架和mix-and-match的互操作性。基于这些基础,Swift引入了很多新功能,如结合面向过程和面向对象。
2 m$ ?% b% T& e- E$ e Z: O8 |* i除了代数类型、选择类型和偶然会发生的“”runtime error外,Swift没设其他处理错误的讨论区。. u# G( v+ l2 m$ {9 B
|
|