玩玩而已别当真已

热门搜索:
手机扫描"二维码"
高速省流量阅读
发布时间:1分钟前
书籍:17本 ()
书包网所收录免费小说、书友评论、用户上传文字、图片等其他一切内容及书包网所做之广告均属用户个人行为,与书包网无关书包网所收录免费小说如有侵犯您的合法权益请在本站留言,书包网会在24小时之内删除您的作品。谢谢!Copyright &
Beta All Rights Reserved. 蜀ICP备号-1Apple 发布 Swift 语言,不是玩玩而已
如何评价 Swift 语言?
知乎用户,iOS开发人员,喜欢睡觉,看书,编程
今天一整天在看这个 swift, 也下载了 Xcode 6 的 beta 版本来试验了一下。现在可以初步评价一下。假如不对的地方,我以后再更正。
swift 跟 objc 共用同一套的运行时环境
swift 的类型,可以桥接到 objc 的类型,反之也一样。比如 string 对应原来 objc 的 NSString, closures 对应 objc 的 block,等等。objc 原有的库,实现不用改写,swift 就直接可以使用了(最多加个声明文件),所以 swift 一开始就已经有了 objc 积累下来的大量库。看两个 API 的声明,对比一下
dispatch_apply(size_t iterations, dispatch_queue_t queue,
void (^block)(size_t));
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)
func dispatch_apply(iterations: UInt, queue: dispatch_queue_t!, block: ((UInt) -& Void)!)
func touchesBegan(touches: NSSet!, withEvent event: UIEvent!)
「swift 的标准库太差」的说法,是完全不成立的。
同一个工程,可以同时使用 swift, objc, c, c++ 四种编译语言(额外嵌入的脚本语言另算)
原来的 iOS/Mac 工程,已经可以同时使用 objc, c, C++ 三种语言。现在支持第四种。objc, c, c++ 三种语言的结合很容易, objc 跟 c 本身就兼容,objc 跟 c++ 结合只要将文件名改成 .mm。而 swift 跟其它语言的结合,需要另外的文件进行桥接,其实也挺方便的。
这里的桥接真的很容易,Apple 自家的各种 C 库真的移植过来了。比如 Core Image/Audio,直接包含
import CoreAudio
import CoreImage
就可以使用了。
现在 swift 完全可以跟 objc 并存,原来的工程不建议重写,也不用重写。顺其自然,慢慢让它进化就是了。
swift 写法看起来像脚本语言,但它是真正的编译语言
初学者,看它使用了
var b = "hello"
没有类型定义,就想当然的觉得它是脚本语言,解释执行,这是错误的。上面两行语句是用了类型推导,类似 C++ 里面的 auto。swift 跟 objc 的运行时环境一样,写的程序跑起来不会比 objc 慢。swift 区分了 struct 和 class, 分别使用传值跟传引用。适当地使用 struct,应该会比 objc 要快一点。
swift 吸收了很多其它语言的语法,写起来比 objc 简洁得多,不过它骨子里面的概念,跟原来 objc 差不多
编程语言的语法重要,但是语法背后的概念更重要。比如面向对象,常用概念无非是,继承,多态,封装,信息隐藏等。继承又可能分成多重继承,接口继承,实现继承。或者还会有些嵌套类,嵌套函数等等。
当明白语法背后的概念,知道为什么需要有这些东西。之后从一门语言切换到另一门有着相同概念的语言,其实很容易。
而语法会影响表达,理论上每门语言都可以表达任何概念。不过当某种概念在某门语言中,很难表达出来,就会倾向于不这样使用它,这种概念在那门语言的社区就难以被人熟知。
感觉上,swift 有着 obj-c, C++, Ruby 的影子。
暂时,我自己最喜欢的 3 个特性有
tuple,终于可以返回多个数值了。一行交换两个值。C++ 里面的 tie+tuple 也可以实现类似功能,不过使用库,显得噪音太多。
closure,喜欢它的简写,还有在函数最后一参数,可以写在 () 外面。这些特性,用来写函数式风格的程序,会很好看。而原来objc 的block, 还有 C++ 的 function, 就太啰嗦了。
switch,case 里面的条件匹配。
这些语法,编译最后还是会映射成原来 objc 的运行模型。原来 objc 的概念,引用记数,ARC, 属性,协议,接口,初始化,扩展类,匿名函数等等,继续有效。
我将 swift 看成是 objc 的一块大大的语法糖。
有个大块头的东西,是原来 objc 没有的,就是泛型。这个也不是新鲜概念了,已在 C++ 中出现 N 年了。
总的说来,swfit 支持的泛式,结构化,面向对象,泛型,函数式。其实来来去去都是这些啊。
因为 swift 这些新语法,会比 objc 更好地支持内部 DSL。
认为所有人都是 0 基础的,是错误的
有些人学得特别快,因为之前的基础好。语言的语法只是表面,表面的东西总是变动得比较快的。底下的东西重要得多,而看不见。水面一块冰,有些人是冰山露出一角,有些人是无根的浮冰。看起来差不多,其实差别十分之大。
我自己的水平,仅是中上一点,那本 The Swift Programming Language 我今天翻完了。很多东西,看那个例子,不用看后面的解释,就知道是什么意思。当然太细节的东西,还不是太记得,但可以动手写 swift 程序了。我相信有些人,在两个小时之内就可以使用这门新语言。
提提那个 Playground
之前苹果的员工,Bret Victor 演讲过个视频。提到这个这种可视化编程。当我们每一步操作,都得到实时地反馈,我们的做法会有很多不同,做出的东西也会不同。这个 Playground,用来学习 swift 的特性很好用,不过我还不知道怎么才能跟工程结合起来使用,不作评论。
现阶段,我自己的做法
我自己写的新项目,会有一部分使用 swift 来编写。不过还是会以 objc 为主。我发觉现在 Xcode 6 beta 版本,对 swift 的语法提示支持不好,不能打几个字母就自动完成。再观察一阵子。
我不敢展望太多,或者预测什么,通常提前预测都是错的,会让人抓住把柄。但感觉 Apple 发布 swift, 绝不是玩玩而已。玩玩而已by巴默默.txt
扫描二维码,下载文件到手机
发送给微博、QQ、MSN等好友吧
当前文件信息
浏览:808次
保存:49次
下载:282次
您的VIP会员已过期,是否续费?
用户应遵守著作权法,尊重著作权人合法权益,不违法上传、存储并分享他人作品。举报邮箱:
京网文[0号 京ICP证100780号

我要回帖

更多关于 玩玩而已txt 的文章

 

随机推荐