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

程式师应该要放心大胆地用 Swift 重写 C++ 的东西

  •  
  •   ShikiSuen · 2022-05-02 01:24:41 +08:00 · 6474 次点击
    这是一个创建于 696 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Swift 5.x 以及 SwiftUI 在全球 Cocoa Devs 群体掀起了一阵旋风,这股旋风也吹到了台澎金马的技术社群里头。

    我们所敬爱的业界前辈保哥,就在 GitHub 上利用了他的宝贵时间,将某农作物注音输入法内充满类型安全问题的 ObjC 部分用 Swift 重写了一半。之后,还给这款输入法引入了状态管理架构,还强调了 Swift 的类型安全性有多重要。

    威注音专案为了要厚颜无耻地蹭保哥的热度,在此给出了实际表率:自己分离出来成为独立的专案,将保哥没有完成的那部分 ObjC++ 也几乎用 Swift 重写殆尽、甚至将语言模型模组也全都用 Swift 重写了。威注音主张:一款专案,无论内部的 C++ 模组多么机巧高深,都要尝试用 Swift 去重写、而不是在那里沉浸于「一定要膜拜那些擅长玩弄记忆体指针的 C++ 大佬们」的那种政治气氛。如果一款产品的开发参与者们将彼此之间的表面上的礼仪关系看得比产品品质还要远远更重要的话,那这基本就是 product quality ensurance 的大敌。

    (这假掰文写不下去了,我学不来这种文风[1]。)

    1^ 杨维中《工程师应该要放心大胆地不写文档》 https://p5d12000.medium.com/543c11062cd6

    第 1 条附言  ·  2022-05-02 08:04:22 +08:00
    Fix: ensurance -> insurance.
    8 条回复    2022-05-04 14:20:27 +08:00
    weak
        1
    weak  
       2022-05-02 02:03:52 +08:00 via Android
    程式师=程序员 看标题我就知道发帖的来自台湾
    ShikiSuen
        2
    ShikiSuen  
    OP
       2022-05-02 10:09:27 +08:00
    @weak Xcode 目前尚未提供原生的 Rust 支援。
    ShikiSuen
        3
    ShikiSuen  
    OP
       2022-05-02 10:10:14 +08:00
    @weak 另外我这篇是模仿原文的文风。
    Building
        4
    Building  
       2022-05-02 12:35:01 +08:00 via iPhone
    Swift 5.x 及 SwiftUI 在全球 Cocoa Devs 群体中掀起了一阵旋风,这股旋风吹到了台澎金马的技术社群里。
    保哥是一名受人尊敬的业界前辈, 他最近将宝贵的时间利用在了 GitHub 上,将某农作物注音输入法内充满类型安全问题的 ObjC 语言部分用 Swift 语言重写,还给这款输入法引入了状态管理架构,并强调了 Swift 类型的安全性。
    威注音专案跟随保哥的热度,也给出了实际表率,决定自己分离出来成为独立的专案,将保哥没有完成的 ObjC++ 部分全部用 Swift 重写,甚至包括其中的语言模型模组。威注音主张说明一款专案,无论内部的 C++ 模组多么机巧高深,都建议尝试用 Swift 去重写,而不是沉浸于“一定要膜拜那些擅长玩弄记忆体指针的 C++ 大佬们”的政治气氛。
    如果一款产品的开发参与者们将彼此之间的表面礼仪关系看得比产品品质更重要的话,那这是 product quality ensurance 的大敌。
    agagega
        5
    agagega  
       2022-05-02 14:25:14 +08:00
    - C++在所有平台的 GUI 开发上都是一等公民,开发工具会主动支持 C++代码。Swift 在 Apple 平台里属于一等公民,Rust 在哪都不是
    - Swift 于 2014 年发布,2015 年开源并支持 GNU/Linux ,2020 年支持 Windows ,然后到现在都没有一个 FreeBSD 的 package ,这社区力量也太弱了点
    - Apple 对 Swift 开源这事相比微软缺乏诚意。微软用开源的.NET Core 实现统一了不同平台.NET 的基础部分,但 Apple 平台的 Swift 和其他平台的 Swift 依然是两套运行时(如果说错了请指正)。并且 Swift on Server 搞了这么多年,看起来 Apple 没有给予任何支持。有点怀疑 Swift 开源并不是 Apple 软件部门的什么战略考虑,而是当年 Chris Lattner 等项目领导人的个人爱好
    - 虽然大家对 MVVM 这套在前端界已经流行快十年的东西见怪不怪,但 SwiftUI 充分把类型约束应用到 GUI 组件的做法毫无疑问是种创新。我认为即使没有 Result Builder 这个语法糖,想用 C++或者 Rust (甚至 TypeScript?)写 GUI 的框架都可以学一学
    - 跨语言调用难免有各种代价,代价最小的方式就是用 Objective-C 给 C/C++封一层,很管用,除此之外也确实很少有用 Objective-C 而不是 Swift 的理由。Swift/C++/Rust 这三个语言的内存管理模型都不完全一样,交互起来挺要命的。不过 Swift 有 Ownership 和 Lifetime 的计划,Clang 也有了加入 Lifetime 标记的提案,大概要天下大同了?另外,三个语言对「字符」的定义都不一样,混用的话我觉得一定会出 bug
    - 目前 Swift 性能相比 Clang 和 Rust 明显落后,即使基于同样的后端 LLVM
    - 既然选择用 Swift/SwiftUI ,想必是原生技术爱好者。既然如此,那便入乡随俗吧
    mxalbert1996
        6
    mxalbert1996  
       2022-05-03 12:01:29 +08:00 via Android
    一般说 quality assurance (QA)吧
    imkerberos
        7
    imkerberos  
       2022-05-03 22:15:13 +08:00
    我有一个至少读取 2GB 数据文件进行分析的程序, 看 swift 都发展了快 10 年了, 而且又这么现代, 我下定决心用 swift 重写. 三个月过去了, 还没有进展, 谁能告诉我 swift 中和 fopen 等效的函数是哪个?
    MrKrabs
        8
    MrKrabs  
       2022-05-04 14:20:27 +08:00
    @imkerberos 可以直接用 fopen
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3251 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 14:05 · PVG 22:05 · LAX 07:05 · JFK 10:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.