V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ybw
V2EX  ›  程序员

如果我要开发一个客户端, 要求跨 Windows/Mac/ Linux /安卓/iOS 平台, 复用同一份底层逻辑代码, 那么 C++是不是唯一的选项?

  •  1
     
  •   ybw · 2019-11-23 17:45:08 +08:00 · 6778 次点击
    这是一个创建于 1864 天前的主题,其中的信息可能已经有所发展或是发生改变。
    47 条回复    2019-12-11 14:49:27 +08:00
    missdeer
        1
    missdeer  
       2019-11-23 17:54:03 +08:00
    js 表示不服
    另外 Go 从技术上也没问题
    ybw
        2
    ybw  
    OP
       2019-11-23 18:03:08 +08:00   ❤️ 1
    @missdeer 你是说 Electron 吗, 使用这个框架的程序, 已经被 Apple 禁止上架了。
    hkitdog
        3
    hkitdog  
       2019-11-23 18:04:41 +08:00 via iPhone
    Rust 也可以
    JunoNin
        4
    JunoNin  
       2019-11-23 18:05:15 +08:00
    Rust 可以试试
    tomczhen
        5
    tomczhen  
       2019-11-23 18:06:18 +08:00 via Android
    pwa : doge:
    hehheh
        6
    hehheh  
       2019-11-23 18:09:50 +08:00
    小客户端还行,如果稍微大点的程序,不如 ios 和 macos 用 swift 其他平台用 java。
    一是 c++本身学习成本太高,找一队能 hold 住的人有点难。
    二是 c++的跨平台也没那么容易实现,光是 Linux 和 win 就需要在 header 和函数的使用上下点功夫。
    还有 c++本身有不少坑,就是不同的平台对一样的代码的解释可能会不太一样,这个和编译器有关。有的时候有的平台的编译器实现了优化,你的代码就行,有的平台的编译器没有优化,这个就很麻烦。。。
    ArthurRen
        7
    ArthurRen  
       2019-11-23 18:15:48 +08:00
    pyqt
    hhx
        8
    hhx  
       2019-11-23 18:17:25 +08:00 via Android
    @hehheh 请教下。目前国内的 C++开发是否要求掌握某个平台的开发库,例如 linux 提供的 C 接口等。我有 C 语言基础,也有一定的 linux 开发经验,想要从事 Cpp 开发的话,是否需要花时间学习 Cpp 相关的内容,例如 Cpp 标准库以及 boost 等准标准库。谢谢。
    mmdsun
        9
    mmdsun  
       2019-11-23 18:22:18 +08:00 via Android   ❤️ 1
    Xamarin 开发跨平台 App, 国外用的人也不少
    hehheh
        10
    hehheh  
       2019-11-23 18:25:30 +08:00
    @hhx 大兄弟你真的问错人了,我没有在国内工作过。。。不过如果你单纯想问你懂 c 能不能直接上 c++的话,我只能告诉你这真的是两门语言。区别比一般人想象的大得多
    iceheart
        11
    iceheart  
       2019-11-23 18:30:03 +08:00 via Android
    你自己写,可以上 C++。
    多人合作,建议上 golang。
    C++给别人擦屁股最难受了。
    zeroDev
        12
    zeroDev  
       2019-11-23 18:37:09 +08:00 via Android
    可以尝试写个网页?
    xiubin
        13
    xiubin  
       2019-11-23 19:29:18 +08:00 via iPhone
    flutter 它不香吗?
    hkitdog
        14
    hkitdog  
       2019-11-23 19:36:50 +08:00 via iPhone
    @xiubin 话法太他妈恶心
    vipcc
        15
    vipcc  
       2019-11-23 19:40:41 +08:00 via Android
    把各个平台不同的底层进行封装。
    然后进行业务逻辑开发。
    qt 已经帮你做好了。

    然而我不认同。
    HuHui
        16
    HuHui  
       2019-11-23 19:53:14 +08:00
    目前在用 go + qt
    https://github.com/therecipe/qt
    dosmlp
        17
    dosmlp  
       2019-11-23 19:59:34 +08:00
    c++似乎是唯一跨平台的了
    feelapi
        18
    feelapi  
       2019-11-23 20:03:40 +08:00
    看你客户端的规模了。cpp 是可以的,核心逻辑也就是非界面部分用 cpp,可以做到所有系统一份代码。界面部分可以自己想办法。比如 qt,这个可以做到所有平台。这个也是 cpp。
    对开发人员要求很高,没有十年经验的人坐镇,你就不要想了,太多的坑经验少的人填不上的。
    xiangyuecn
        19
    xiangyuecn  
       2019-11-23 20:29:51 +08:00
    html+css 做界面,js 搞逻辑吧,门槛超低,培训一个月就能上岗,真正的跨平台😂 这玩意你知道的能运行,你不知道的也能运行。不仅现在的平台能运行,过气的也能运行,甚至未来会诞生的都能运行😂😂😂

    当然要出产品请临时工肯定不行。
    across
        20
    across  
       2019-11-23 20:40:11 +08:00 via iPhone
    是。
    假如不考虑部分原生 c 教派的话...
    rust 怕是比 c++更难找人。
    MasterMonkey
        21
    MasterMonkey  
       2019-11-23 20:40:59 +08:00 via iPhone
    Cordova 怎么样?
    另外 EletronJS 怎么样?
    qazwsxkevin
        22
    qazwsxkevin  
       2019-11-23 20:45:18 +08:00
    @feelapi 请教,如果业务的具体逻辑实现用 cpp 开发,在 win 的平台下(不使用 WEB 的方式,WEB 在人力的成本投入其实不低吧?)用什么做 UI,衔接最好,成本最低,人也容易上手?
    neoblackcap
        23
    neoblackcap  
       2019-11-23 20:46:04 +08:00
    @dosmlp 只要能编译成对应目标平台的,其实都可以。虽然很多人没有说 Java,但是我的确也看过不少基于 JVM 平台开发的软件,虽然那个不太能算自己跨平台。
    如果对性能,交互要求很高的,的确是用 C++开发的比较多。可能还有其他用 Rust 啊,D-lang 啊。不过的确是用 C++的成功事例比较多。
    neoblackcap
        24
    neoblackcap  
       2019-11-23 20:47:26 +08:00
    @across 其实写 rust 的,认同 rust 的,大多数也就是写 C++的那批人。rust 是可以说是 better c++了。
    feelapi
        25
    feelapi  
       2019-11-23 21:15:26 +08:00
    @qazwsxkevin QT, WPF,MFC, 看你能找到什么样的人。
    mfc 很古老,但是发布简单,开发比较慢,不好找人。
    wpf 可以做的很漂亮,发布要注意一下。找人还好,可以做的很漂亮。
    qt 比较简单,上手快,但是有坑不好填。主要是有熟练工还好。
    heiheidewo
        26
    heiheidewo  
       2019-11-23 21:36:25 +08:00
    别问,问就是 C++
    rome7054
        27
    rome7054  
       2019-11-23 22:26:53 +08:00
    不是,前面楼层连 golang 这种对 UI 支持不友好的有人提出来,js 没用过不评论,python 和 golang 用着还行,然鹅对 Android/iOS 支持那还是算了,既然复用同一份底层逻辑代码,且包含移动平台,说实话 C#其实是更好选择,Windows/Mac/ Linux 直接使用 dotnet core 用的很舒服,安卓 /iOS 可以用 Xamarin,配合隔壁热帖宇宙第一 IDE VS,而且比起 C++,C#写起来不能再舒服
    Cbdy
        28
    Cbdy  
       2019-11-23 22:30:58 +08:00 via Android
    @ybw 最可行的确实是 js,另外下架的原因是部分 app 用了私有的 API,并非所有 electron 应用都下架
    shuangya
        29
    shuangya  
       2019-11-23 22:58:21 +08:00
    可以是可以,但是 C++后续维护难度……特别是稍微复杂点的应用,涉及到多端兼容……够你喝一壶的
    beginor
        30
    beginor  
       2019-11-23 23:19:00 +08:00 via Android
    可能 Xamarin + C# 才是最佳方案
    lzihua
        31
    lzihua  
       2019-11-23 23:31:17 +08:00
    持续关注下
    kwanzaa
        32
    kwanzaa  
       2019-11-23 23:35:18 +08:00
    Golang 它不香嗎?
    yukinotech
        33
    yukinotech  
       2019-11-23 23:43:35 +08:00
    @ybw 为什么?因为风控和合规的原因吗?
    momocraft
        34
    momocraft  
       2019-11-23 23:48:04 +08:00
    什么叫底层逻辑, io 意义上还是 ddd 意义上
    trait
        35
    trait  
       2019-11-23 23:49:17 +08:00 via iPhone
    @kwanzaa go 的主战场是服务端,别啥都无脑推,跨平台这种带尿瓶的就是弟弟
    Ahri
        36
    Ahri  
       2019-11-24 00:03:17 +08:00
    TypeScript + React Native
    xuanbg
        37
    xuanbg  
       2019-11-24 00:26:54 +08:00
    WebApp 也是客户端呢
    MonoLogueChi
        38
    MonoLogueChi  
       2019-11-24 00:37:09 +08:00 via Android
    关键是你是否需要 UI 界面,如果不需要 gui,选择很多
    kwanzaa
        39
    kwanzaa  
       2019-11-24 01:24:14 +08:00
    @trait 我觉得你不打算好好说话。
    mingl0280
        40
    mingl0280  
       2019-11-24 05:58:34 +08:00 via Android
    是唯一选项。
    如果功能较多的软件,做 webapp 的性能调优能把你做到怀疑人生,c 艹起码在有良好的编码规范的情况下不会太坑爹。
    changdy
        41
    changdy  
       2019-11-24 10:20:21 +08:00
    那么问题来了 为什么也 要复用一份逻辑代码... 尤其是 跨越 移动端 桌面端
    服用代码并不能减少 开发时间. 甚至后期坑更多
    jason94
        42
    jason94  
       2019-11-24 10:36:47 +08:00   ❤️ 2
    @ybw 大多数人都只是看了一下标题,就以为 electron 应用被禁止上架,然后以讹传讹。

    原文是在这里 https://david.dev/you-cannot-submit-an-electron-6-or-7-app-to-the-apple-store

    被禁止上架的原因是他使用了一些非公开的 api,有个 issue 也讨论了这个问题 https://github.com/electron/electron/issues/20027

    而且这也不止是在 electron,在 futter/rn 中使用非公开的 api 也是会被禁止上架的~~
    jason94
        43
    jason94  
       2019-11-24 10:42:14 +08:00
    如果没有追求极致的性能,推荐桌面端 electron + react,移动端用 react-native,可以复用不少逻辑。
    mxT52CRuqR6o5
        44
    mxT52CRuqR6o5  
       2019-11-24 11:08:12 +08:00 via Android
    rn(rn-web 配合 electron 能做桌面端),flutter,kivy,qt
    duanxianze
        45
    duanxianze  
       2019-11-24 12:47:17 +08:00
    只有纯 web 能满足你的需求 大不了自带一个 chrome 嘛
    loginbygoogle
        46
    loginbygoogle  
       2019-11-24 19:19:08 +08:00 via iPhone
    抱歉,flutter 无敌。
    GM
        47
    GM  
       2019-12-11 14:49:27 +08:00
    挖个坟,Gluon Mobile 貌似还不错。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1011 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 22:02 · PVG 06:02 · LAX 14:02 · JFK 17:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.