V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
banxi1988
V2EX  ›  iDev

objc.io issue 20 的一篇访谈, 谈 Swift 目前另人难受的地方 很有同感

  •  
  •   banxi1988 ·
    banxi1988 · 2015-02-26 10:49:26 +08:00 · 4716 次点击
    这是一个创建于 3559 天前的主题,其中的信息可能已经有所发展或是发生改变。

    终身学习的一代人

    对吐槽的引用如下:

    事实上我其实觉得 Apple 的 Swift 开发团队是 Apple 里最优秀的工程师团队,但是工作还没有完成。现在还到处都是 bug,经常崩溃,偶尔还会生成错误代码。更严重的是,它真的很慢。非常非常慢。不能增长式编译是最大的问题。我们构建的是一个有 UI 的应用,所以我们得花上和考虑如何促进学习差不多相同的时间来打磨应用的用户交互和动画 ,然而每次都要花接近两分钟才能看到效果实在是很伤 -- 并不仅仅是效率而是士气。这让所有人都很愤怒,基本上所有时间所有人都很愤怒。更糟的是,这让我们变懒了。因为太慢,我们不想改东西,所以如果用 Swift 实现的 UI 比 Objective-C 实现的 UI更难看我一点都不会吃惊,因为在上面的迭代总是让我们崩溃。

    PS: 现在我正在尝试 Xcode 6.3 Beta 2, 感觉编译速度上已经好很多了.

    21 条回复    2015-03-08 04:27:02 +08:00
    Karsa
        1
    Karsa  
       2015-02-26 10:54:51 +08:00
    一直在关注他是否变好,可能在逐步变,但一直没有到能替代oc的地步
    freefcw
        2
    freefcw  
       2015-02-26 10:57:36 +08:00
    翻译得很别扭??

    增长式编译会不会是增量编译?
    banxi1988
        3
    banxi1988  
    OP
       2015-02-26 11:03:53 +08:00
    @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 代码有点难受.
    palxex
        4
    palxex  
       2015-02-26 12:01:32 +08:00   ❤️ 1
    swift走的是C++的老路:静态类型,模板化参数,编译期绑定。即使实现了增量式编译,我也不看好它的编译速度能有多快。
    苹果的系统一直是用动态语言构建的,想一步登天改成swift这样一个静态语言,结果就是以前鸭子类型遮住的bug一下子全都暴露出来了。现在仅限于xcode都这么能死,我不敢想象苹果一旦决定用swift改写系统组件会是什么级别的地震。
    damngood
        5
    damngood  
       2015-02-26 12:16:05 +08:00
    @palxex objc 应该不能算为 duck type 这个类别里面

    更严格的编译器检查把潜在的 bug 提前暴露出来不是好事么.
    只是工作量应该有点大.
    看最近 swift 的变化, 感觉和已有的 c/objc 库之前的契合要越来越好. 所以个人觉得完全 swift 化应该不是件很紧急的事情.
    arachide
        6
    arachide  
       2015-02-26 13:09:01 +08:00
    小众语言

    皈依偶们大javascript吧
    alsotang
        7
    alsotang  
       2015-02-26 13:16:56 +08:00
    @arachide 哈哈哈哈,说得好。js all the things
    palxex
        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的可能。
    arachide
        9
    arachide  
       2015-02-26 13:54:20 +08:00
    偶过去写的代码 能用奔放一说的

    只有

    1.javascript
    2.objectpascal(delphi)
    3.objective-c(cocoa)

    别的都多少有些不爽
    robertlyc
        10
    robertlyc  
       2015-02-26 15:26:05 +08:00
    @palxer 同意 静态强类型的语义表达真的有限 对比duck typing 其实是在开倒车
    pepsin
        11
    pepsin  
       2015-02-26 16:00:10 +08:00
    苹果里面感觉就没有差劲的工程师团队,每次看里面出来的人的活,都只能惊呼不可战胜
    arachide
        12
    arachide  
       2015-02-26 16:06:24 +08:00
    @pepsin 小米锤子秒杀苹果
    garfeildma
        13
    garfeildma  
       2015-02-26 16:10:46 +08:00
    duck typing本身是一个扯淡的词,不过是一种late binding
    palxex
        14
    palxex  
       2015-02-26 16:36:32 +08:00
    @garfeildma 同出而异名罢了。late binding着重在绑定时间上,duck typing则着重强调忽略类型调用的能力,在讨论语言表达能力时后者更切题一点——虽然说的的确是同一个概念。
    bombless
        15
    bombless  
       2015-02-26 19:46:12 +08:00
    你们看增长式编译难道看不出说的就是增量编译?
    我自己觉得完全不影响阅读。

    恰好昨天晚上也是看到某微信公众号在推这篇文章,我还把这段截屏了丢到vczh的群上。
    arachide
        16
    arachide  
       2015-02-26 20:22:29 +08:00 via Android
    不皈依javascript的 都是浮云
    notcome
        17
    notcome  
       2015-02-27 08:20:37 +08:00 via iPhone
    静态类型表达能力有限………………
    Chris Lattner 为什么不干脆把 Haskell 全抄过来,然后雇人写个好点的教程,哪有这么多麻烦事,要性能有性能,要表达能力有表达能力,要安全有安全。
    garfeildma
        18
    garfeildma  
       2015-02-27 10:13:44 +08:00
    @notcome 那就没几个人学得会了
    notcome
        19
    notcome  
       2015-02-27 12:22:23 +08:00
    @garfeildma 哈哈哈
    wezzard
        20
    wezzard  
       2015-03-06 10:14:09 +08:00
    Swift內的對象在內存模型上完整實現了 NSObject 這個 protocol,所以也是具有一定動態性的,只是不知道爲甚麼蘋果不開放出來。
    另外,表面上看 Swift 的任何 class 都是沒有根類的,但是其實是有的,這個根類叫 SwiftObject。
    rainex
        21
    rainex  
       2015-03-08 04:27:02 +08:00
    c#已经很好了,碍于面子不用,重新造轮子
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   868 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 21:53 · PVG 05:53 · LAX 13:53 · JFK 16:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.