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

2023-08-28 01:39:44 +08:00
 InvalidUsername

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

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

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

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

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

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

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

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

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

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

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

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

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

@fakeshadow 感谢建议。这也是我犹豫的点,我在想只能学一下 rust ,能换的换到 rust ,不能换的继续 cpp😂
libook
2023-08-28 15:17:30 +08:00
@InvalidUsername #14 我学了三遍,就是因为平时用得少,等要用的时候就忘了。
Rust 语法糖不少,而且很多是使用符号来代表一些语法功能,且同一种符号可能在不同上下文代表不同的语法功能。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/968725

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX