编程语言不会死很容易,但开发商店坚持衰落范例。如果你是为移动设备开发应用程序,你还没有调查迅速、注意:迅速将不仅取代objective - C为Mac开发应用程序时,iPhone, iPad,苹果,和设备,但它也将取代C为嵌入式编程在苹果平台上。
由于几个关键特性,迅速有潜力成为创造身临其境的实际编程语言,响应迅速、面向用户的应用程序。
苹果似乎大的目标迅速。经过优化的编译器性能和语言的发展,它暗指迅速被“设计规模从“hello, world”到整个操作系统”斯威夫特的文档。而苹果尚未声明所有的目标语言,Xcode的发射6,操场,斯威夫特一起信号苹果的意图来简化应用程序开发和比任何其他开发工具链更平易近人。
这里有10个理由获得成功的游戏现在开始迅速处理。
1。斯威夫特是易于阅读
objective - C遭受的所有疣你期望从一个基于C的语言来区分关键字和类型从C类型,objective - C使用@符号引入新的关键词。因为迅速不是建立在C,它可以统一所有的关键字和删除前面的众多@符号特性objective - C类型或上肢的关键字。
迅速滴遗留约定。因此,您不再需要分号结束线或括号内环绕条件表达式if / else语句。另一个大变化是,不会互相嵌套方法调用导致支架地狱——再见,[[[]]]
。方法和函数调用在迅速使用行业标准以逗号分隔的参数在括号内。结果是一个更清洁、更富有表现力的语言,一个简化的句法和语法。
斯威夫特代码更像自然英语,除了其他现代流行的编程语言。这可读性更容易为现有从JavaScript程序员,Java、Python、c#和c++采取迅速进入他们的工具链——与objective - C的丑小鸭。
2。斯威夫特是更容易维护
遗产是阻碍objective - C, C语言的发展离不开发展。C程序员需要维护两个代码文件为了提高创建可执行的应用程序的构建时间和效率,要求携带objective - C。
迅速下降两个文件要求。Xcode LLVM编译器可以找出依赖性和斯威夫特1.2中自动执行增量构建。因此,分离的重复性任务目录(头文件)从身体(实现文件)是过去的事了。迅速结合了objective - c头文件(. h)和实现文件(. m)到一个代码文件(.swift)。
objective - c的两个文件系统对程序员额外的工作,它的工作干扰了程序员的大局。在objective - c中,你必须手动同步方法名称和注释之间的文件,希望使用一个标准的惯例,但这不是保证,除非团队规则和代码评审。
Xcode, LLVM编译器可以做幕后工作,以减少程序员的工作负载。迅速,程序员少做簿记和可以花更多的时间创建应用程序逻辑。迅速削减工作样板,提高代码的质量,评论,和功能支持。
3所示。斯威夫特是安全的
objective - c的一个有趣的方面是指针的方式——特别是零(空)指针——处理。在objective - c中,什么也不会发生,如果你试着用一个指针变量调用一个方法为nil(未初始化)。表达式或行代码变成无操作(操作),虽然它似乎是有益的,它不会崩溃,这是一个巨大的错误。任何操作会导致不可预测的行为,是程序员的敌人试图找到并修复一个随机崩溃或停止飘忽不定的行为。
可选的类型让零的可能性可选值很清楚在斯威夫特代码中,这意味着它可以生成一个编译错误编写糟糕的代码。这将创建一个短的反馈回路,并允许程序员代码与意图。问题可以固定为编写代码,这大大减少了大量的时间和金钱,你会把钱花在修复bug相关指针逻辑从objective - c。
传统上,在objective - c中,如果从一个方法返回一个值,它是程序员的责任文档返回的指针变量的行为(使用注释和命名惯例)。在迅速,可选的类型和值类型显式地清除的方法定义如果存在价值或者有可能是可选的(也就是说,值可能存在或可能是零)。
提供可预测的行为迅速引发运行时如果使用零可选变量。这个崩溃提供了一致的行为,它简化了的bug修复过程,因为它迫使程序员马上解决这个问题。快速运行时崩溃将停止在代码行零可选变量已经被使用。这意味着将固定或早或完全避免错误代码。
4所示。斯威夫特是统一与内存管理
迅速结合语言objective - c,从来没有。支持自动引用计数(电弧)完成整个过程和面向对象的代码路径。在objective - c中,电弧在Cocoa api和面向对象的代码支持;这不是可用的,然而,对于程序的C代码和api的核心图形。这意味着它成为程序员的责任来处理内存管理在处理核心图形api和其他低级api可用iOS。巨大的内存泄漏,程序员可以在迅速在objective - c中是不可能的。
程序员不应该思考记忆每一个他或她创建数字对象。因为弧处理所有内存管理在编译时,智力,会对内存管理而不是可以专注于核心应用程序逻辑和新特性。因为弧迅速跨越过程和面向对象的代码,它不需要更多的精神上下文切换为程序员,即使他们接触低层api编写代码——objective - c的当前版本的问题。
和高性能自动内存管理是一个已经解决了的问题,和苹果已经证明它能提高生产率。另一个副作用是,objective - C和迅速不受垃圾收集器运行清理未使用的内存,像Java, c#,或者。这是任何编程语言的一个重要因素,将用于响应图形和用户输入,尤其是在触觉设备像iPhone,苹果的手表,或者iPad(滞后是令人沮丧的,让用户感知应用程序坏了)。
5。斯威夫特需要更少的代码
迅速减少了所需的代码重复的语句和字符串操作。在objective - c中,使用文本字符串非常详细,需要很多步骤结合两条信息。迅速采用现代编程语言功能,如添加两个字符串加上一个“+”运算符,这是失踪在objective - c中。支持字符和字符串相结合这样的任何编程语言的基础,用户在屏幕上显示文本。
类型系统的迅速减少代码语句的复杂性——编译器可以找出类型。作为一个例子,objective - c程序员需要记住特殊字符串标记(% s
,% d
,% @
),并提供一个以逗号分隔的变量替换每个令牌。迅速支持字符串插值,这消除了需要记住的令牌,并允许程序员直接插入变量内联一个面向用户的字符串,例如标签或按钮标题。类型推断系统和字符串插值减轻事故的常见来源在objective - c中常见。
objective - c,把订单或使用错误的字符串标记会导致应用程序崩溃。再次在这里,迅速缓解你从簿记工作,转化为更少的代码编写(现在的代码更少容易出错),因为内联支持操纵文本字符串和数据。
6。斯威夫特是更快的
放弃遗产C约定大大提高迅速。基准代码性能继续指出,苹果公司致力于改善的速度迅速可以运行应用程序的逻辑。
根据灵长类动物实验室,流行GeekBench性能工具的制造商,迅速接近c++的性能特征12月的计算任务2014使用曼德布洛特算法。
2015年2月,灵长类动物实验室发现Xcode 6.3 Beta斯威夫特的GEMM算法的性能改善,大数组的内存限制而顺序存取的算法——1.4倍。最初的FFT实现——算法与随机存取内存受限的大型数组——2.6倍的性能提升。
进一步改进观察迅速通过应用最佳实践,导致一个FFT算法性能提高8.5倍(离开c++性能增益)只有1.1倍。的增强也使迅速超越曼德布洛特的c++算法仅为1.03倍。
斯威夫特是几乎与c++ FFT和曼德布洛特算法。根据灵长类动物实验室,GEMM算法性能表明,斯威夫特代码编译器不能vectorize c++编译器可以——一个简单的性能增益,可以实现快速的下一个版本。
7所示。少与开源项目名称冲突
objective - C代码所遭受的一个问题是缺乏正式对名称空间的支持,这是c++的代码文件名冲突解决方案。当这个名称冲突发生在objective - c中,这是一个链接器错误,程序不能运行。工作区存在,但他们有潜在的缺陷。常见的惯例是使用两个或三个字母前缀来区分objective - c编写的代码,说,Facebook和您自己的代码。
迅速提供了隐式的名称空间,允许相同的代码文件存在跨多个项目不会导致构建失败,需要像NSString(下一步——乔布斯从苹果公司被解雇后)或CGPoint(核心图形)。最终,这个特性在迅速使程序员更有效率,意味着他们不需要做在objective - c中存在的簿记。你可以看到斯威夫特的影响比如简单的数组,字典,和字符串而不是NSArray NSDictionary,和NSString出生的缺乏名称空间在objective - c中。
迅速,名称空间是基于目标代码文件属于。这意味着程序员可以使用名称空间标识符区分类或值。这种迅速的改变是巨大的。它极大地促进整合开源项目、框架和库代码。名称空间允许不同的软件公司创建文件名相同的代码,而不必担心开源项目集成时碰撞。现在Facebook和苹果都可以使用一个叫做FlyingCar目标代码文件。斯威夫特没有任何错误或构建失败。
8。迅速支持动态库
最大的变化迅速,并没有引起足够的关注从静态库,在主要版本更新(iOS 8, iOS 7,等等),动态库。动态库是可执行的代码块,可以与应用程序有关。这个特性允许电流迅速应用链接对新版本的语言随着时间迅速。
开发者提交的应用程序和库,两者都是与开发证书进行数字签名,以确保完整性(你好,国家安全局)。这意味着迅速可以进化速度比iOS,这是一个现代编程语言要求。修改库都可以包含在最新更新应用程序的应用程序商店,和一切工作。
动态库从未支持iOS直到迅速的推出和iOS 8,即使动态库一直在支持Mac很长一段时间。动态库是外部的应用程序可执行文件,但都包含在应用程序包从app Store下载。它减少了初始大小的应用程序加载到内存中,由于外部代码只有在使用有关。