对吐槽的引用如下:
事实上我其实觉得 Apple 的 Swift 开发团队是 Apple 里最优秀的工程师团队,但是工作还没有完成。现在还到处都是 bug,经常崩溃,偶尔还会生成错误代码。更严重的是,它真的很慢。非常非常慢。不能增长式编译是最大的问题。我们构建的是一个有 UI 的应用,所以我们得花上和考虑如何促进学习差不多相同的时间来打磨应用的用户交互和动画 ,然而每次都要花接近两分钟才能看到效果实在是很伤 -- 并不仅仅是效率而是士气。这让所有人都很愤怒,基本上所有时间所有人都很愤怒。更糟的是,这让我们变懒了。因为太慢,我们不想改东西,所以如果用 Swift 实现的 UI 比 Objective-C 实现的 UI更难看我一点都不会吃惊,因为在上面的迭代总是让我们崩溃。
PS: 现在我正在尝试 Xcode 6.3 Beta 2, 感觉编译速度上已经好很多了.
1
Karsa 2015-02-26 10:54:51 +08:00
一直在关注他是否变好,可能在逐步变,但一直没有到能替代oc的地步
|
2
freefcw 2015-02-26 10:57:36 +08:00
翻译得很别扭??
增长式编译会不会是增量编译? |
3
banxi1988 OP @freefcw
确实,翻译得不地道,就是增量编译 原文: > The lack of incremental compilations is the biggest pain point for me. 我认为这样翻译比较好: > 对我来说,没有增量编译是最大的痛点 痛点一词我感觉是常用的. Xcode 6.3 beta 也带来了此特性,Release Note 如下: > Swift now supports building targets incrementally, i.e. not rebuilding every Swift source file in a target when a single file is changed. This is based on a conservative dependency analysis, so you may still see more files rebuilding than absolutely necessary. If you find any cases where a file is not rebuilt when it should be, please file a bug report; running Clean on your target should then allow you to complete your build normally. (18248514) @Karsa 我初学就是用 Swift 来写项目的了,在我来看,OC 只是辅助的地位. 因为我觉得写 Objective-C 代码有点难受. |
4
palxex 2015-02-26 12:01:32 +08:00 1
swift走的是C++的老路:静态类型,模板化参数,编译期绑定。即使实现了增量式编译,我也不看好它的编译速度能有多快。
苹果的系统一直是用动态语言构建的,想一步登天改成swift这样一个静态语言,结果就是以前鸭子类型遮住的bug一下子全都暴露出来了。现在仅限于xcode都这么能死,我不敢想象苹果一旦决定用swift改写系统组件会是什么级别的地震。 |
5
damngood 2015-02-26 12:16:05 +08:00
@palxex objc 应该不能算为 duck type 这个类别里面
更严格的编译器检查把潜在的 bug 提前暴露出来不是好事么. 只是工作量应该有点大. 看最近 swift 的变化, 感觉和已有的 c/objc 库之前的契合要越来越好. 所以个人觉得完全 swift 化应该不是件很紧急的事情. |
6
arachide 2015-02-26 13:09:01 +08:00
小众语言
皈依偶们大javascript吧 |
8
palxex 2015-02-26 13:30:32 +08:00
@damngood objc里有能力给任意object发任意message……这比一般意义上的duck typing都要强。http://en.wikipedia.org/wiki/Duck_typing#In_Objective-C
静态强类型是有上面列举的好处,这点应该承认,但得到这些好处并非没有代价。它本身是会极大阻碍语言自身的表达力的。举个最简单的例子,纯swift里——跟C++一样——连json字面量都写不出来。所有swift的json库,你可以看看是否有不基于ObjC的NSDictionary做出来的。参数化类型(C++模板/swift范型)为此能做的不多,但是拖慢编译时间有余。而语言的表达力和编译速度是快速迭代的基石。这基本上可以解释C++为什么在今天不再是主流前端语言,而我看不出为什么swift会例外。 注:我本人没在用swift做开发,仅就了解到的情况评论,听者自辩。以上仅就当前swift与objc泾渭分明的情况立论,未来可能swift和objc会从语言层面进一步融合,我个人认为只有那样它才有替代objc的可能。 |
9
arachide 2015-02-26 13:54:20 +08:00
偶过去写的代码 能用奔放一说的
只有 1.javascript 2.objectpascal(delphi) 3.objective-c(cocoa) 别的都多少有些不爽 |
11
pepsin 2015-02-26 16:00:10 +08:00
苹果里面感觉就没有差劲的工程师团队,每次看里面出来的人的活,都只能惊呼不可战胜
|
13
garfeildma 2015-02-26 16:10:46 +08:00
duck typing本身是一个扯淡的词,不过是一种late binding
|
14
palxex 2015-02-26 16:36:32 +08:00
@garfeildma 同出而异名罢了。late binding着重在绑定时间上,duck typing则着重强调忽略类型调用的能力,在讨论语言表达能力时后者更切题一点——虽然说的的确是同一个概念。
|
15
bombless 2015-02-26 19:46:12 +08:00
你们看增长式编译难道看不出说的就是增量编译?
我自己觉得完全不影响阅读。 恰好昨天晚上也是看到某微信公众号在推这篇文章,我还把这段截屏了丢到vczh的群上。 |
16
arachide 2015-02-26 20:22:29 +08:00 via Android
不皈依javascript的 都是浮云
|
17
notcome 2015-02-27 08:20:37 +08:00 via iPhone
静态类型表达能力有限………………
Chris Lattner 为什么不干脆把 Haskell 全抄过来,然后雇人写个好点的教程,哪有这么多麻烦事,要性能有性能,要表达能力有表达能力,要安全有安全。 |
18
garfeildma 2015-02-27 10:13:44 +08:00
@notcome 那就没几个人学得会了
|
19
notcome 2015-02-27 12:22:23 +08:00
@garfeildma 哈哈哈
|
20
wezzard 2015-03-06 10:14:09 +08:00
Swift內的對象在內存模型上完整實現了 NSObject 這個 protocol,所以也是具有一定動態性的,只是不知道爲甚麼蘋果不開放出來。
另外,表面上看 Swift 的任何 class 都是沒有根類的,但是其實是有的,這個根類叫 SwiftObject。 |
21
rainex 2015-03-08 04:27:02 +08:00
c#已经很好了,碍于面子不用,重新造轮子
|