现在是切换到 Swift 的合适的时机 英文时机吗

是时候适配&Swift&3&了吗——专访&LINE&iOS&开发工程师王巍
王巍(),江湖人称“喵神”,iOS 和 Unity3D
开发者,旅居日本,目前供职于 LINE,著有《》,同时也是翻译项目&的组织者和管理者,维护
VVDocumenter-Xcode 及 Kingfisher 等开源项目。
对于众多 iOS 开发者来说,提升技能最多关注的非与(以下称“喵神”)的博客莫属。印象里的喵神是当之无愧的「三好」,比如在今年的
WWDC 即将开始之前,喵神便特地为初次参会的开发者写了。而即使是我这个技术渣去请教他各种问题,也会耐心细致地解答。除却技术问题本身,笔者也很想知道,在日常的项目开发中,喵神是否也会碰到一些让他颇感头疼的问题,结果他是这样说的——“技术上的问题倒是都不难解决,最困难的还是和人交流”。不禁让我想起了热爱写代码、玩游戏、读书而不太乐于交流却在不久前被我强拉着说了几个小时话的
YYKit 作者&。
去年 MDCC 移动开发者大会便曾邀请在日本的喵神回国分享,然彼时因刚荣升奶爸,牵挂家人未能成行。而今年,在 MDCC
再次发出邀请时,他欣然应允,并与我们一起共同策划了整个 iOS 开发峰会,希望能够为国内的 iOS
开发者们带来「高质量且实用」的新技术与成熟项目的经验分享与实操演示。
而这次的采访一方面源于&,另一方面,也是基于目前在 iOS 开发者群体中所面临的棘手问题,比如:
- 11W 行的代码来适配 Swift 3 是一种什么样的感受?&
- 感觉自己被掏空。。。&
- ∑(O_O;)
这是一段真实的对话,主人公是国内一个非常有格调的美食类 App 的 iOS 负责人。在 Swift 3
发布后,他们的团队便率先开始了对于 Swift 3
的适配,然而,「被折腾得死去活来」是他的原话,语法改完,依然跑不起来。而笔者在与多位 iOS
工程师朋友交流时,也发现,苹果简直让全世界的 iOS 开发者与 Swift 谈了一场「虐恋」。于是,我便带着他们当前所面临的以
Swift 3 为主的问题请教了喵神。
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/maxwidth.800/tc./img_blog_csdn_net/90a7bc98dbcfd9e047bb.jpg" ALT="I love Swift! (Design by MWJ CSDN)" DATA-ORIGIN-SRC="http://img.blog.csdn.net/57663"
TITLE="是时候适配&Swift&3&了吗&&专访&LINE&iOS&开发工程师王巍" />
请分享一下您当前正在做的事情。
王巍:正在将我的几个 Swift 写的开源项目(比如&&和&)进行
Swift 3 适配。Swift 3 中 API Guide 和很多现有的内容都发生了改变,所以进行版本适配需要花不少精力。
在日常的开发中,您有遇到哪些比较头疼的问题,以及如何解决的?
王巍:技术上的问题倒是都不难解决,最困难的还是和人交流。比如如何与策划或者设计人员协调,如何合作来打磨用户满意,维护方便的优秀项目,是比大多数技术问题要困难的挑战。
目前在 iOS
开发上您有哪些特别关注的技术?正在深度研究的是?
王巍:自从去年 WWDC 以来,一直对面向协议编程和 Swift 中的泛型应用很感性去。现在正在挖掘泛型和
Cocoa 到底能够融合到什么样的程度,这个新的编程范式是否能够很好地用在 App 开发中。
在日本以及 LINE
公司工作,有哪些深有感触的事情?比如技术层面、团队氛围等方面。
王巍:&日本的开发团队在技术上可能没有太多能值得称道的地方,但是团队里开发者的认真和严谨确实是让人佩服。相对来说,LINE
的组织架构比较扁平,工程师之间,工程师与策划或者设计之间,都是直接进行交流。这种时候开发文档和企划书就尤其重要。而日本不少开发者能够做到丝毫不差地按照开发文档交付项目,专业态度非常好。
现在还不到实际项目适配Swift 3的时候
请问您对于今年 WWDC 上 Swift 3
升级有着怎样的看法?
王巍:&Swift 3
是这门语言开源后的第一个大版本,这次更新的幅度远超以往任何一次升级,也可以预见,之后 Swift
的变化也不再可能像这次这么大的幅度。综合来说,Swift 的开发团队想要在新版本中解决从 Objective-C
转换中最后的一些遗留问题。同时,在开源社区的帮助下,很多开发团队没有考虑到的细节也得到了完善。Swift
的开源带来了社区对这门语言更深入的了解,以及更迅速的进化。Swift 3 的更新的方向也十分令人激动。
您如何看待 Swift 3 包含 ABI 不稳定、语法变太多、API
变了又变?什么时候能用上?
王巍:&API 上最大的变化的原因是要遵循新的 API Guideline,而新的 API
Guideline 的目的只有一个,那就是让通过 Swift 使用 Cocoa 框架更加自然。如果说 Swift 1 和 2 还是带着
Objective-C 的枷锁跳舞的话,Swift 3 中这个限制在很大程度上可以说消失了。Swift 3 中开发者可以用更
Swifty 的方式来使用这门语言,同时这也意味着 Swift 和 Objective-C
之间的联系将更少(毕竟如果要提供两种语言都合适的 API 的话,需要很多额外工作量)。
在实际项目中,现在就适配 Swift 3 是否适合?《Swifter -
100 个 Swift 必备 tips》现在有更新计划?
王巍:&实际项目的话建议还是等一段时间。因为 Swift 3
改动很大,所以不一定所有第三方框架都会在第一时间进行适配。另外,对于较大项目,即使在自动迁移的帮助下,想要全面转向 Swift 3 的
API 也需要花费不少精力。Xcode 8 中 Swift 2.3 和 Swift 3 可以同时共存,Apple 也将接受这两个版本的
Swift 项目,所以 App 的项目并不着急马上进行适配。不过如果你是框架作者的话,尽早将项目转为 Swift 3
会是很好的选择。《Swifter - 100 个 Swift 必备 tips》有计划更新到 Swift 3,不过鉴于现在 beta
版也还不稳定,有不少特性还没有最后实装,所以这本书的更新会在稍后一些时候进行。
在将项目代码升级至 Swift 3
的过程中,都遇到过哪些问题?
王巍:&我正在将我的开源框架升级到 Swift 3,遇到的最大的问题是 API Guideline
的一些细节上的处理。大部分时候一个 API 的命名是比较容易确定的,但是对于某些模棱两可,可能适用于多条规范的 API
名字,在处理上需要考虑更多东西。举个例子,不少接受通用类型(比如 Int,String)作为参数的方法,它们的名字就难以确定。
现如今,很多新加入的 iOS 开发者首选学习的是 Swift,是否意味着
OC 式的语法、API 等都可以舍弃了?
王巍:&Swift 作为入门 iOS
开发来说是非常理想的,但是国内在接受新技术这方面相对似乎要慢一些,所以在之后一年可能还是需要简单了解 Objective-C
的语法。国内 Swift 适配的速度较慢的一个重要原因是 Swift 程序的运行时会被打包到 App
中,导致体积增大,而国内用户恰好比较看重流量。所以希望在 Swift 运行时被集成到系统中后国内的 Swift
应用和开发能有一个大的增长,这样我们就可以摆脱 Objective-C 的一套不安全和相对落后的东西了。
开源的Swift对于跨平台应用开发是否会造成影响?
王巍:&对于移动端来说,Swift 还不能用于 Android
开发,所以并不会产生什么影响。不过,相对来说,Android 开发可能会由于 Swift 的压力,而对 Kotlin
之类的更先进的语言进行一些尝试。对于服务器端来说,Swift
虽然可以进行开发,但是相应的工具链和生态相比其他成熟的服务器语言来说还有一定差距。一些 Swift
开发者可能会尝试使用这门语言进行服务器开发,这样他们就能够在客户端和服务器同一语言,甚至共用一些模块。不过现在都处于早期的尝试中,要说会造成影响还为时过早。
编程语言与书籍启发
就不断演化的语言来说,我们正在向何处去?比如,5
年后会如何?对于您来说,您认为一门语言向开发者提供什么是最重要的?
王巍:&最近几年编程语言有一种趋同的趋势,这也是最近几年大家在工程实践中总结的一些经验的体现,比如更多地使用函数式、避免
指针等等。总体来说,编程语言正在向更安全,更易于开发者书写的方向发展。要预测五年后的情况太难,不过相信之前的这些趋势会继续发展。另外,相比于一些通用型的语言,那些特别设计来针对某一专门领域的语言也将会有很大空间。
迄今为止,对于您在从事开发方面影响最大的著作是?您有着哪些启发?
王巍:&Robert C. Martin 的&。这本书教会了我如何以一个专业程序员的思维来思考问题,也让我明白了开发中必须做出的一些取舍。
在今年的 MDCC
移动开发者大会上,准备和开发者们分享什么?
王巍:&可能会分享一些面向协议编程和泛型如何与 Cocoa
结合使用的实例,因为在项目里尝试用了一些,觉得对改善现有设计很有帮助。
您最期待在 MDCC 2016
上看到哪些内容?收获什么?
王巍:&希望能看到更多的改善项目设计,组织架构以及可维护性的思路,因为工作中的软件开发我自己所追求的主要是代码简洁可读以及保证可维护性,因此如果能有一些这方面的启发的话,会对日常开发有很大帮助。
最后,以一张今年初与iOS众大神的合影结束这次的采访,同时感谢喵神于百忙之中的答疑解惑。9 月 23-24 日,在北京&
国家会议中心举行的上,喵神将在现场进行交流与分享,欢迎面基。
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/maxwidth.800/tc./img_blog_csdn_net/3c33f37f6b0f3a16e546d735360adb10.jpg" ALT="Swifter (Photo by 李涛 Geek2Startup)" DATA-ORIGIN-SRC="http://img.blog.csdn.net/10589"
TITLE="是时候适配&Swift&3&了吗&&专访&LINE&iOS&开发工程师王巍" />
本文将刊登在《程序员》杂志8月刊,订阅详情可点击:。
2016 年 9 月 23-24 日,由 CSDN 和创新工场联合主办的“”(Mobile Developer
Conference China)将在北京&
国家会议中心召开,来自iOS、Android、跨平台开发、产品设计、VR开发、移动直播、人工智能、物联网、硬件开发、信息无障碍10个领域的技术专家将分享他们在各自行业的真知灼见。
从即日起至8月7日23:59,MDCC
2016移动开发者大会门票5折优惠。五人以上团购更有特惠,限量供应,预购从速。()
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/maxwidth.800/tc./img_blog_csdn_net/dc7f1fa3.jpg" ALT="MDCC 2016移动开发者大会" DATA-ORIGIN-SRC="http://img.blog.csdn.net/57833"
TITLE="是时候适配&Swift&3&了吗&&专访&LINE&iOS&开发工程师王巍" />
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。| 您所在的位置: >
> Swift给每个开发者赢取500万的时机!Swift给每个开发者赢取500万的时机!更新:&&&&编辑:来看看&&&&来源:转载&&&&人气:加载中...&&&&字号:|标签:&&&&&&&&&&&&
苹果新编程语言,从开始研发到最终仅用了不足4年时间。该语言背后的创造者为苹果部门总监克里斯?拉特纳(Chris Lattner),根据其在上的表述,的底层架构大多由其一人开发完成,而开发期间,仅少数内部人士对此项目知晓。与其他编程语言一样,Swift受益于其他语言那些来之不易的开发经验。Xcode Playgrounds功能是拉特纳的最爱,也是Swift为苹果开发带来的最大创新。该功能供给了不可思议的互动效果,能让Swift代码在编写过程中实时的编译和显示。[阅读] Swift的横空出世,,很多有想法的人已经发现其中的蕴含的巨大商机,而很多新手却只是云里雾里,只大家讨论Swift很欢乐。内行看门道,外行看热闹,说的就是这个理。如果你能把swift用得好,下一个千万富翁就是你!一、Swift给技巧时机都IOS技巧,国内算CocoaChina老大,而Android的话当初是eoe论坛,现在开发者比较分散,Apkbus、eoe、以及 各个厂商上的开发者论坛比如华为、小米也有一些人,还有另外一部分开发者不怎么逛论坛,专门在CSDN,园等技巧博客活动。就拿eoeandroid社区来说,日,eoe就是抓住了android兴起的时机,致力打造最棒的android技巧论坛。用户达 到198万(论坛显示),去掉一些重复的账号,估计怎么也有150万开发者,数量及其庞大,最高在线用户7150人。但是eoe论坛盈利确实个,技巧 论坛没找到适合的盈利模式,虽然名气很大。后来慢慢的几年后,很多开发者已经成长,他们基本工作中的,不会的eoe上也能出来,因为已经积累了几 百万帖子。eoe变成一个库,而用户在上面活跃的可能性降低。eoe在搞极客学院,就是为了实现盈利。在线教育是未来趋势,它方便、快捷、实效、有趣,能吸引很多新手开发者。当然现在极客学院的用户比较少,需要 eoe论坛引用户过去,不过明显极客才是靳岩的重点。但是他肯定不是不顾eoe社区,eoe社区现在又改版加入ios板块,可以看到eoe要做的不仅是 android,而是这个大块。以后极客学院培训的肯定是android,ios,wp,估计是要打造在线的培训帝国。但是!大家都知道,专注做一件事情,把它做好,胜算才更大,Swift给大家一个时机(其实我现在就知道有人在做这个工作了)。二、Swift给开发者带来时机如果你不做平台,只专注自己的技巧提升,打算搞自己的app赚钱,那么Swift给你一次时机。国内很多开发者,都诟病Objctive C真是反人类,很不好学,于是很多开发者半途而废。现在,一个让你从头再来的时机来了。Android是开放的系统,导致国内很多市场的存在,开发者提交 app可谓艰难险阻,经受各种磨难。就拿360市场来说,你用户后,还需要执照拍照上传,通过审核能提交app,提交后,很有可能被拒绝通过,原因很 多比如app插入广告了,比如需要电子书版权拉,比如游戏还需要版权书打印、填写、拍照、上传了,比如很多app类型不允许拉,个人开发者不能首发 拉!很多原因,说得我都口干了。并且市场都需要竞价的哦!(大家骂一下百度,竞价就是这玩意弄出来的。)嗯,喝点水先。(几分钟后)上面说的就是国内这种Android市场环境真是糟糕透顶,那你说android不是还有google play吗?但是国人有几个用户安装google play?据我一个朋友的app分析,基本都是东南亚华语地区。好了,苹果的优势就凸显了,你不用纠结于适配问题,不用注册多个市场,各种提交app,不用被莫名其妙的被拒绝了。Swift的出现,以及wddc释放的 对中国兴趣,都说明国内的用户在appstore表现抢眼,以后apple将更加重视华语,重视我神州大地,这是一个利好消息。所以,想赚钱的你,想的你,都将是一个时机。三、Swift给培训机构一个时机大家都知道很多技巧培训机构,什么北大小鸟拉,黑驴拉。百度广告老弹出”学习网 ,android培训”的悬浮广告,就知道培训这个行业其实赚钱挺猛。培训行业在全国蓬勃发展,就是因为其利润超级高,一个学员培训3个月几千上万,就那 么几节课,投资也不大。新东方搞英语培训能上市,你就知道培训行业多么拉风了。技巧培训虽然不能造就一个高手(据我所知,高手都是自学出来的),但的确能 引导新手入门,能够让一部分人找到工作。最近的百度广告,还没出现“Swift培训”,不过我估计很快大家就能见到了。那个培训机构抓住这次时机,一炮打 响,以后的口碑影响将是不可估量的。所以,在培训机构的朋友,花点钱,把Swift的这个点控制好投资,回报将是惊人的。“学swift,就到微价值!”希望这句话能够落到某个培训机构上。四、Swift给出版业、技巧作家的时机国内的出版行业,不知道那家出版商抓住出本《Swift开发指南》的时机。虽然现在很多开发者从网上获取技巧,但大家可以访问当当网,就知道其实 很多开发指导书卖得风生水起。国内人口基数大,你可能学会了从网络上获取知识,但是大量的人仍旧喜欢捧着书本,吻着书香,一页一页翻看(至少我每年买过不 少于30本书)。而技巧牛的开发者,也可以写系列开发Swift的文档,然后出书,这种事情特别明显的例子是微信后台开发系列,大家可以到CSDN看 看,那个就是写这个东西,然后出书,然后火拉!火的结果就是:书被大卖,然后各种其他你就会有。比如你自己搞一个小,访问量是不会有什么问题的。Swift给大家成名的时机,也给你带来富裕的时机,!小意思!====end===微信公号vjiazhi,更多盈利干货,转载保留公号。
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
分类选择您可能在找这些主题信息(必填)
主题描述(最多限制在50个字符)
申请人信息(必填)
申请信息已提交审核,请注意查收邮件,我们会尽快给您反馈。
如有疑问,请联系
博客已经转移到
QQ: 备注你的CSDN博客地址~
作者: Robert Gummesson
译者: 孙薇
审校: 唐小引(@唐门教主),欢迎技术投稿、约稿,给文章纠错,请发送邮件
上周我拜读了的佳作,之后便不由稍微换了个角度来看待Swift的代码。目前有一个新问题出现:是否该将一行可以算是简洁的代码重构为9行代码,以便符合编译器的需求?对于代码来说,简洁与编译器友好孰轻孰重?其实,这取决于项目的规模以及开发者的意愿。等等,有一个Xcode插件在举例之前,我先强调一下手动过滤日志文件是非常耗时的。有人设计出了终端命令来简化这一步骤,不过我的方法更进一步,。虽然初衷只是为了找到并修复最耗时的部分,不过目前我的看法也已经发生了变化:将该过程当成迭代的过程。这样的做法不仅可以让代码构建效率更高,也能在最开始就防止项目中出现过于耗费时间的函数。不少的惊喜我时常来来回回地查看不同的Git branch,等待一个项目花费很长时间编译结束,一直没想出来为什么一个小项目(大约2万行Swift代码)要花那么久时间构建。在了解到真正的原因后,我必须承认:一行代码也需要好几秒来编译这件事吓了我一跳。我们来看几个例子!空合运算符(Nil Coalescing Operator)很显然,编译器肯定不喜欢第一种编译方法,在拆成两个视图之后,构建时间减少了99.4%。// Build time: 5238.3ms
return CGSize(width: size.width + (rightView?.bounds.width ?? 0) + (leftView?.bounds.width ?? 0) + 22, height: bounds.height)
// Build time: 32.4ms
var padding: CGFloat = 22
if let rightView = rightView {
padding += rightView.bounds.width
if let leftView = leftView {
padding += leftView.bounds.width
return CGSizeMake(size.width + padding, bounds.height)ArrayOfStuff + [Stuff]在代码中经常是像下面这样:return ArrayOfStuff + [Stuff]
ArrayOfStuff.append(stuff)
return ArrayOfStuff我经常会这样写代码,而这种方式对代码的构建时间有很大影响。下面是差距最大的一个案例,构建时间减少了97.9%。
let systemOptions = [ 7, 14, 30, -1 ]
let systemNames = (0...2).map{ String(format: localizedFormat, systemOptions[$0]) } + [NSLocalizedString("everything", comment: "")]
labelNames = Array(systemNames[0..&count]) + [systemNames.last!]
let systemOptions = [ 7, 14, 30, -1 ]
var systemNames = systemOptions.dropLast().map{ String(format: localizedFormat, $0) }
systemNames.append(NSLocalizedString("everything", comment: ""))
labelNames = Array(systemNames[0..&count])
labelNames.append(systemNames.last!)三元运算符(Ternary operator)使用if else语句代替了三元运算符,而不进行其它任何改动,构建时间就能缩短92.9%。如果用for循环来代替map,构建时间又会缩短75%(不过for循环太伤眼了)。// Build time: 239.0ms
let labelNames = type == 0 ? (1...5).map{type0ToString($0)} : (0...2).map{type1ToString($0)}
// Build time: 16.9ms
var labelNames: [String]
if type == 0 {
labelNames = (1...5).map{type0ToString($0)}
labelNames = (0...2).map{type1ToString($0)}
}在CGFloat中去掉CGFloat这句话有点费解,其实在CGFloat中,有些括号是多余的,清除掉之后,构建时间会缩短99.9%。
return CGFloat(M_PI) * (CGFloat((hour + hourDelta + CGFloat(minute + minuteDelta) / 60) * 5) - 15) * unit / 180
return CGFloat(M_PI) * ((hour + hourDelta + (minute + minuteDelta) / 60) * 5 - 15) * unit / 180Round()这个真的很奇怪,下面样例中的变量混合了本地与实例变量,问题很可能不在rounding本身,而是由于在方法中混用代码而导致的,去掉它之后就能大幅缩减所用的时间,准确来讲耗费时长减少了97.6%。// Build time: 1433.7ms
let expansion = a — b — c + round(d * 0.66) + e
let expansion = a — b — c + d * 0.66 + e注意:所有的对比测量都是在MacBook Air(13英寸,Mid 2013款)上进行的。试一下吧无论你是否遇到了构建速度缓慢的问题,了解到底是什么会让编译器遇到混乱情况都是很有用的。我肯定你也能发现不少惊喜,作为参考,下面是在我的项目中需要花费5秒多时间构建的完整代码。import UIKit
class CMExpandingTextField: UITextField {
func textFieldEditingChanged() {
invalidateIntrinsicContentSize()
override func intrinsicContentSize() -& CGSize {
if isFirstResponder(), let text = text {
let size = text.sizeWithAttributes(typingAttributes)
return CGSize(width: size.width + (rightView?.bounds.width ?? 0) + (leftView?.bounds.width ?? 0) + 22, height: bounds.height)
return super.intrinsicContentSize()
}第一时间掌握最新移动开发相关信息和技术,请关注mobilehub公众微信号(ID: mobilehub)。Swift开源带来的思考
发表于 09:29|
来源《程序员》数字刊|
作者卢俊祥
摘要:苹果全球开发者大会今年的“猛料”不如往期,但Swift开源的消息,却足以赚足开发者眼球。关于苹果为什么开源Swift的分析已是铺天盖地,就无需多言,在这里更想由此思考一下语言发展的趋势及伴随的现象。
苹果全球开发者大会总能掀起一股旋风,虽然今年大会的“猛料”不如往期,但Swift在今年晚些时候开源的消息,却足以赚足开发者眼球。其实苹果的行事风格,我还是蛮喜欢的:“苹果把自家的事情做好,给用户最酷的体验,他的实力就是我行我素的资本,而用户也欣然接受这样的苹果。”不过,苹果有自己的平台、软硬件,Swift也才发布将近一年的时间,这么快就开源Swift?关于苹果为什么开源Swift的分析已是铺天盖地,就无需多言,我觉得最重要的一点还是——通过吸引更多的开发者使用Swift,获得更多的支持以及创意,能够为苹果带来更大的商业利益。在这里,我更想由此思考一下语言发展的趋势及伴随的现象。一、语言/工具的封闭模式已经落伍了十来年前的软件公司还有封闭资本,那时候的VB、Delphi足够好用,尽管盗版也很普遍,但光靠卖这些工具就能赚到盆满钵满。到了后来,Delphi几经挣扎还是没落了。当年李维在《Borland传奇》里将主要原因归咎于管理层接二连三失策,而从历史轨迹来看,靠封闭单一的工具类产品支撑业务发展,路口必将越收越窄。再来看看偌大的微软帝国,其产品和技术的覆盖面遍布各个角落,但最终也于2014年年底宣布开源.NET开发框架。回首Java的二十年历程,JDK是开源的(你只要打开Src.zip,就能看到源代码),有开源免费的Eclipse和NetBeans的支持,同时借着“一次编写四处运行”的宣传语吸引无数开发者积极投入,构建出了一个庞大的Java社群,至今仍雄霸天下,这就是开源力量。在这十多年里,不得不提的当然还有PHP、Python、Ruby等一大波开源动态语言的盛行,这些早已为业务所证明是成熟而稳定的解决方案。互联网上,用PHP、Django或RoR构建的网站比比皆是。看看TIOBE语言榜就知道,开源的编程语言是多么流行!随着互联网/移动互联网的发展,“免费”已经是经典的商业盈利模式,现在互联网的盈利点越来越集中在云平台/云业务租赁、各种增值服务、流量、订阅和广告上,越大的用户量,盈利越明显。而越多的开发者支持,创新点就越多,产品也越丰富。因此,我认为作为开发支撑基础的编程语言和工具,其开源和免费趋势将逐渐成为主流。毕竟,用户资源和开发者资源,都是事关产品生存的生命线。但为何仍有这么多不开源的产品,比如不少数据库产品都不是开源的?其实,开源是一种模式,商业也是一种模式,看看著名的《大教堂与集市》就会有更多感悟。君不见,开源的大数据、NoSQL解决方案已经对商用数据库造成了不小冲击,而是否开源,也是商业公司的一种选项,比如微软开源.NET框架、苹果开源Swift。商业公司的选择总是考虑利益第一,有可能是短期,也可能是长期的,但无论如何,千万别把商业公司当作开源的天敌,在合适时机做出合适的选择,如果需要开源,也未尝不可。要知道,微软、苹果其实也为开源做出了不小贡献!二、语言的发展有时候还是蛮怀念十几、二十年前的软件开发环境,好像你只要会C或C++就可以了。但时光早已不同,尤其是近年的语言趋势更是呈现出许多新特性。这些新特性的流行,得益于2000年代的动态语言,比如前面提到的PHP、Python、Ruby。而这些语言的日益流行,又得益于互联网应用的兴起。PHP在网站构建方面占据大半壁江山,Python因应互联网数据量的喷发在科学计算领域得以重用,而RoR成就了多少初创公司的创业荣光。当年被人不看好的小脚本,却在互联网时代找到了大展身手的好时机。现在你不会一门动态语言都不好意思说自己是程序员了。还必须提一下JavaScript,当年几乎人人不待见的丑小鸭,谁能想到今天的地位如此突出呢?甚至还延伸出了Node.js这样一个优质平台。一时间多少JavaScript开发者希望借助它实现心中的“全栈”梦想。同样,没有互联网,也就不会有JavaScript的大行其道。我认为,JavaScript在当代的价值,不会输给十几年前的Java。动态语言的流行,也让许多组织和个人认识到了其存在的价值——那就是开发效率大大提升。以前编程需要为1M、甚至几百K的内存绞尽脑汁,运用各种Hack技巧。但遵从摩尔定律,硬件的发展速度非常快,于是,开发者逐渐将眼光转到了开发效率上。动态语言中广泛应用的filter、map和reduce等具有浓郁函数式风格的高阶函数,被认为是提升开发效率的有效手段。当然,苹果的Swift,同样也大量应用了这些特性。就目前编程语法发展过程的几个关注点,我的理解如下:不止是面向对象,函数式的回归正在进行时。过去十几年时间里,Java和C#两种语言占据主流,面向对象编程被赋予至高无上地位。但现在大家越来越认识到,面向对象编程达到一定规模时,复杂度也伴之而来。因此,旧有的函数式风格又重出江湖,特别是一些函数式特性在动态语言中得到了良好验证。现在,开发者对待面向对象与函数式两种风格,已经不是非此即彼的印象了,而是认识到它们是可以相辅相成的,比如Scala。即使是Java,也开始引入一些函数式特性,更不用说先行一步的C#。再进一步,抛开风格之争,遵从应用为先,从而采取实用的编程模式,比如Golang、Rust。并发特性的增强。多核及大数据时代的来临,现实对并发特性提出了新需求。新出现的系统级语言如Scala、Clojure、Erlang、Go及刚正式发布的Rust,都对并发特性给予极大关注,并各有各的解决方案。即使是动态语言如PHP、Python和Ruby等,也在这方面不断尝试。同样的,函数式语言中的不可变性概念,能够较好地符合并发实现的现实需求。三、语言营销、语言魅力语言间的各种对比、争论由来已久,而且还历久不衰,这其实也说明了语言的流行除了客观条件,还存在一定主观因素的影响。确切地说,这些主观因素中很重要的两点是:语言的官方组织或作者希望进一步扩大该语言影响力而采取的宣传攻势;爱好者出于对该语言的热爱而释放出的赞誉之词,反过来还有反对者的不满宣泄。因此,语言是有“营销”因素存在的,也许这也算是各种编程语言的魅力之一。当然,在语言营销过程中,利益关系往往紧随其后。举个例子,我印象最深刻的一个语言营销例子就是每年推出的Java短片,其中可以看到暗喻语言的各种恶搞,无形中让人对Java产生了不小兴趣。此外,当下流行的各种语言/技术大会,姑且不言参会价值,同样是一种典型的语言/技术营销手段。Swift开源的消息在WWDC 2015大会上发布,可谓天时地利人和,算是一种成功的营销。加上Swift具备的现代语言特性,Swift开源的策略可谓一炮打响,足以让粉丝激动许久。一门语言,如果有几个业内知名大牛支持,有一个实力雄厚的组织和平台,具备一定优质特性,再加上合适的营销策略,就很容易吸引众多粉丝。你我皆凡人,都有冲动之后就嚷嚷“再买就剁手”的经历,可见营销的影响力简直无孔不入。而开发者对语言的追求,一是现实刚需,二是自我兴趣,三是利益契合,如果光靠一时冲动,那么早晚会迷失自我,如何在感性和理性的平衡中选择自己的语言方向?这很重要,但也许是另一个话题了。四、Swift开源带来了什么?从技术角度来思考,Swift开源能带给我们什么?我觉得主要有以下几个方面:除了苹果自家的平台,以后也能在Linux上用Swift开发应用了,这样可以吸收更多Linux平台上的Swift开发者;基于Swift的应用会更加丰富,有了开发者对Swift的普遍热情,以后也许会出来各种Swift的Web框架或其他什么有趣、有用的应用;Windows平台虽然不在此列,而官方并不反对把Swift移至到其他平台,但需要有人做这件事。嗯,微软应该不会忽略Swift?总之,只要机会之门打开,一切皆有可能;苹果的私房菜Cocoa并未开源,开源的是Swift编译器和标准库,要在非苹果官方平台开发iOS应用,暂时还不太可能;Swift开源后的成功,特别是在不同平台上的成功,很大程度上取决于生态的建立、有多少框架/第三方库的支持。同时,也直接受Swift最终采用何种开源许可的影响。总而言之,Swift开源是大大前进了一步。而超越Swift开源本身,当今编程语言的发展趋势也值得我们认真思考。如果从完全理性的角度看待编程语言,那么编程语言无非就是一门编程语言:“选择好适合自己的编程语言就是了”。但问题就在于如何选择合适的编程语言呢?语言的魅力也许就像盲人摸象,你无法做到足够理性,或者这世界就没有银弹,编程语言的比较和纷争,将是一个永恒的话题,热度无限......本文选自程序员电子版2015年7月A刊,该期更多文章请查看。2000年创刊至今所有文章目录请查看。欢迎(含iPad版、Android版、PDF版)。
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章

我要回帖

更多关于 swift 滑动切换 的文章

 

随机推荐