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

多年 C++, 继续深入 C++ 还是 学习 Rust?或是 全都要?

  •  
  •   InvalidUsername · 2023-08-28 01:39:44 +08:00 via Android · 3213 次点击
    这是一个创建于 453 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我主要做 windows 桌面应用开发,有时也会做 web 项目或 electron ,还有些偏底层的项目用到汇编。

    目前我对 C++的使用还停留在 17, 20 及以后的新内容尚未学习。同时对 c++模板元编程那一套也只停留在简单使用,尚未深入。

    我本打算开始学习 c++的新内容,但初步了解 rust 后感觉 rust 也挺香,未来新项目也许可以直接用 rust 来写。

    不过毕竟打工人时间有限, 所以有点纠结。在 c++已经满足目前工作需要,但新内容尚未学习的情况下,是否有必要花时间先来学一下 rust ? 尤其是想到万一要嵌入汇编写 unsafe ,似乎和写 cpp 没什么区别了。

    (我知道这有点小马过河了,哈哈🐶。但还是想看看大佬们的意见)

    第 1 条附言  ·  2023-08-28 21:24:26 +08:00
    在 reddit 上看到一个类似的主题,里面有更多的讨论,如有和我想法类似的朋友,也可以看看:
    https://www.reddit.com/r/cpp/comments/m0cxfn/how_does_modern_c_c20_compare_with_rust
    15 条回复    2023-08-28 15:17:30 +08:00
    levelworm
        1
    levelworm  
       2023-08-28 02:04:49 +08:00 via Android
    大佬公司是做什么,十分羡慕这种职位。
    InvalidUsername
        2
    InvalidUsername  
    OP
       2023-08-28 02:52:13 +08:00 via Android   ❤️ 1
    @levelworm 不必羡慕,外包😶‍🌫️😶‍🌫️。只不过有些客户不要求技术栈。
    levelworm
        3
    levelworm  
       2023-08-28 05:29:01 +08:00 via Android
    @InvalidUsername 能够用 c++和汇编的工作我觉得都是好东西啊
    cooltechbs
        4
    cooltechbs  
       2023-08-28 06:24:49 +08:00 via Android   ❤️ 2
    C++20 及以后,几乎又和 C++11 一样“感觉是门新语言”了,学习成本不低,然后新增的特性我认为也不是特别有用。
    Rust 的 borrow checker ,我初次遇见的时候感觉耳目一新,原来除了标记清理和引用计数,还能有第三种自动管理内存的思路,而且还顺便解决了一部分并发问题。
    所以我站 Rust ,时间少的话了解一下内存管理、写几个工具或是算法题就行,要是时间多,GitHub 走起,现在 Rust 还有不少轮子可造呢。
    lsk569937453
        5
    lsk569937453  
       2023-08-28 08:31:50 +08:00   ❤️ 2
    rust 你学了,就离不开它了。毕竟 cargo 太爽了。
    我最近用 tauri 开发了几个桌面应用。size 也不大,性能又高。
    gym345600
        6
    gym345600  
       2023-08-28 08:52:52 +08:00   ❤️ 1
    都可以。

    不过我想说的是,windows 桌面应用开发,第一步还是要多学习 win32 程序开发(就是好个第四版的),现在感觉懂这个的都成了上古神兽(人才断层了),然后再学习一下 MFC (学它的目的是了解 MFC 是怎么用 C++面向对象的思维封装玩转 win32 API 的),这些都是操作系统基础,这此搞熟了,无论哪个界面框架都能快速掌握,以后转 Linux 的桌面窗口开发也能举一反三。
    这些知识点不深入体验的话,不管用 C++还是 RUST ,学起来都很苦 B 的。
    daveh
        7
    daveh  
       2023-08-28 09:34:57 +08:00 via iPhone   ❤️ 1
    @lsk569937453 #5 有点吹,rust 什么都要靠 cargo ,绑得太死了也不太好。C++喜欢这个调调的可以用 vcpkg 之类的,但 C++本身不依赖这种工具,使用起来更灵活,依赖可以使用现有环境现成的,不用什么都得从头构建起。
    weiweiwitch
        8
    weiweiwitch  
       2023-08-28 09:40:57 +08:00 via Android   ❤️ 1
    我的建议是学一些带垃圾回收的语言,以及一些动态语言。
    c++新特性是用来跟进技术潮流的,能看懂就行,工作中考虑团队平均水平,不太可能铺开了用。
    其他语言,开发应用类的东西效率远高于 c++,所以你会发现一片新天地,反过来也会让你对 c++有新的认识。
    cmdOptionKana
        9
    cmdOptionKana  
       2023-08-28 09:46:02 +08:00   ❤️ 1
    建议先学 rust 基础,然后你自己就能更清晰地判断了。基础教程学一遍,再写个小 demo ,不需要很多时间,快的话几天,慢的话(每天学习有限)两三个星期。
    libook
        10
    libook  
       2023-08-28 10:39:06 +08:00   ❤️ 1
    如果是为了找工作的话,就看一下目标岗位的职位要求是怎么写的,我记得前几年 Rust 相关职位的需求基本都包括“有 C/C++相关开发经验”,一部分项目是从 C/C++中引入部分 Rust ,或者开发 Rust 项目但涉及到引用 C/C++库。

    了解新东西至少可以扩展眼界,在解决问题的时候可以多一些思路。
    Rust 学起来挺快的,特别是你有 C++基础的情况下,我就学了两三遍(狗头)。
    mainjzb
        11
    mainjzb  
       2023-08-28 10:51:49 +08:00
    我目前在尝试用 flutter 代替 qt
    Noicdi
        12
    Noicdi  
       2023-08-28 11:07:10 +08:00 via iPhone
    现在维护的公司项目太老了,连 c++11 都没有上,纯用 c 的形式写业务代码。后面想跳 rust 的工作,但是又感觉市面上这块的岗太少了
    fakeshadow
        13
    fakeshadow  
       2023-08-28 11:10:51 +08:00   ❤️ 1
    gui 和 embedded 目前都不是 rust 长项
    InvalidUsername
        14
    InvalidUsername  
    OP
       2023-08-28 12:31:02 +08:00 via Android
    @cooltechbs 谢谢建议,我打算试试

    @lsk569937453 这正是吸引我的一些点 哈哈

    @gym345600 谢谢建议,赞同底层总是最核心的, 所以平时也在和这些打交道。本次就是在纠结语言层面 cpp20+和 rust ,哈哈。

    @weiweiwitch 谢谢建议,我也深知语言只是工具,所以写 web 后端的时候都用 java ,脚本语言也有使用。只是在纠结我这些 cpp 的场景是否可以考虑改为 rust

    @cmdOptionKana 谢谢建议,我打算试试看

    @libook 谢谢建议,不是面向工作或是中短期不是面向工作。 这也是我犹豫的点,就怕学了又用不到,时间一长就忘了。

    @fakeshadow 感谢建议。这也是我犹豫的点,我在想只能学一下 rust ,能换的换到 rust ,不能换的继续 cpp😂
    libook
        15
    libook  
       2023-08-28 15:17:30 +08:00   ❤️ 1
    @InvalidUsername #14 我学了三遍,就是因为平时用得少,等要用的时候就忘了。
    Rust 语法糖不少,而且很多是使用符号来代表一些语法功能,且同一种符号可能在不同上下文代表不同的语法功能。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2947 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 08:12 · PVG 16:12 · LAX 00:12 · JFK 03:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.