苹果应该不会干掉积分墙的。那么多免费应用的开发者靠这东西赚钱,对用户体验的影响又不是那么严重,干嘛得罪人毁掉自己的生态。

降低积分墙对 App Store 的影响倒是很有可能。那只要调整排名算法就行了。

WWDC 2014 开发者大会上,苹果发布了全新的编程语言:Swift。在苹果开发者池建强先生在他的博客详细介绍了 Swift 语言的开发者、开发过程、语言特点等等信息。原文《苹果新贵 Swift 之前世今生》,地址 http://macshuo.com/?p=1125,转载如下:


2010 年的夏天,Chris Lattner 接到了一个不同寻常的任务:为 OS X 和 iOS 平台开发下一代新的编程语言。那时候乔布斯还在以带病之身掌控着庞大的苹果帝国,他是否参与了这个研发计划,我们不得而知,不过我想他至少应该知道此事,因为这个计划是高度机密的,只有极少数人知道,最初的执行者也只有一个人,那就是 Chris Lattner。

从  2010年 7 月起,克里斯(Chris)就开始了无休止的思考、设计、编程和调试,他用了近一年的时间实现了大部分基础语言结构,之后另一些语言专家加入进来持续改进。到了 2013 年,该项目成为了苹果开发工具组的重中之重,克里斯带领着他的团队逐步完成了一门全新语言的语法设计、编译器、运行时、框架、IDE 和文档等相关工作,并在2014年的 WWDC 大会上首次登台亮相便震惊了世界,这门语言的名字叫做:「Swift」。

根据克里斯个人博客(http://nondot.org/sabre/ )对 Swift 的描述,这门语言几乎是他凭借一己之力完成的。这位著名的70后程序员同时还是 LLVM 项目的主要发起人与作者之一、Clang 编译器的作者,可以说 Swift 语言和克里斯之前的软件作品有着千丝万缕的联系。

关于作者

克里斯可以说是天才少年和好学生的代名词,他在 2000 年本科毕业之后,继续攻读计算机硕士和博士。但克里斯并不是宅男,学习之余他手捧「龙书」游历世界,成为德智体美劳全面发展的好学生。之后就是一篇又一篇的发表论文,硕士毕业论文即提出了一套完整的运行时编译思想,奠定了 LLVM 的发展基础,读博期间 LLVM 编译框架在他的领导下得到了长足的发展,已经可以基于 GCC 前端编译器的语义分析结果进行编译优化和代码生成,所以克里斯在 2005 年毕业的时候已经是业界知名的编译器专家了。

注:很多计算机专业的大学生经常问我在大学里学点什么好,看看克里斯就行了。以目前的科技信息开放程度,如果你在自己感兴趣的领域里用心耕耘,再加上那么一点点天分,毕业时成为某一个专有领域的专家应该不是问题。那时就不是你满世界去找工作了,而是工作满世界来找你!

克里斯毕业的时候正是苹果为了编译器焦头烂额的时候,因为苹果之前的软件产品都依赖于整条 GCC 编译链,而开源界的这帮大爷并不买苹果的帐,他们不愿意专门为了苹果公司的要求优化和改进 GCC 代码,所以苹果一怒之下将编译器后端直接替换为 LLVM,并且把克里斯招入麾下。克里斯进入了苹果之后如鱼得水,不仅大幅度优化和改进 LLVM 以适应 Objective-C 的语法变革和性能要求,同时发起了 CLang 项目,旨在全面替换 GCC。这个目标目前已经实现了,从 OS X 10.9 和 XCode 5 开始,LLVM+GCC 已经被替换成了 LLVM+Clang。

Swift 是克里斯在 LLVM 和 Clang 之后第三个伟大的项目!

关于语言

2007 年之前,Objective-C 一直是苹果自家院落的小众语言,但是 iOS 移动设备的爆发让这门语言的普及率获得了火箭一般的蹿升速度,截止到今天,Objective-C 在编程语言排行榜上排名第三,江湖人称三哥,大哥二哥分别是 C 和 Java 这样的老牌语言。同时,苹果在 2012 年和 2013 年分别对 Objective-C 进行了大规模的优化和升级改进,增加了各种现代语言的特性,让编写 App 更加容易,更多的程序员投入到了 App Store 的生态圈里……

在这种情况下,苹果公司为什么会发布一门新语言呢?

这个问题没有标准答案,不过我们可以试着去分析一下,谈谈苹果的心路历程……

Objective-C 是 80 年代初 Brad Cox 和 Tom Love 发明的,1988 年乔布斯的 Next 公司获得了这门编程语言语言的授权,并开发出了Objective-C 的语言库和 NEXTSTEP 的开发环境。后来 Next 被苹果收购,Objective-C 阴差阳错成了苹果的当家语言。掐指一算,三十年倏忽而过,OC 也成长为爷爷辈儿的编程语言了。

为了伺候好这位「爷爷」,苹果煞费苦心,把 GCC 的编译链先替换成 LLVM +GCC,又替换成 LLVM+Clang,做语法简化、自动引用计数、增加 Blocks 和 GCD 多线程异步处理技术……终于,OC 在 30 年后重新焕发出勃勃生机,并占据了兵器谱排名第三的位置。但是,苹果却有点烦了,OC 改进了这么多年,怎么看都像是在修修补补,用 Blocks 去实现一个类似 Python 的 lambda 闭包功能,看起来总是那么别扭。好吧,既然已经全盘掌握了 LLVM 和 Clang,为什么我们不去基于现在的编译器设计一门全新的语言呢?一门属于苹果的语言!你看,邻居谷歌家里叫做 Go 的孩子不是玩耍正酣么?

于是 Swift 诞生了……

当然,事实的真相也可能是行动缓慢的乔老爷子把克里斯拉到一边说:

「I want to be swift to……」

「 行了,您别说了,不就是想要 swift 吗,我这就给您做一个去」

于是 Swift 诞生了……

语法

Swift 是一门博采众长的现代语言,在设计的过程中,克里斯参考了Objective-C,Rust,Haskell,Ruby,Python,C# 等优秀语言的特点,最终形成了目前 Swift 的语法特性。我在阅读了官方教程和做了些代码实验之后,自我感觉会喜欢上这门语言,在这里简单谈点感想,更深入的内容需要你们自己去深入学习。

1、Swift 是面向 Cocoa 和 Cocoa Touch 的编程语言,编译型语言,生产环境的代码都需要 LLVM 编译成本地代码才能执行,但是 Swift 又具备很多动态语言的语法特性和交互方式。

2、Swift 是一门类型安全的语言,可以帮助开发者清楚的掌控代码片段中的值类型。如果你期望输入的是字符串,类型安全的特性会阻止开发者错误地为其传递一个整数。这一切使得开发者能够更早的发现和修复错误。

3、支持各种高级语言特性,包括闭包、泛型、面向对象、多返回值、类型接口、元组、集合等。

4、Swift 能与 Objective-C 进行混合编程,但代码分属不同的文件。

5、全面的Unicode支持,你甚至可以用一只「狗」作为变量名,实现以下操作:

let 狗 = "大狗菠萝"
for n in 狗{
    println( n )
}

控制台会输出「大狗菠萝」四个字。

6、编程语句取消了大部分语言使用的「;」分隔符,只有一行写多条语句时才需要分号。

7、很多人简单阅读了 Swift 的数据类型,就认为 Swift 没有类似 Set、List 这样的数据结构,其实Swift 提供了两种 Collection 的数据类型:数组(Array)和字典(Dictionary),两个数据类型的表达式都用中括号标识。其中数组可以存储任意类型的变量,也可以强制声明存储同一种类型的变量。同时数组提供了类似 Set 功能,你可以修改、追加、替换和删除数据的元素。另外,Swift 还提供了元组(Tuple)的功能支持函数多返回值。

8、Swift 没有提供显式的指针,参数传递根据数据类型的不同分为值类型和引用类型,值传递进行内存拷贝,引用传递最终传递的是一个指向原有对象的指针。这一点和 Java 的参数传递是类似的。需要注意的一点是,Swift 里的数组和字典虽然都是结构体(struct),但在参数传递过程中处理方式却不一样,默认 Array 是引用传递,Dictionary 是值传递。而在 Java 中,由于数组和 Map 都是对象,所以传递的都是指针。

在 Swift 中,如果你不想传递数组引用,可以用 copy() 方法先复制一份出来,另外,也可以用 unshare() 表示,本变量不传递指针。

9、闭包,Swift 终于提供了一种优雅的闭包解决方案,比如在排序函数 sort 中进行函数传递:

let names = ["D", "B", "R", "C", "A"]
func backwards(s1: String, s2: String) -> Bool {
    return s1 > s2
}
var rnames = sort(names, backwards)

事实上更简单的写法是:

var rnames = sort( ["D", "B", "R", "C", "A"] ) { $0 > $1 }

10、可选变量(Optional)的引入主要是为了应对一个变量可能存在也可能是 nil 的情况,这种情况在很多高级语言里都存在。比如你想使用String的toInt方法将String转化为 Int 类型,但是你并不知道这个转化是否正常,这时候系统会返回一个可选变量,如果转换成功就返回正常值,转换失败就返回 nil,如下:

let str = "123A"
let nn = str.toInt()

这是 nn 就是可选变量,想得到 nn 的值,可以通过 if 进行判断并通过追加感叹号获取变量值,如下:

if nn {
    println(nn!)
}

可选变量的引入解决了大部分需要显式处理的异常,这部分工作也扔给编译器去做了。想了解更多可选变量的用法,请阅读苹果的官方文档。

11、Swift 中的 nil 和 Objective-C 中的 nil 不同。在 Objective-C 中,nil 是指向不存在对象的指针,而在 Swift 里,nil 不是指针,它表示特定类型的值不存在。所有类型的可选值都可以被设置为nil,不仅仅是对象类型。

12、Swift 没有从语言层面支持异步和多核,不过可以直接在 Swift 中复用 GCD 的 API 实现异步功能。另外没看到 Swift 的异常处理机制,可能有了可选变量,异常的使用会非常少吧。

关于语法相关的内容,先写这么几点吧。给大家推荐一篇王巍 (@onevcat)写的「行走于 Swift 的世界中」,深入阅读必有收获。 http://onevcat.com/2014/06/walk-in-swift/

基本上,Swift 绝对不是玩具语言,而是一门可以被大众接受的工业级编程语言。相信假以时日,Swift 必将在 App 开发领域大放异彩。

性能

Swift 在 WWDC 上展示出来的性能还是让人非常吃惊的,在进行复杂对象排序时,OC 的性能是 Python 的 2.8 倍,Swift 是 Python 的 3.9 倍;在实现 RC4 加密算法的时候,OC 的性能是 Python 的 127 倍,Swift 是 Python 的 220 倍。总之 Python 在某一个深坑里膝盖中箭了,OC 也没好到哪去,而 Swift,就是快啊就是快!

对于这一点我并不是很理解,首先是 WWDC 上展示的语言层面的基准测试过于简单了,另外,OC 和 Swift 都是被 LLVM 编译成本地代码执行的,理论上针对 Swift 的优化同样可以应用于 OC,但是 Swift 居然比 OC 快那么一点点,难道 LLVM 单独针对 Swift 做了优化么?我表示不明觉厉。

当然,还有更较真的程序员,他在第一时间针对于循环、递增、数组、字符串拼接等功能进行了测试,发现 Swift 的性能比 OC 还是差那么一点点的(http://www.splasmata.com/?p=2798)。

无论这些测试数据是否准确,我觉得性能是我们最不需要担心的问题,苹果已经全盘掌握了这个语言的方方面面,从底层编译框架到编译器再到语言设计,优化之路才刚刚开始,我们只要给这门新语言一点耐心就可以了。

所码即所得(Playground)

苹果 Swift 所码即所得

对于开发者来说,Playground 是本次 WWDC 最大的亮点。能够在编码的同时实时预览输出结果是每个开发人员的梦想,这一次苹果为大家提供了这样的福利。

Playground 不仅实现了很多脚本语言支持的交互式编程,而且提供控制台输出、实时图形图像、时间线(timeline)变量跟踪等功能,开发者除了可以看到代码的实时运行结果,还能根据时间线阅读某个变量在代码片段中值的变化。这真是太棒了!

最初看到这个功能的时候我甚至以为每个 Swift 文件都可以基于 Playground 进行实时编码预览,仔细阅读文档后发现,只能在 XCode 提供的 Playground 文件中实现以上功能。看来 Playground 顾名思义,目前还只是为开发者提供了一个玩耍代码的地方。

当然不仅仅是玩耍,我们可以基于 Playground 做这些事情:

1、学习:通过 Playground 学习 Swift,制作 Swift 教程实现交互式学习,同时还可以培训其他初学者。

2、代码开发:执行算法程序,迅速看到算法结果,跟踪变量;执行绘图程序,即时看到图像结果,及时调整。执行通用代码,查看变量的改变情况。

3、实验性代码:无需创建项目,直接打开一个独立的Playground文件即可编写代码,尝试调用新的 API。

对于 Playground,设计者克里斯是这样描述的:Playground 功能倾注了我个人很多心血和激情,我希望新的编程语言具备更好交互性,更友好和有趣……我们希望通过这门语言重新定义「如何教授计算机科学!」

开始使用 Swift

作为一门新语言,Swift 定位非常明确,就是吸引更多的开发者加入苹果的软件生态圈,为 iOS 和 OS X 开发出更为丰富的 App,如果你是 App Store 的开发者,推荐尽早学习和掌握这门苹果力推的新语言。对于大部分新事物来说,越早介入,获利越多。如果你是一名 Web 相关的开发者,与其等待 Swift 增加 Web 开发的相关特性,还不如去学习一下 Go 语言 Web 编程。

如何开始 Swift 呢?

1、下载 Xcode6-Beta 版本。

2、下载苹果官方提供 Swift 编程语言电子书(https://itunes.apple.com/cn/book/swift-programming-language/id881256329?mt=11),中文版本:http://yuedu.baidu.com/ebook/6f6c3b1ef01dc281e43af000。读。

3、下载 WWDC Swift 的 Session 视频和PDF。看。

4、基于 Xcode6创建 Swfit 语言的项目,在项目中创建Playground,在其中调试玩耍。

5、根据官方提供的 GuidedTour.playground 学习 Swift 语法特性。下载地址: https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/swift_programming_language/GuidedTour.playground.zip

6、熟悉了基本的语法特性、与 OC 的混用、与 Cocoa 和 Cocoa Touch的交互、调试等功能之后,就可以构建你的第一个Swift App 了。

可以说 Swift 是我所见过关注度最高的新语言,一经推出即万众瞩目,媒体和开发者在数天之内对 Swift 进行了长篇累牍的报道和讨论,英文手册迅速被翻译成中文,即使是江湖上的另一位大佬谷歌 2009 年推出 Go 语言时也没有如此浩大的声势。当然,这和 Go 语言的定位有关,作为一门系统级的服务器端语言,开发者的可选余地太大了,如果谷歌推出 Go 是用来取代 Java 开发 Android App,那可能情况就完全不一样了。

经过 WWDC2014,苹果已经完全体现出了一个软件公司的创新能力和技术底蕴,无论是操作系统,编程语言,还是应用开发,苹果都已经准备好了,凝神静气,蓄势待发。作为开发者,我们要做的就是:Write the code, Change the world,然后期待下一个收获的季节!

每年 iOS 和 OS X 系统换代以前,苹果都会提前几个月向开发者发布测试版系统(Developer Preview 也好,Beta 也罢,只是个叫法)。然后我们就会在各个网站看到高手们刷机尝鲜,发文显摆。。。再然后我们又能看到 “太耗电”、“不稳定”、“不兼容” 等一堆抱怨,以及 “求救”、“跪求” 之类的悲剧贴(刷机之前居然不做备份,说你什么好)。前两天跟微博和 Twitter 上吐槽了一下,今儿正式写篇博客。你确定要刷测试版的系统?先琢磨琢磨自己的水平和需求再决定好吧?!

苹果干嘛提前把没做完的系统发出来

提前给苹果开发者们熟悉新系统、新 API。同时测试自己的软件在新系统下是否兼容,不稳定的话你也有几个月时间出新版本。

这样的好处就是,等新系统正式发布时,第三方软件们也几乎同时就更新了,用户不用担心兼容性问题。而且很快会有根据新系统特性的新软件出现,因为开发者提前几个月就开始动手了。

一切正常没问题那还叫测试版?

耗电多、不稳定、某些软件不兼容 …… 废话,什么叫测试版啊?什么问题都没有那苹果的工程师们这几个月就天天在办公室唱歌打麻将是么?本来就是暂时扔出来给开发者们试着用的系统,你一普通用户却拿来刷在了工作、生活用的机器上,出问题正常,不遇到麻烦那才见鬼。

我问过几个开发者,他们都不敢拿自己的主力设备刷测试版系统(尤其是第一个测试版),而是找个旧设备专门 “做实验” 了。因为他们是开发者,懂挂着 “Alpha”、“Beta”、“Preview” 的东西不靠谱。

刷机之前琢磨琢磨你的水平和需求

反倒是一群本来和开发者预览不沾边的普通用户,现在特别热衷于刷测试版系统。先是一群人喜欢折腾;另一群人,比如编辑,为了完成工作量为了吸引点击,不得不折腾。

然后,很多普通用户看完这些人写的东西后心里也痒痒了。先把非开发者下载安装开发者预览版系统是违法行为这一条放一边(反正说了你也不当回事),你确定自己的需求很强必须天前几个月用到那些新功能?你确定自己应付的了可能出现的问题?你确定出了问题不会影响正常的工作和生活?


  • Geek 实际是为了刷机而刷机的,就像当年玩超频的人,你以为他们的电脑真的不够快?
  • 还有些 “达人” 是为了获得存在感而臭显摆(微博的诞生让这些以前存在于论坛的家伙们更加自我膨胀了,一睁眼就看到一堆 “你好厉害” 的 @,很容易让人飘飘然);
  • 编辑为了完成工作量(中国的所谓的科技媒体的编辑,一点底线也没有,为了工作指标,换句话说为了自己那点工资,什么都写)发了点皮毛

你呢?先琢磨琢磨自己的水平,自己的需求,再决定是否刷机好吧。尤其是那些本来就对电脑和手机搞不太明白的小白用户,算了别折腾了。不是鄙视,这玩意儿就是个为你服务的工具,你又何必像那群技术宅一样折腾呢?折腾到最后,耗费时间精力不说,甚至忘了初衷是什么(就像当年很多人想写个博客,最后却陷入折腾 WordPress 的坑里了)。

当年 iOS 5 出测试版时,我拿 iPhone 4 刷过。能体验新功能的确不错,但耗电非常厉害,有时候我甚至能感觉到手机在裤子兜里的发热。从那以后,我只用正式发布版的系统。至于 MacBook Pro,我甚至是等新一代 OS X 系统正式版出来一段时间看大家评价后才敢升级 …… 吃饭的家伙儿,容不得出问题。

最后骂个街吧

乐意折腾也就算了,玩不转却还硬要尝鲜,手贱刷了机遇到问题就 “苹果真垃圾”、“千万别装新系统” ,自找不痛快了还到处嚷嚷。…… 对这号人我真忍不住要骂一句:贱人就是矫情。


本文写于 2013 年 6 月,以后每年 WWDC 之后都提到首页来吧。

前几天在 Twitter 上看到 @5key 买了一个叫 Slate Mobile AirDesk 的外设,看了一下,挺适合习惯趴在床上或者把笔记本电脑放在腿上的人,方便整洁不怕被烫。

其实就是一块木板,左侧放笔记本电脑,右上方是插手机或 iPad mini 的凹槽,右下方还为鼠标做了特殊涂层。而且,放笔记本的那部分木板,被打了很多空洞,既有利于电脑散热又能减轻重量。看段官方视频吧:

设计和做工不错,只是价格稍贵,邮购也不太方便(也许兲朝已经有山寨版了)。官网 http://iskelter.com/products/slates/slate-mobile-airdesk/

今天凌晨,苹果在 WWDC 2014 的新品发布会环节展示了新一代的 iOS 8 和 OS X Yosemite 操作系统,还有新的编程语言 Swift 等一堆硬货。今天一上网被铺天盖地的媒体报道和专家分析烦得不得了是吧?苹果fans 博客照例只写一篇 5 分钟无废话版简介。

OS X Yosemite

新一代的苹果电脑操作系统继续以风景区命名,而且这次的进化幅度要比去年 OS X Maverick 大得多(iOS 8 也是):

  • 扁平化+毛玻璃特效,这个不意外对吧。而且从演示效果来看,比去年 iOS 7 刚拍扁时顺眼多了。
  • Spotlight 搜索功能大升级,除了文件搜索还能直接找餐馆、看地图、查维基百科什么的了。搜索框和结果也从右上角搬到了屏幕中心(Alfred 哭死)
  • 通知中心支持 Widget 扩展,是不是把 Dashboard 挪那去了?
  • 内置 iCloud Drive 网盘功能(也有 Windows 版),这个太方便了。邮件也可以发送超大附件了。
  • MarkUp 标注识别功能,简单说就是你在图片上用鼠标简单画个箭头或文字气泡什么的,Mac 会识别过来并转换成正规的箭头和气泡。给图片或 PDF 文档添加标注时超方便。
  • Mac 和 iPhone 蓝牙连接后,直接在电脑上接打电话和收发短信。打个比方,iPhone 变成 Mac 的手机卡插槽。而且还有更多的同步融合功能,比如电脑上打开邮件应用,可以自动显示手机上写到一半的邮件接着写;Mac 上文档做到一半,出门打开 iPad 继续做 …… 苹果的平台整合功力继续碾压那些攒机厂商。
  • Safari 浏览器做了很多改进,比如选中地址栏但还没输入网址时,自动弹出书签;还有标签滚动显示等等。

更多介绍,看苹果官网吧 http://www.apple.com/osx/preview/。强烈建议大家看发布会的演示视频,尤其是 Mac 和 iPhone 协同那一段。

OS X Yosemite 系统今年秋天出正式版,免费。心急的话现在就可以下载 Beta 版试用,面向全体用户开放的,不是开发者也没问题。

iOS 8

  • 可以从通知中心和锁屏界面直接回复短信或社交应用推送来的信息了。通知中心里还能安装 Widget 扩展功能。
  • 短信应用大升级,支持群聊,支持按下直接录微信那样的语音 iMessage,甚至可以发视频和地理位置。
  • 输入法增加 QuickType 功能,自动推测你下面要输入什么内容,显示在候选栏里,点一下就行不用打字了(支持中文)。
  • 可以有第三方输入法了(这恐怕是越狱的最大动力了吧),指纹识别也可以让第三方应用调用了(支付宝什么的刷指纹而不是输密码)
  • AirDrop 终于支持 Mac 和 iOS 设备之间传输
  • 一家人可以共享照片、日历等项目,熊孩子乱按乱买 App 的话,家长的手机上会提示输入密码。

还有 支持应用之间数据互通,Spotlight 搜索增强(见上一段 Mac 那部分),Siri 支持听声音识别歌名,更多的照片美化功能,更强的游戏画面渲染功能,HomeKit 智能家居方案+CloudKit 云存储方案+Health 健康与运动数据方案(都是面向开发者的)…… 等等等等功能。看苹果官网介绍吧 http://www.apple.com/ios/ios8/

iOS 8 系统也是今年秋天正式发布,现在的 Beta 版只有苹果开发者可以下载。坏消息是:iPhone 4 被踢出可升级机型列表了。

最后,苹果还发布了新的编程语言:Swift。看起来比 Objective-C 简单得多。


苹果中国官网还没更新,所以放的是美国官网的英文页面地址。发布会视频也没贴出来。过几小时发布会视频和中文版网页上线,我会更新本文。


更新,发布会视频:

电脑前的沃兹尼亚克

[核心提示] 为了庆祝 BASIC 诞生五十周年,斯蒂夫·沃兹尼亚克写讲述了他与这个广受欢迎的开发语言的旧事,他是如何为 Apple I 和 Apple II 从零开始创造了他自己的 BASIC 语言。

分页: 29/66 第一页 上页 24 25 26 27 28 29 30 31 32 33 下页 最后页 [ 显示模式: 摘要 | 列表 ]