Swift编程语言的优缺点

截至2016年1月 ,iOS的使用设备超过10亿个,是全球第二大最受欢迎的移动平台。 在某些地区,包括美国,英国和法国,苹果设备的智能手机销量继续超过Android。 这就是为什么如此多的企业将其软件产品主要且有时仅专注于iOS平台作为主要投资机会和战略利益的原因。

如果您是遵循iOS应用程序开发道路的明智企业主之一,那么您可能要做出的最重要的决定就是为产品选择合适的技术堆栈。 如果您决定进行本机开发而不是跨平台解决方案 ,则仍然必须决定使用哪种语言:旧的Objective-C或全新的Swift。

什么是Swift,为什么要使用它?

Swift是适用于iOS,macOS,watchOS,tvOS和Linux应用程序的已编译编程语言。 这是您需要了解的有关Swift的知识。

由苹果公司于2014年创建。在全球最有影响力的科技公司之一的支持下,Swift将成为iOS开发及以后的主流语言。

开源。 Swift的创造者承认,为了构建一种定义性的编程语言,该技术需要向所有人开放。 因此,在成立后的三年内,Swift获得了庞大的支持社区和大量的第三方工具。

安全。 它的语法鼓励您编写简洁一致的代码,有时甚至会变得严格。 Swift提供保护措施以防止错误并提高可读性。

快速。 Swift是在考虑性能的基础上构建的。 它的简单语法和手持功能不仅可以帮助您更快地开发,而且还名副其实: 如apple.com所述 ,Swift比Objective-C快2.6倍,比Python快8.4倍。

在需求中 。 截至2018年3月,它是最受欢迎的语言排名第12位 ,超过了Objective-C,Go,Scala和R.在GitHub上有超过4万颗星标和187K个StackOverflow问题,这门年轻的语言正确地成为了行业中的主导技术之一。

继续阅读以了解有关该技术的更多信息,或者,如果您想直接使用Swift进行开发,请访问以下链接:

在Swift官方社区网站上下载和阅读文档
下载Xcode IDE在MacOS上开始使用Swift
访问GitHub上的Swift存储库以贡献或深入研究语言使用的技术细节
通过iPad上的交互式Swift Playgrounds学习Swift
通过在StackOverflow上提问和回答Swift问题与其他开发人员建立联系

Swift语言简史

2013-2014年-创作和发布

自从Apple在2014年全球开发者大会(WWDC)上首次提出以来,Swift编程语言就引起了广泛的争论。 苹果公司开发工具部门高级总监Chris Lattner于2010年开始设计新语言的基本概念。

最初,实际上只是我在四处乱逛,没人知道它,因为这没什么可知道的。 但是最终,它变得更加严重了[…]所以我开始与我的管理层和一些从事Clang工作的工程师进行交谈,他们对此感到兴奋。 我们有几个人在兼职工作,我让我的经理确信这很有趣,我们可以有几个人在做它。

–克里斯·拉特纳(Chris Lattner),《 意外技术播客》 ,2017年1月

直到2013年,团队才能够解决有关新语言如何与现有Objective-C生态系统相适应的战略问题。 强迫所有iOS开发人员改用新语言可能会对社区造成重大破坏性影响。 因此,该公司决定继续对Objective-C进行投资,同时还致力于开发一种新的“ 安全编程语言”。

一年后,注册的Apple开发人员便可以使用新语言的Beta版本。 据蒂姆·库克(Tim Cook)称 ,作为Xcode工具的一部分发布后的第一个月,它被下载了超过1100万次。

对Swift的最初反应充其量是混合的。 一些开发人员对其功能,灵活性和简单性感到高兴,而另一些开发人员则对此表示批评。 然而,大多数人都认为,将Swift投入生产还为时过早。 语言发展迅速:每个新版本都引入了重大更改。

但是,根据2015年StackOverflow开发人员调查 ,这并没有阻止Swift成为“最受欢迎的”技术。

同时,该语言被列为十大“最受欢迎”技术之一。

2015年—开源

自从苹果公司在2015年决定将Swift设为一种开放源代码语言以来,它的增长就非常巨大。 宣布后的第一周,有超过60,000人克隆了Swift项目。 根据TIOBE Index的数据 ,两年后的现在,Swift正式成为历史上增长最快的语言:该语言在2017年3月排名前十。

该语言向所有人免费开放,并且随着其最新版本Swift 4.0(于2017年9月发布)而迅速发展。在为OSX构建桌面应用程序甚至作为服务器端技术时,该语言已在iOS开发中得到了积极部署。 ,感谢IBM。

Swift在如此短的时间内如此受欢迎的原因之一可能是它由Apple制造的事实。 当一家拥有如此全球知名度并拥有数百万忠实拥护者的公司做某事时,它就注定要取得成功(或至少具有良好的新闻报道)。

现在,让我们仔细看一下Swift附带的关键优缺点。 您应该对这种语言有什么了解? 准备好用于生产了吗? 构建Swift应用程序会涉及哪些风险? 我们从使其成为开发人员宠儿的优势开始。

使用Swift进行iOS本机开发的优点

Swift语言通常被称为“没有C的目标C”,在很多方面都比其前身优越。 根据官方新闻稿 ,“ Swift将编译语言的性能和效率与流行脚本语言的简单性和交互性结合在一起。 ”除了技术细节和营销之外,让我们从业务角度看这到底意味着什么。

快速发展过程

Swift是一种简洁明了的语言,具有简化的语法和语法,易于阅读和编写。 非常简洁,与Objective-C相比,执行同一任务所需的代码更少。 自动引用计数(ARC)负责跟踪和管理应用程序的内存使用情况的所有工作,因此开发人员无需花费时间和精力进行手动操作。 因此,使用Swift来构建iOS应用程序通常需要更少的时间。

新的Lyft应用程序就是这种优势的一个生动例子:该公司完全使用Swift重写了其iOS应用程序 。 虽然旧的代码库由大约75,000行代码组成,但是Swift版本使用不到三分之一的代码重新创建了相同的功能。 而且,该应用程序现在采用了新的入职流程:虽然旧的耗时一个多月且需要多名工程师来实施,但Swift的新入职仅一周内就由一名工程师完成。

更容易扩展产品和团队

除了缩短开发时间外,您还将获得一种面向未来的产品,并可根据需要使用新功能进行扩展。 因此,Swift项目通常更易于扩展。 苹果公司比Objective-C更可能支持Swift的事实也应得到长期投资的认真考虑。

此外,Swift允许您在需要时向团队中添加更多开发人员:由于代码库的简单性和简洁性,入职速度相对较快。

改善安全性和性能

顾名思义,Swift就是……好吧,迅速。 着眼于性能和速度,该语言最初被设计为优于其前身。 即,与Objective-C相比,初始版本声称性能提高了40%。 多年来,个人开发人员进行的多个基准测试已证明了这一点。 此外,有许多方法可以优化Swift代码以获得更好的性能。

图像来源— AppleInsider Live博客

Swift的另一个强项是安全性。 其强大的键入系统和错误处理功能可防止代码崩溃和生产错误。 因此,Swift的反馈循环更短,可让您立即查看代码中的错误并即时进行修复,从而大大减少了错误修复所需的时间和精力,并消除了部署低质量代码的风险。

减少内存占用

在构建应用程序时,您会使用许多第三方代码,这些代码是可重用的,并且经常是开源框架或编译为应用程序代码的库。 这些库可以是静态的,也可以是动态的(或共享的)。 Swift首次在iOS上推出动态库。 您可能会猜到, 静态库在编译时已锁定在代码中,成为可执行文件的一部分,从而增加了其大小和加载时间。 由于它们停留在您编译时的版本中,因此也无法自动更新。 另一方面, 动态库位于代码之外,并且仅在需要时上载。 静态库需要在程序的所有文件中都有副本,而动态库只需要一个副本。

尽管从外部获取动态代码要比在调用动态代码时花费更多的时间,但是当您想要隔离不应该共享的应用程序时,您可以选择继续使用静态库。

与Objective-C的互操作性

Buffer的iOS开发人员Jordan Morgan在其Medium文章中写道:“ […] swift是新玩具,被标记为未来。 Objective-C正在显示它的年龄,并且最终将不那么普遍。 但是在现在和现在,两者必须学会和平共处。 ”因此,在同一项目中使用这两种方案可能有两种:在Swift中向现有的Objective-C代码库添加新功能,或在新的Swift项目中使用Objective-C元素。

无论哪种方式,Swift语言都与Objective-C完全兼容,并且可以在同一项目中互换使用。 这对于正在扩展或更新的大型项目特别有用:您仍然可以利用Swift利用现有的Objective-C代码库添加更多功能。 因此,移植过程变得更容易且更无风险。

自动内存管理

Swift使用自动内存计数(ARC)-一种旨在添加垃圾收集器功能的技术,该功能以前未在iOS中引入。 诸如Java,C#和Go之类的语言使用垃圾回收器来删除不再使用的类实例。 它们对于减少内存占用非常有用,但最多可增加20%的CPU。 在使用ARC之前,iOS开发人员必须手动管理内存,并不断管理每个类的保留计数。 Swift的ARC确定不再使用哪些实例,并代表您删除它们。 它可以让您提高应用程序的性能,而不会滞后于内存或CPU。

完整的堆栈潜力和跨设备支持

迄今为止IBM的积极推动下,将语言部署到云中的计划非常成功。 服务器端Swift集成了大多数流行的后端技术。 就像在全栈Javascript开发中一样 ,在应用程序的后端和前端同时使用Swift可以实现广泛的代码共享和重用,从而加快了开发过程并减少了开发工作。

此外,Swift不仅为iPhone和iPad提供开箱即用的支持,而且还为包括Apple TV,Apple Watch和Mac在内的所有Apple设备提供开箱即用的支持。 除此之外,已经支持Linux,并打算将其正式移植到Windows平台。 甚至有传言称Google将放弃Java而支持Swift作为Android开发的一流语言。 但是,Google I / O最近发布的公告显示Kotlin是Android的未来

充满活力的开源社区和学习能力

该语言的下一个版本Swift 5.0 将于2018年底推出 ,许多预期的功能将解决大多数当前问题,例如大量的回调代码和有问题的Cocoa SDK集成-Apple最初为Objective-C创建的API。 该公司为使Swift不仅成为所有Apple设备的主要语言,而且还为构建Web服务器,Linux和Android应用程序的不懈努力,证明了它将成为市场上最受欢迎的技术之一。

正如苹果公司软件工程高级副总裁克雷格·费德里希(Craig Federighi) 所说:我们认为开源是使Swift发挥其潜力的关键要素,这是该语言是我们行业未来20年编程的主要语言。”

确实,在Apple和I​​BM的大力支持下,Swift迅速赢得了最活跃,最活跃的开源社区之一。 前面提到的采用趋势就是恰当的例子。 此外,Swift是GitHub上最受欢迎的语言,其次是Google的Go。

对于这么年轻的语言,Swift肯定有足够的资源来帮助开发人员加快采用速度。 除了官方的电子书之外,还有大量的社区指南,播客,在线甚至现实生活的课程 ,第三方应用程序,当然还有Swift Playgrounds ,这是Apple的游戏化学习体验。

来源— github.com

Swift编程语言的缺点

尽管似乎有很多理由喜欢Swift,但该语言仍远非完美。 在切换到新语言时,许多开发人员和企业所有者都过于谨慎。 有几个原因。

语言还很年轻

Swift可能是世界上最快,最强大的语言,但还太年轻。 它具有许多需要解决的问题,并且需要经历“越来越大的麻烦”。 毕竟,三年对于任何一种语言来说都是很少的时间,即使它是Swift。

而且,Swift的“本机”库和工具数量仍然非常有限:许多专用于早期Swift版本的可用资源和工具对于较新版本来说是无用的。

斯威夫特被认为是“移动目标”

也就是说,由于每个新发行版都进行了重大更改,因此通常认为Swift不稳定。 许多开发人员指出的关键问题之一是与较早版本的语言缺乏向后兼容性。 因此,如果开发人员想要切换到最新的Swift版本,则不得不完全重写其项目。

虽然Xcode提供了一种工具来帮助开发人员将Swift代码更新到较新的版本,但它并不能解决所有问题。 因此,将您的项目移植到较新的Swift版本可能既耗时又昂贵。 Xcode IDE和Swift 4.0的最新更新通过支持从Swift 3.2开始的所有版本,部分解决了此问题。 您还可以分别编译每个目标,以防某些第三方库尚未更新。 尽管您仍然需要对代码进行一些手动更新-Apple的SDK也进行了一些更改。 如果您有一个非常大的项目或者您不打算经常更新的项目,那么至少在目前,Swift可能不是您的最佳选择。

人才库有限

尽管Swift社区发展迅速,但与其他任何开放源语言相比,它的规模仍要小得多。 根据最新的StackOverflow开发人员调查 ,在78,000名受访者中,只有8.1%使用Swift。 同时,全球自由职业市场Upwork.com发现,对Swift程序员的需求正在增长,这可能会导致人才缺口。

尽管那里没有很多Swift开发人员,但是只有很少的开发人员具有使用该语言的实际经验。 可能只有一个人拥有Swift的这种经验,但是特斯拉已经抢夺了这位球员的名册

与第三方工具和IDE的互操作性差

如上所述,很大程度上是由于频繁的更新和缺乏向后兼容性,通常很难找到合适的工具来完成某些任务。 而且,官方的Apple IDE XCode在工具和对Swift的支持方面落后。 开发人员经常报告语法突出显示,自动完成,重构工具和编译器的问题。

缺乏对早期iOS版本的支持

您只能在针对iOS7及更高版本的应用中使用Swift。 也就是说,Swift不能用于在较旧版本的操作系统上运行的旧项目。

但是,根据最近的研究,目前只有不到5%的Apple设备运行iOS8或更早版本。

资料来源— david-smith.org

与Swift一起使用的IDE

IDE(集成开发环境)是与语言进行交互的要点。 在这里,我们将讨论可用于Swift的IDE。

Xcode。 如上所述,使用本机Apple IDE Xcode使用Swift并不总是最佳选择。 在大多数情况下,Xcode就足以用于Swift工程。 它具有方便的界面,自动完成支持以及许多其他使Swift工程顺利进行的功能。 但是,如果您还需要使用HTML,CSS和JavaScript,则Xcode将变成一个简单的文本编辑器,缺少Objective-C和Swift可用的工具。

原子。 Atom文本编辑器和IDE由GitHub创建。 如果将普通的iOS开发与其他平台和语言结合起来,就会很闪耀。 尽管Atom本身是基本的,但它具有由GitHub社区构建的大量开源程序包,这些程序包使您可以自定义IDE,以实现自动完成,高级导航和其他有用功能的跨平台和多功能开发。

AppCode。 适用于iOS和macOS开发人员的IDE是由JetBrains设计的。 该产品旨在通过提供一些类似于Android Studio中可用的重构工具来提高开发性能。 这也许是您可能会考虑在Xcode上考虑AppCode的主要原因之一。 不幸的是,与Xcode相比,AppCode与Swift的功能仍然有限,缺少情节提要,应用验证和提交。 最重要的是,AppCode附带了订阅费。

虽然您还可以考虑使用Visual Studio和其他一些Swift的IDE,但是要首先检查这三个,因为它们中的每一个都提供使用此语言的独特好处。

通过Swift的Objective-C? 比较用例

在编程语言之间做出选择的很大一部分是您团队的经验和编程偏好。 如果您有熟练使用Objective-C的开发人员,那么将他们全部迁移到Swift可能不是一个选择。 让我们打开包装,在这种情况下,您可能希望通过Swift坚持使用Objective-C。

旧操作系统版本支持

作为一种新语言,Swift仅支持iOS 7和macOS 10.9或更高版本。 如果您有理由构建应在较旧版本上运行的应用程序,那么除了使用Objective-C之外,您别无选择。

时间紧迫

学习一种语言,即使是像Swift这样的简单语言,也需要很多项目所缺乏的时间和精力。 如果您不愿意在团队成员对Swift感到满意之前就推迟发布应用程序,则应该考虑坚持使用ObjC。 如果时间允许,考虑到苹果公司不打算停止其发展,从长远来看,学习Swift绝对是有益的。

大项目规模

Swift很年轻,这就是为什么较小的应用程序可以更轻松地获取更新的原因。 在缺点部分,我们提到了在每个版本中重写程序都很困难,因此,在此问题完全解决之前,您不希望冒险进行一长串更改。

使用C或C ++第三方框架

作为C的超集,Objective-C使您能够舒适,顺畅地使用C和C ++库。 尽管仅需要很少导入C ++文件的情况,但您应该意识到Swift不支持该文件。

Swift可以成为iOS开发的未来吗?

尽管年纪轻轻,而且引起争议,但Swift已经有了许多杰出的成功案例。 选择了新语言的公司包括Lyft,LinkedIn,Coursera,Pandora,Vimeo,Twitter,Fitbit和Groupon。 此外, 据报道 ,Facebook和Uber对Swift表现出了极大的兴趣。

随着新的,据说更稳定的Swift版本计划于今年晚些时候发布,有望解决许多列出的缺陷。 因此,迅速通过将继续增长,很快可能导致的Objective-C为龙头的一流语言为iOS完整的位移移动应用程序的开发

对于企业主而言,至关重要的是要为市场可能发生的任何变化做好准备。 因此,准备以最小的努力和合理的成本切换到新语言将是不久的将来的关键策略之一。

这篇文章是我们“善与恶”系列的一部分。 有关最流行技术的利弊的更多信息,请参阅该系列的其他文章:

角度发展的好与坏

无服务器架构的优缺点

Xamarin移动开发的好与坏

JavaScript全栈开发的好与坏

Node.js Web应用程序开发的优缺点

ReactJS和React Native的优缺点

喜欢这个故事吗? 拍拍我们,让更多的人可以找到它! 👏
最初发布在AltexSoft的博客上:“ Swift编程语言的优点和缺点”

From: https://hackernoon.com/the-good-and-the-bad-of-swift-programming-language-44bad24f659a

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值