V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xjhou00007
V2EX  ›  Web Dev

c++ go rust 谁更适合开发 嵌入式 Linux 上的 web 后台服务

  •  
  •   xjhou00007 · 48 天前 · 3369 次点击
    这是一个创建于 48 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位大佬,请教一下,准备在 3568 板子上开发部署一套 web 服务,前端用 nginx+h5(前端不是我写),后端开发 web 服务提供接口,c++,go,rust 选哪个开发比较好。

    目前板子上有一套在跑的后台应用程序是用 c++写的,现在要加 web 服务功能,不想加到原来的应用程序里面,并且也想尝试学习一下其他的语言,看了一下 go 和 rust 的简单介绍,感觉上手应该不难,但是想了解一下上手哪个更合适。如果有能够方便开发 http server 和 http client 的成熟的框架和库最好了。

    这套程序也就我一个人开发维护,不需要考虑团队协作。。。

    37 条回复    2024-11-01 10:26:06 +08:00
    zsj1029
        1
    zsj1029  
       48 天前
    go 更简单,虽然 rust 占用更少
    go 10mb vs rush 2MB
    出活效率建议 go
    helone
        2
    helone  
       48 天前
    如果就简单 crud 的话可以考虑 rust ,但是上手可能会复杂点,不过现在有 gpt 这种的有啥不会问就是了,go 的话就更简单点,上手更快
    xjhou00007
        3
    xjhou00007  
    OP
       48 天前
    @zsj1029
    @helone
    系统内存还是比较盈余的,不考虑这个的话看来还是 go 更适合上手
    多问一句,在 aarch64 linux 平台上部署 go 环境,以及交叉编译 go 程序会不会遇到很多坑
    zsj1029
        4
    zsj1029  
       48 天前
    @xjhou00007 go 的编译比 rust 简单多了,编译无脑一句 cgo=0 好像是,根本不用考虑兼容性
    rust 跟 c 差不多,很多工具链,时间很长
    zsj1029
        5
    zsj1029  
       48 天前
    @xjhou00007 支持跨平台编译,总之很简答,win 上打包 arm x86 都可以
    Donahue
        6
    Donahue  
       48 天前
    go 。rust 复杂得不行,设计目标也不是 web 服务
    Donahue
        7
    Donahue  
       48 天前
    @xjhou00007 go 部署/交叉编译很简单 没坑
    xjhou00007
        8
    xjhou00007  
    OP
       48 天前
    @zsj1029
    @Donahue
    明白了,感谢指点
    xjhou00007
        9
    xjhou00007  
    OP
       48 天前
    不论这个需求功能开发的话,作为一个 c++后台开发,rust 有没有学习的必要,rust 和 go 谁的泛用性更好,未来更用的上呢
    xjhou00007
        10
    xjhou00007  
    OP
       48 天前
    好像不能编辑主题哈
    helone
        11
    helone  
       48 天前
    如果是 c++ 开发学习 rust 很有必要,c++写的东西 rust 能完全替代甚至更好,go 的话完全兴趣爱好,更偏 web 方面,而且有 gc 存在,偏底层的东西肯定做不了
    bluearc
        12
    bluearc  
       48 天前
    @xjhou00007 #9 rust 肯定更泛用,但就你描述的需求我觉得 go 更好些;
    adoal
        13
    adoal  
       48 天前
    3568 跟零几到一几年的 X86 可以打个来回,不用特别考虑“嵌入式”,性能足够,技术选型时就当普通的 Linux 小主机好了。
    victorc
        14
    victorc  
       48 天前
    看你内存大小,如果只有几十 M ,当然用 rust
    用大模型帮忙写,分分钟搞定
    IvanLi127
        15
    IvanLi127  
       48 天前
    我感觉,只是感觉,rust 更适合嵌入式,也更适合 C++ 选手。 如果项目不复杂的话,rust 已经能轻松胜任,复杂的话我就不知道啥情况了。
    mightybruce
        16
    mightybruce  
       48 天前   ❤️ 1
    嵌入式 web 基本都是 C, C++ , 这种不是多的很。何必找一些不成熟的项目。
    这种项目首先要考虑的就是资源占用,占用大的一概不考虑了。

    https://github.com/civetweb/civetweb
    yplam
        17
    yplam  
       48 天前 via Android
    要考虑跟 c++的交互方式,如果要用到 cgo 的话建议还是 rust 或者直接 c++
    jqknono
        18
    jqknono  
       48 天前
    这是嵌入式啊, web 技术栈都是其次, 这也无脑推 go 吗, 常见的是 c/c++. 新的一点大家推 rust, 我不了解这个.
    嵌入式一般都是启动时提前规划好内存怎么用的. 如果这个板子根本没什么定制启动定制软硬件, 那就是一个普通的 linux 了, 通用 linux 开发后台那才是优选 go
    starlion
        19
    starlion  
       48 天前
    只是 http server ,http client 可以考虑下 Go ,Go 语言都自带的。另外 Go 的 web 应用框架 Gin 、Fiber 也有这些功能。

    不过嵌入式,是不是内存比较小 (2G ?),没搞过嵌入式,还是看你的服务器配置,业务上功能需求,业务量,开发效率等综合考虑
    815979670
        20
    815979670  
       48 天前
    建议选 go 只要避免 cgo 交叉编译没什么坑
    tool2dx
        21
    tool2dx  
       48 天前   ❤️ 1
    @starlion 我在开发 openwrt 的嵌入式,全部只有 24M 的存储空间。内存还算比较大,冗余有 100M 。
    adoal
        22
    adoal  
       48 天前
    @starlion 说到 2G 内存太小……我在一个 S905D 、2G 内存、8G EMMC 的盒子里(猜的没错就是 N1 )装了一个 alpine 再用 libvirt+qemu 开起来三个虚拟机:一个 Debian 两个 OpenWRT……
    ca2oh4
        23
    ca2oh4  
       48 天前
    c++ 写 web 已经非常方便了,不如沿用之前的技术栈.
    wupeaking
        24
    wupeaking  
       48 天前
    我也买了个 RK3566 玩了玩, 感觉交叉编译的话 C++和 rust 更方便一些,尤其是如果还会调用 C 代码的话。写 web 后端还是 Go 比较擅长。纯 Go 代码的 web 框架应该都能直接迁移到嵌入式 Linux 上的。如果涉及到 CGO 的话,感觉会有很多坑了。尤其是那些 glic 版本折磨人的很。这个时候 rust 真的很好用。
    janus77
        25
    janus77  
       48 天前
    先不说什么设备,做 web 项目,偏业务的话,这三者明显是 go 更好啊,不过也只是三个低分党里面找相对较高的那个了,三个语言写业务都不太舒服
    xjhou00007
        26
    xjhou00007  
    OP
       48 天前
    @mightybruce
    @victorc
    @starlion
    内存还好,现在用的 3568 板子 4G 内存,抛去已经占用的,还有 2G 左右的可用内存
    xjhou00007
        27
    xjhou00007  
    OP
       48 天前
    @jqknono 没有到像单片机那样每段内存都划分好,就是 arm linux 系统,系统启动后再自动运行程序
    Umenezumi
        28
    Umenezumi  
       48 天前
    web 肯定是 GO 啦,编译简单,上手轻松,GPT 无脑一把梭,时间充裕爱折腾 rust 也可以,不过为了出活儿我肯定选 GO
    InkStone
        29
    InkStone  
       48 天前
    具体这个场景不好说,但 C++研发还是有必要学一下 Rust 的。哪怕不写,也能学习一下 Rust 怎么处理 C++中的坑,很多处理方式可以反哺到 C++开发中。
    mightybruce
        30
    mightybruce  
       48 天前
    看来你这个内存比较富裕,golang 等一堆语言也是可以用的。
    直接做嵌入式 web 服务的话,c 推荐 mongoose, civetweb 。
    go 标准库就可以搞,也不需要借助其他。
    mightybruce
        31
    mightybruce  
       48 天前
    https://github.com/cesanta/mongoose
    这个 西门子,三星,谷歌 都在用
    civetweb 有 lua 模块,写一些嵌入式也比较方便
    yifeia
        32
    yifeia  
       48 天前
    web 服务直接 go 一把梭哈,写一个项目你就会用 go 了
    rlds
        33
    rlds  
       48 天前
    那必须用 go
    chenxuuu
        34
    chenxuuu  
       47 天前
    如果本身就已经有一大堆 C++代码了,要在工程里加个新功能,用 C++
    如果是写个和现有项目不太强耦合的小模块,熟悉 C++开发,喜欢对内存的掌控感,可以考虑用 Rust
    如果不熟悉 C++,技术栈偏向应用,不熟悉也不想了解硬件底层,网络环境始终支持科学上网,可以试试 Go
    vicalloy
        35
    vicalloy  
       47 天前
    3568 外加 4G 内存,性能已经很强了。
    对于 web 服务,一般情况下即使你用 python 都不会有性能问题。
    yangliudi123
        36
    yangliudi123  
       47 天前 via iPhone
    优先 c++含 c ,嵌入式主流还是 c 和 c++
    XinPingQiHe
        37
    XinPingQiHe  
       47 天前
    虽然 go 相对简单些,但是你这个应用,前面的也是 c++写的,自己一个人做,建议大胆尝试 rust 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5175 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:22 · PVG 17:22 · LAX 01:22 · JFK 04:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.