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
rainex
V2EX  ›  iDev

Swift 版本升级改变那么多问题,是否说明设计者实力很成问题?

  •  
  •   rainex · 2017-01-28 00:53:26 +08:00 · 9285 次点击
    这是一个创建于 2860 天前的主题,其中的信息可能已经有所发展或是发生改变。
    拿 c#来对比,版本升级至少没让开发者经历这么大的痛苦。

    客观说,设计者实力有差距,而且差的不是一点点吧?没想清楚就干,干完再改,把设计语言当普通项目看么?
    51 条回复    2017-02-20 23:18:16 +08:00
    dtfm
        1
    dtfm  
       2017-01-28 00:58:28 +08:00   ❤️ 2
    Python 蟒叔脸都绿了
    clavichord93
        2
    clavichord93  
       2017-01-28 01:20:10 +08:00 via iPhone
    @dtfm
    kingcos
        3
    kingcos  
       2017-01-28 01:23:58 +08:00 via iPhone
    痛苦并没有很大吧…
    不过确实语法变动大一点,但这才出的第几个年头…毕竟开源,也不是设计者一个人拍案决定的吧。
    Swift 创始人,就是跑特斯拉那货不还是很流弊的吗……
    aminic
        4
    aminic  
       2017-01-28 01:24:57 +08:00 via Android   ❤️ 1
    Python 年代久远,通过其不断打补丁的方式升级,熟手完全可以写出 23 兼容的代码。 swift 刚出没几年就飚版本同时向下兼容天差地别,从这点来说设计者功力没法和 c#的设计者 anders 相比。
    sadaharu09
        5
    sadaharu09  
       2017-01-28 05:19:35 +08:00
    大家要对 Apple 有信心,我相信几十个亿砸进去,绝对可以让 Swift 发展壮大。
    ericls
        6
    ericls  
       2017-01-28 06:01:03 +08:00
    @dtfm python 变化挺小的啊。。。

    你确定你写过 python 吗

    像 elm 这么好的东西 随便怎么变 我都喜欢
    halden
        7
    halden  
       2017-01-28 06:27:41 +08:00 via iPhone
    楼主听过 Angular 吗?
    eyp82
        8
    eyp82  
       2017-01-28 06:53:43 +08:00   ❤️ 1
    @ericls 大家都在吐槽 py2-3, 实际不知道有多少人写过 2-3 代码. 实际有个 six 之类的库基本可以无缝切换了.
    pollow
        9
    pollow  
       2017-01-28 07:17:23 +08:00 via Android
    @aminic 搞 PL 有几个比得过 anders
    Felldeadbird
        10
    Felldeadbird  
       2017-01-28 07:56:19 +08:00 via iPhone
    前几个版本不稳定可以接受,但是当 3 版本后,隔一年又来一个 4 版本。又不向后兼容。问题就大。
    laoyur
        11
    laoyur  
       2017-01-28 09:23:20 +08:00 via iPhone
    最近两个项目还是用的 2.3 ,真想说辣鸡,访问限制设的不对,编译 OK ,运行时直接 crash ,查了 N 久
    同样的 app ,安卓包 7M , iOS 50M ,大写的尴尬
    下个项目必须 3 了,改动还是有点的
    mooncakejs
        12
    mooncakejs  
       2017-01-28 09:27:05 +08:00
    不搞向下兼容的语言都是坑
    wohenyingyu02
        13
    wohenyingyu02  
       2017-01-28 09:35:02 +08:00 via iPhone
    @kingcos Xcode 不是一键转换……
    plqws
        14
    plqws  
       2017-01-28 10:37:18 +08:00
    Xcode 的一键转换能从 100 个错误转换成 999 个错误
    fy
        15
    fy  
       2017-01-28 11:02:13 +08:00
    LLVM 的作者,实力很成问题?楼主你逗我
    uxstone
        16
    uxstone  
       2017-01-28 11:09:30 +08:00   ❤️ 1
    私人项目想怎么改怎么改
    对外发布出来的项目,而且还是作为一门语言发布出来的项目,就不应该这么折腾了.
    如果不是 apple 的平台,谁会吊这种一年变一次的语言?
    expkzb
        17
    expkzb  
       2017-01-28 12:00:46 +08:00 via iPhone
    双刃剑
    phrack
        18
    phrack  
       2017-01-28 12:36:00 +08:00 via Android
    实力肯定是没有问题的,但是有失手的嫌疑。

    主要由商业公司驱动,开发和维护的语言都有些让人不爽的特性,做决定的人对社区的想法客观上有忽视。
    zxhhh
        19
    zxhhh  
       2017-01-28 14:23:51 +08:00
    @plqws 哈哈哈真的是很蛋疼,之前研究过一段时间的 Swift 后来升级了一下 Xcode 然后再打开提示我升级然后我就升级了,后来就整项目全是错误然后我就再也没玩 Swift 了~
    reus
        20
    reus  
       2017-01-28 15:07:51 +08:00   ❤️ 1
    同样是新出的语言, go 五年了, go 1.0 发布时就保证不会做不兼容的语言更新, go 1.0 可以编译并正常运行的程序,到现在 1.8 快出了,依然保证可以编译运行,一点不用开发者操心。

    rust 也是, 1.0 发布之后,也不像过去那样了,保证兼容。

    而 swift 根本就没有这种意识。未必是实力不行,只是没有承诺的意识,没有想过要保护开发者的时间投入,过于随意。

    这种行事风格,和 LLVM 一脉相承,版本之间的 api 变化很多。 LLVM 这种编译器后端就算了,毕竟使用者不多。但是一个给应用开发者使用的语言,也搞这种不兼容更新,就很不厚道了。
    anonymityl
        21
    anonymityl  
       2017-01-28 16:14:05 +08:00
    @reus 背后是苹果吧,苹果的生态让他在与开发者谈判的地位上处于不用讨好开发者的地位, xcode 这么难用应该是一个例证吧。
    kitalphaj
        22
    kitalphaj  
       2017-01-28 16:54:53 +08:00
    这样的做法并没有任何问题,强行向下兼容才容易导致语言左后设计得四不像。换句话说,你自己开发的程序不也要经常重写或者变架构么?
    WildCat
        23
    WildCat  
       2017-01-28 18:46:20 +08:00
    说实话我都不想用 Swift 了。之前用 Swift 2 写的 V2EX 客户端,好久不更新了,一个用户给我反馈问题让我修复下 bug 。
    我编译了下,迁移到 3 ,然后成吨的错误不想改了。。。
    dorentus
        24
    dorentus  
       2017-01-28 18:55:48 +08:00 via iPhone
    learnshare
        25
    learnshare  
       2017-01-28 19:19:55 +08:00
    @halden ng 还好吧,两个版本的设计之初也间隔五六年

    也恰好是前端大爆发的时候
    exploreexe
        26
    exploreexe  
       2017-01-28 19:37:23 +08:00
    看了 LS 很多人的吐槽 感觉大家对 Xcode 和 swift 的感觉都差不多。 Xcode 每一次版本升级都是痛苦的,各种小毛病不断。
    AlexaZhou
        27
    AlexaZhou  
       2017-01-28 20:54:38 +08:00
    其实 Swift 并没有 APPLE 宣传的那么好。

    AnyFlow 的前端界面用 Swift 实现的,在 swift 和 oc 交叉调用的地方,额外花了很多精力去解决一些莫名其妙的问题,如果纯用 OC ,会简单很多
    tzm41
        28
    tzm41  
       2017-01-28 22:00:34 +08:00
    Swift 3 到 4 是承诺不会出现 breaking change ,可能只有一两个例外情况。
    发展得快,很多特性还是很喜欢的。
    wenssh
        29
    wenssh  
       2017-01-28 22:15:06 +08:00
    @laoyur 用 OC 不也是这样吗? iOS10 新加的访问权限跟 swift 没关系吧
    halden
        30
    halden  
       2017-01-29 00:46:17 +08:00 via iPhone
    @learnshare 参考隔壁 react ,虽然这样比不太公平。。
    bombless
        31
    bombless  
       2017-01-29 01:39:23 +08:00 via Android   ❤️ 2
    目标的问题。一般软件供应商会认为兼容性关系到生死存亡,这个团队没有这种概念罢了

    任何系统只要还在用都会有人觉得需要从新设计的,剩下的就看有没有人推动这事了

    具体拿 c#举例,闭包完善了之后委托的设计就比较蛋疼了,范型的设计完善了之后原有的迭代器接口的设计就比较蛋疼了,范型用多了之后原有的范型参数列表语法的二义性就比较蛋疼了,这些都是 c#放弃兼容性之后能改进的
    laoyur
        32
    laoyur  
       2017-01-29 09:24:49 +08:00 via iPhone
    @wenssh 我没表达清楚,是访问控制修饰关键字, private public 之类的,编译通过无警告,然而运行时秒崩,也看不出哪里挂,排查好久才试出来,换你你气不气
    CYKun
        33
    CYKun  
       2017-01-29 09:28:18 +08:00 via Android
    然而向后兼容做的最好的 Java 天天被你们吐槽
    zgqq
        34
    zgqq  
       2017-01-29 09:52:34 +08:00 via Android
    java 这方面应该算不错
    learnshare
        35
    learnshare  
       2017-01-29 10:37:56 +08:00
    @halden react 一开始就有的设计思想, ng2 是后来才学到的
    kanezeng
        36
    kanezeng  
       2017-01-29 11:05:34 +08:00
    @halden angular 1 出来得太早,好多现在的标准都没有所以比较惨。 2 的话可以充分利用现代新标准了,所以有些比较大的变动出现在 1 和 2 之间我觉得是可以理解的吧。
    halden
        37
    halden  
       2017-01-29 11:40:55 +08:00
    @learnshare @kanezeng 所以我后面说这样比不是很公平,但你也不能说锅都是标准的问题
    dant
        38
    dant  
       2017-01-29 13:41:17 +08:00 via Android
    @fy 会做编译器不代表会做语言。
    Arcus
        39
    Arcus  
       2017-01-29 14:24:52 +08:00 via Android
    @CYKun 这是走向另一个极端了吧
    fy
        40
    fy  
       2017-01-29 14:59:58 +08:00
    @dant 这是门槛
    Balthild
        41
    Balthild  
       2017-01-30 01:40:36 +08:00
    @fy 达到门槛的那部分人之中,也有个高低之分。
    Tianqi
        42
    Tianqi  
       2017-01-30 12:39:27 +08:00 via iPhone
    @CYKun 哎, c++也是,都是泪啊
    fy
        43
    fy  
       2017-01-30 13:48:53 +08:00
    @Balthild 所以呢……
    valkjsaaa
        44
    valkjsaaa  
       2017-01-30 16:56:46 +08:00
    突然想到联系到另外一个帖子,如果 Swift 早日实现自举,估计他们就不想天天改不兼容的语法了。

    要不他们自己也得把代码全部更新一遍, 23333333 。
    laxenade
        45
    laxenade  
       2017-01-31 10:34:59 +08:00
    @mooncakejs #12 长期来看,一直向下兼容也不一定是好事。比如 Java 每次更新都因为要兼容之前的顾虑太多导致发展太慢。
    mooncakejs
        46
    mooncakejs  
       2017-01-31 10:59:41 +08:00
    @laxenade 长期来看向下兼容正是好事,向下兼容才是对开发者负责。这方面看 php 和 java c#都不错。
    laxenade
        47
    laxenade  
       2017-01-31 11:04:51 +08:00
    @mooncakejs #46 php 没用过不是很清楚不好评论。 C#的做法我比较认同,只向下兼容两三个版本比较合适,一直向下兼容只会让系统越来越臃肿。
    mooncakejs
        48
    mooncakejs  
       2017-01-31 11:08:47 +08:00
    @laxenade 微软是向下兼容的楷模, c#向下兼容不止两三个版本。历史包袱太大宁可新开一个坑,比如苹果不再升级 oc 搞 swift ,可惜苹果的新坑也没开好。
    onesecure
        49
    onesecure  
       2017-02-02 13:30:10 +08:00
    “ Swift 从精通到重学”,苹果这么专横是有它的考量的。设想你是 Swift 语言的使用者,你能否因为它不向下兼容而弃用,如果你的选择是“不能弃用”,那么与你持同样想法的人在 Swift 语言的使用者中比例多少?如果这个比例足够高,那么苹果就会选择“抛弃包袱,拒绝兼容”的策略,否则它会做出相反的选择。
    tvallday
        50
    tvallday  
       2017-02-02 17:44:39 +08:00
    一门新语言还是要很长时间去适应的。现在用 swift 的都是小白鼠,苹果才不管你们,谁叫他生态系统这么大这么好赚钱,一个 OC 已经足够用, swift 只不过是苹果锦上添花之作,它有着更长远的打算。
    zenghaojim33
        51
    zenghaojim33  
       2017-02-20 23:18:16 +08:00
    苹果的产品哪里有兼容性可言...swift 不是唯一一个也不会是最后一个
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4103 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:15 · PVG 13:15 · LAX 21:15 · JFK 00:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.