苹果要用Swift语言颠覆传统编程

Swift可以在不牺牲程序运行速度的前提下使开发者更为高效的编写代码。

苹果要用Swift语言颠覆传统编程

氧分子网科技讯 美国知名科技媒体《连线》日前对从市场前景、核心优势和竞争对手等方面对苹果最新推出的Swift编程语言进行了一番全面剖析。文章认为,虽然Swift作为后来者面临着诸如Objective-C、C++这类语言以及谷歌(微博)、Facebook这些企业的前后夹击,但Swift自身的巨大优势以及苹果设备在开发者心目中的巨大影响力,还是为其赋予了能够颠覆传统编程模式的巨大潜力。

以下是文章主要内容:

知名开发人克里斯-莱特纳(Chris Lattner)此前花费了一年半的时间在一款全新编程语言的开发工作上。在这段时间内,他没有将自己的工作内容向任何一个人透露过。这个项目是在2010年的夏天正式展开的,当时的莱特纳几乎每个周末和晚上都扑在这个项目中,到2011年底这个全新编程语言的基本架构终于成形。

也就是在那个时候,莱特纳决定把这个秘密项目告诉公司高管。在深入了解了这一项目后,这些高管认为该项目非常有潜力,并特地为其指定了数名有经验的工程师协助开发。在18个月后,该项目已经成为了该公司最重要的项目之一,大量工程师都参与到了这一项目中,且公司认为这是一个有可能彻底颠覆传统电脑编程流程的全新语言。

众所周知,这个项目就是Swift编程语言,而莱特纳则是目前苹果开发者工具部门总监。

今年6月2日,苹果首次针对广大开发者放出了Swift编程语言的测试版本,并对外宣称这是一个能让开发者更快、更轻松为iOS设备编写软件的工具。莱特纳就读伊利诺伊大学厄巴纳-香槟分校时的研究生导师维克拉姆-艾夫(Vikram Adve)曾经同莱特纳一起开发了Swift语言的最基层软件平台,但就连他都不知道莱特纳竟然独自一人在这个编程项目上花费了如此巨大的心血。

“苹果实在太保密了,莱特纳也深受真传。我当时只知道他正在负责一个项目,但我并不知道这个项目的具体内容。”艾夫笑着说道。

通常来说,如果一款编程语言被刚刚编写完成后,它通常需要多年的时间才能拥有足够多的开发者用户,即便该语言拥有像苹果这样巨型企业的支持也不例外。举例来说,谷歌曾在2009年推出了一个名为“Go”的全新编程语言,虽然这一语言的开发者包括了诸如Unix操作系统联合开发者、同时也是C语言之父肯-汤普逊(Ken Thompson)以及前贝尔实验室研究员卢勃-帕克(Rob Pike)这些业内泰斗,但该语言直到目前还没有得到全球大多数程序员的认可。

但我们认为,Swift的命运将同Go截然不同,该语言甚至有可能在今秋正式发布后迅速得到业内的认可,并超过当年Java和C#语言的发展速度。这主要是因为该语言是一款面向普通开发者的编程语言,它拥有着无与伦比的易用性,即便是最初级的编程员都能够很快掌握该语言。同时,目前有许多的程序员都专注于为iOS平台编写应用,此前他们所使用的主要语言是Objective-C,但全新Swift显然比前者拥有更多优势,而这也就在一定程度上确保了该语言的使用基数。

“谷歌Go没有给予开发者足够的理由去采用这一语言,而Swift却并非如此。人们会争先恐后的拥抱这一全新语言,因为它的编程流程相比Objective-C更为简单。”专注于全球编程语言动态的Tiobe公司总经理保罗-詹森(Paul Jansen)说道。

目前,尽管Swift还处于自己的测试阶段,但代码托管网站GitHub上已经有超过2400个项目基于Swift代码开发。本月,Swift还登上了Tiobe发布的全球讨论率最高编程语言第16名的位置。需要指出的是,当谷歌在2009年推出Go语言的时候也曾取得过类似的成绩,但该语言随后在Tiobe上的排名便一落千丈。然而,詹森认为这样的情况恐怕不会在Swift身上重演。

“因为Swift处于苹果生态系统的最核心地位,而他们只要不将其搞砸就可以了。”C++语言领域的泰斗级人物安德烈-亚历克斯德苏(Andrei Alexandrescu)说道。

苹果要用Swift语言颠覆传统编程

未来前景

目前,莱特纳是苹果开发者工具部门总监,他的主要工作是负责管理所有可以让苹果工程师和开发者为公司设备编写程序的工具。在此之前,莱特纳曾主持开展了构架编译器框架系统LLVM的开发工作,而LLVM也恰恰是目前苹果开发工具Xcode的基础架构平台。

2005年,莱特纳加盟苹果,并开始致力于LLVM在苹果开发体系中的应用。同时,苹果也一直是LLVM计划的主要资助方之一。我们曾在撰写这篇文章时向莱特纳提出了采访邀请,但后者表示只有得到苹果公关部门的批准才能接受采访。不过,莱特纳还是在自己的博客中简单谈到了这个项目的开展初衷,那就是他希望Swift能够同苹果现有开发工具兼容,甚至可以让开发者在使用Objective-C的同时使用Swift。

平息而论,苹果仍然需要提供更加充足的理由来鼓励开发者从Objective-C转投Swift平台。毕竟,现有开发者大都从未接触过Swift。

“我是第一个、也是目前唯一一个拥有四年Swift使用经验的开发者。”莱特纳在Twitter上这样说道。

对此,已经为苹果各类硬件产品编写了15年程序的资深开发人员麦克-阿什(Mike Ash)也承认:“大多数全新编程语言都会止步不前,少数获得开发者青睐的语言通常也需要经历许多年的过渡时期。”

但话虽如此,阿什目前已经开始利用这一全新语言编写应用了。因为虽然Swift并见得比诸如C#、Ruby、Python优秀多少,但它还是相较于上世纪80年代问世的Objective-C有着太多的优势。当下,许多程序员都认为Objective-C句法规则太过怪异,而Swift的设计则更加贴心,并内置了许多可以帮助开发人员的实用纠错工具。

核心优势

在Swift语言中,最为出彩的功能或许就Playgrounds了。该功能提供了不可思议的互动效果,能让Swift代码在编写过程中实时进行编译和效果显示。最为重要的是,这一服务能够使开发者的编程变得更具效率,同时帮助Swift和其他编程语言展开差异化竞争。

苹果要用Swift语言颠覆传统编程

目前,诸如Objective-C、C++这类语言通常要求开发者首先编写好代码,等待编撰器将代码转换为可执行的软件程序,然后开发者才能够操作这一可执行软件。而诸如Python、Ruby和PHP这些语言则允许开发者在编写代码的同时测试自己的软件,但该软件的实际运行速度却会大打折扣。

然而,Swift的出现就彻底解决了上述两者的不足,该语言可以在不牺牲程序运行速度的前提下使开发者更为高效的编写代码。

“Swift是一个对开发者和设备都非常友好的语言,虽然这一语言的实际表现还有待测试,但苹果到目前为止的工作成果看起来相当了不起。”麦克-阿什这样说道。

市场竞争

需要指出的是,苹果并非是唯一一家试图在编程领域掀起波澜的企业,包括谷歌、Facebook、Mozilla这些公司也都在研发自己的编程语言平台,且其中部分语言甚至已经比Swift取得了更大的成就。比如,谷歌已经利用Go语言重新定义了自己的内部工作流程,而Facebook则利用旗下开源编程语言“Hack”重新打造了自己的大量在线服务。

更为重要的是,以上这些企业所推出的编程语言大多是开源的,这就意味着它们或将可以更容易面向全球开发者进行推广。然而,Swift并不是一个开源编程语言(至少目前还不是)。同时,考虑到苹果一贯的软硬件高度控制的做法,外界对于该公司政策是否会对Swift的未来推广构成负面影响也持有保留意见。

“目前业内对于苹果是否会限制该语言的前进方向存在着一定的担忧,就比如该公司是否会允许开发者利用其编写跨平台代码等。”阿什解释道。

不过,阿什相信Swift的开源化将只是时间问题而已,因为克里斯-莱特纳从来都是编程开源理念的支持者,他此前所开发的轻量级编译器Clang就是一个最好的例子。当然,即便Swift始终处于苹果的严格管控之下,我们也认为该语言的开发者采用率也将超越近年来所推出的任何一个编程语言,因为这就是诸如iPhone、iPad和Mac这些设备施加在开发者身上的魔力所在。

您可能还喜欢…

1 Response

  1. 池建强:人生苦短,我用 Python说道:

    很久没有挖一个坑转身离去之后,坑边的群众久久驻足不愿离去,不停的冲着黑漆漆的坑底喊话「啥时回来啊~~」。行走江湖,讲究一个信字。Python 这一篇,来了。

    我和 Python

    我接触 Python 并不算早,第一次使用 Python 写生产系统的程序是2004年,那时候我已经有了几年的编程经验。当然了,现在这年头说早晚都不合适,昨天我说2000年就开始使用 Vim 编程了,有小伙伴回复,那年我才12,这……多少有点尴尬。

    早期用 Python 主要写一些服务器端的工具,后来也写后端服务,再后来还写过内容抓取、数据分析和 Alfred 的插件等一系列杂七杂八的东西,简单的工具用 Shell 写,复杂的和庞大的用 C 或 Java 实现,中间的三不管地带,用 Python 就好,每次都不会让你失望。2005到2006年那段时间我参加了一个类似 Corba 的分布式应用系统的开发,与国外的程序员合作,写了大量的 Python 代码。

    Python 有什么好处?功能强大,使用简单,语言唯一性的特征明显(唯一性的意思就是你不能用十八种写法实现一个功能),而且具备海量的第三方库……Python 程序员最爱说的一句话是:人生苦短,我用 Python(也是 Python 之父的名言)。这句话与「PHP 是世界上最好的编程语言」一样并世无双,可谓「倚天不出,谁与争锋」。

    Python 支持交互式编程、面向对象编程、函数式编程、面向切面编程、当然还有元编程。目前这门编程语言在兵器谱的排名是第四,前三位分别是Java、C 和C++。江湖上人称四哥的,就是 Python。

    Python 起源

    Python 之父是 Guido van Rossum,荷兰人。每个编程语言的作者都是一个技术传奇,Guido 也不例外。他1982年从阿姆斯特丹大学毕业,获得了数学和计算机两个硕士学位,最爱做的事情就是编写代码。那个时代,流行的语言是汇编、C、Fortran 等,这些语言要求编程者对计算机的运行机制有精确的了解,以充分利用硬件资源达成自己的目标,因为硬件资源实在是太匮乏和宝贵了,程序员们需要榨干计算机硬件的每一滴血和汗才能完成任务。

    这给 Guido 带来很多困惑,用 C 实现个功能吧,完成度没有问题,但是需要耗费大量时间。用 Shell 吧,面对复杂问题又束手无策。Shell 是 Unix/Linux 下的脚本语言,也叫胶水语言,它可以把系统的各种功能通过管道(比如:find . -name “*.java” | xargs grep chjq)的方式连接起来实现系统运维、定时任务、文件处理、程序安装卸载等工作,但是处理复杂的数值运算或系统调用就很麻烦。这时候需求就来了,Guido 希望一门语言既能像 C 语言一样能够全面掌控计算机的资源,也能像 Shell 一样使用简单,还具备交互性编程能力,轻轻松松编写一些小的工具包。

    普通人 —— 比如我 —— 有了这种需求就会对自己说,再等等,也许隔壁冯老师会做出来呢。冯老师的想法就更简朴了,我又不写代码,关我什么事。幸好 Guido 没这么想,Guido 对自己说的是,放着我来!

    1989年的冬天,Guido 为了度过一个有意义的圣诞节,或者为了打发一个无聊的假期,开始编写 Python 语言的编译器和解释器,灵感来自教学语言 ABC(你不知道还有这种语言吧)。为什么叫 Python?因为 Guido 很喜欢 BBC 电视剧 —— 蒙提·派森的飞行马戏团(Monty Python’s Flying Circus)。ABC 则是由 Guido 参加设计的一种教学语言。Guido 一直认为 ABC 这种语言非常优美和强大,是专门为非「专业程序员」设计的。但是 ABC 语言并没有成功,究其原因,Guido 认为是非开放造成的。Guido 决心在 Python 中避免这一错误,这一次他成功了。

    1991年,第一个 Python 版本诞生,编译器是 C 语言实现的,Python 语言可以非常方便的调用 C 语言实现的库(这一点太重要了)。从一问世,Python 就是一个动态语言,面向对象编程的语言,具备类、函数、异常处理、列表(list)、词典(dict)、元组等数据类型。

    Python 的语法同时受到了 C 和 ABC 语言的影响,比如采用 def 来定义函数,比如等号赋值,比如强制缩进。如果你是个 C 或 Java 程序员,习惯了用大括号来划分程序域 —— 其实大部分语言都是这么做的 —— 看到 Python 是用缩进来搞定这件事,你马上会觉得「Holy shit」,其实这种做法来自 ABC,Guido 的想法是,如果「常识」上确立的东西,没有必要过度纠结。当然,这种常识是 Guido 的常识,至于其他人,你们会习惯的。

    事实也是如此, Python 吸引了大量的程序员,他们开始协同改进这门语言,Python 开始了改变世界的征程。

    2000年10月16日 Python 2.0 发布,这次增加了实现完整的垃圾回收,并且支持 Unicode 编码。Guido 在开发的过程中一直遵循了开放的原则,社区协作的模式从最初的邮件列表改为开源的方式,Python 吸收了大量开发者和编程语言的特点,比如,Python 中的正则表达参考了 Perl,而内置函数 lambda,map,reduce,filter 等则参考了 Lisp,无数优秀的程序员为 Python 添砖加瓦,Python 搞不定的,没关系,我们用 C 实现,于是 Python 有了大量的函数库,尤其在数据分析和科学计算领域。另外,函数在 Python 中是一等公民,所以 Python 同时也是一种函数式编程语言。

    Python 稳步发展,成为了一代老牌编程语言。

    Python 的应用

    每个编程语言都有自己的 Hello World,Python 最为简单。如果你有台 Mac 电脑,Python 的 SDK 是默认安装的。打开终端,输入 python 进入 python shell 的交互界面,然后键入

    >>> print “Hello World”

    程序写完了。

    Python 这么简单,是不是一门玩具语言呢?当然不是。NASA 的火箭发射仪表盘系统使用了 Python 的 Tkinter —— 支持实时响应的 GUI 库。NASA 的太阳物理学分词库 SunPy 也是基于 Python 写的。YouTube 基于开发速度的考虑,大部分代码是 Python 实现的,YouTube 的流量有多大,老百姓不知道,程序员应该知道。Google、Dropbox 更是大量采用 Python 语言(Guido 工作过的两个地方)。国内的豆瓣、知乎也是 Python 的重度使用者。

    虽然 Python 已经被广泛使用了,但前几年它在兵器谱上总是排 8-12 的位置。最近两年事情开始发生变化,去年 Python 开始迅速攀升至第五名,今年更进一步,排名第四。为什么会发生这种变化呢?并不是 Python 增加了什么了不得的特性,而是人工智能和机器学习的时代来临了。

    AI 时代的 Python

    我来做一个不负责任的判断,Python 将成为大数据、AI 和机器学习时代的第一编程语言。可以想象这样一个场景,Python 和 Java、Go、C、C#、Ruby、PHP……坐在圆桌前开会,Python 抱着头后仰在 Herman Miller 工程椅上,慵懒的对其他编程语言说:

    对不起,我不是针对你,我是说,所有在座的各位,都只能挣第二。

    当然了,这个语言范畴是限定在大数据、AI 和机器学习领域。但是,如果这个领域在未来的应用足够广泛,那 Python 直接灭掉 Java 当大哥也不是不可能的。

    Python 性能这么差,对多核并发编程支持的也不好,并且长期分裂成了 Python 2 和 Python 3 两个阵营,给开发者带来了诸多不便和麻烦,为什么能后来者居上呢?

    因为 Python 遵循了现代的木桶原理。

    Python 的木桶原理

    我在自己的小密圈(目前已经涨价到128元,因为贵即是好)提了一个问题:为什么很多数据分析和机器学习的框架都会选用 Python 做主要的开发或首选支持的语言呢?

    一位女程序员颖儿的回答最靠谱:免费,简洁,生态好,库丰富,操心少;之前刷机器学习的题,用 C# 写了一坨儿。结果人家引个 SciPy 库,三行代码搞定。

    SciPy 是一个数值计算库,NumPy 是 Python 另一个开源的数值计算扩展库,Pandas 是基于 NumPy 的数据分析工具,matplotlib 是图形绘制库,最近火热的 Scikit-learn 则是开源的机器学习框架。这些库对于 Python 来说就三个字:「随便用」。长此以往,围绕 Python 语言构建出来的生态库让其他语言望尘莫及,尤其是在科学计算、数据分析和机器学习领域。

    以前我们说「木桶原理」是讲一只水桶能装多少水取决于它最短的那块木板,所以我们应该去思考和补齐自己的短板,才能成事。到了现代,知识爆炸信息拥堵,没人有时间去补齐短板,能够让自己的长板足够长就不错了。短板怎么办,找别人来补齐啊。能协作的组织和人才是最有生命力的。

    Python 也是一样。自诞生以来,一直保持了简单、开放、语言工业化,具备良好的封装、组合、嵌入能力,开发效率惊人。Python 把这些方面做到极致,其他的事情,留给别人去干嘛。

    你们不是觉得 Python 慢么,自然有人给开发出 PyPy、Cython、Jython、Numba 这样的编译器工具来提高 Python 的效率。要进行科学计算、大数据分析,好了,SciPy、Pandas 诞生了,要机器学习,scikit-learn、Theano、Pylearn2 等机器学习库开发出来了。Python 调用这些用 C 或者 Fortran 开发出来的库比原生语言调用还方便,你说大家能不用 Python 么?

    每当新事物来临的时候,总有很多专家里手对新手们竖起一道高墙,比如机器学习总被放到学术研究和 CS 科班出身这堵墙的后面,让人望而生畏。其实,机器学习这个领域,同样是个金字塔,这些专家和博士以及人工智能算法的创造者们,属于塔尖的极少数人,他们发现原理,实现算法,引领潮流,突破极限,然后呢?基于这些算法和原理开发应用和使用应用的,是广大的程序员和人民群众,他们可能没有那么高深的数学知识,不知道 Regression 和 Decision Tree 算法,不了解散步矩阵……那我们可以用 Python 调包啊,只要那些包足够成熟就好了。

    也许未来每个人与机器沟通的每一句话,就是唤起了一段 Python 代码呢?

    Python 的分裂

    Python 2 和 Python 3 已经长期共存了数年之久,原因很复杂,对于这个话题,足够写另一篇文章了。目前官方表示对 2 的支持到2020年,但 2 的生态库远远大于 3,这就让人很纠结。

    关于该学哪个版本的常见问题,我的回复是,最好都学,语法区别并不是很大。

    人人都应该使用Python!

    文末推荐一下我们极客邦科技的大会:全球技术领导力峰会

    2017年6月30日 – 7月1日,第二届全球技术领导力峰会将在上海举行。GTLC 是极客邦旗下 EGO 主办的高端技术领导人盛会,主要面向 CTO、技术 VP、有技术背景的 CEO 及创业者等技术领导者。

    本届大会以「探索圆外的世界」为主题,邀请了蚂蚁金服、苏宁云商、平安科技、小米科技、网易、饿了么、WIFI 万能钥匙、点融网、易宝支付、摩拜、有赞、GrowingIO、UCloud 等诸多杰出互联网公司的顶尖技术领导者,这些技术人都是我所钦佩的。他们从「领导之道」与「管理之术」两个方向出发,为参会者奉上他们在技术之外,关于团队与管理、业务与行业、商业与战略以及成长等诸多领域的实战经验与思想体悟,带来极具借鉴价值的知识盛宴!

    汇聚业内技术领袖、奉上精彩内容的同时,GTLC 还召集了 600+ CTO 参加大会,搭建了与同行者直面交流、深度探讨、开阔思维、拓展人脉的重要平台。

    如果您是一位技术 Leader,那么本年度唯一的一场技术领导力盛会不容错过。

发表评论

邮箱地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>