首页 >>  正文

会c++可以做什么工作

来源:baiyundou.net   日期:2024-07-05

【CSDN 编者按】开发者 Nikita Lapkov : C++ 切换到 Rust 后,常工作体验得到了极大地提升。

原文链接https://laplab.me/posts/switching-from-cpp-to-rust/

未经授权,禁止转载!

作者 | Nikita Lapkov 译者 | 弯月责编 | 王子彧

出品 | CSDN(ID:CSDNnews)

我从事专业的 C++ 编程工作已经四年多了,然而,三个月前我找到了一份新工作需要使用 Rust。我想通过本文,分享一下我个人关于在两种语言之间切换的经验和想法。

声明:本文不打算比较 C++ 和 Rust,文中的观点源自个人的经历。

C++ 和 Rust 的工作介绍

我认为,个人从事的工作会极大地影响对语言的体验,下面我来简单介绍一下背景。

我使用 C++ 大多从事的是编写数据库的工作。数据库不是常见的应用程序,通常它们独占服务器,可以使用大量的系统调用,而且在有些情况下甚至可以完全绕过内核。另一方面,这意味着数据库是研究特定语言的一个有趣的样本,因为你需要关注性能,为客户提供良好的用户体验,同时还需要保证正确。

鉴于公司的保密协议,所以我不能分享工作细节。我运行 Rust 的环境是具有高负载和高标准性能要求的数字运算异步服务器。它有点类似于数据库,但用户体验可能并不那么重要。

就本文而言,我认为这两者非常相似。

反复谈及的方面

Rust 具有良好的内存安全保证。这个话题已被反复讨论,所以不在此赘述。虽然我已经使用 C++ 四年多了,但即便是已经过审查和合并的代码,偶尔也会遇到内存问题引发的服务器崩溃。很难说有多少这样的代码进入了生产环境,因为人们只是在发生段错误时重新启动服务器。模糊测试确实可以确保覆盖一些奇怪的案例,但终究不是灵丹妙药。总的来说,我认为交付 Rust 代码比 C++ 代码更安心。

构建系统

在日常工作中,最令我厌烦的工作莫过于构建 C++ 代码。作为一名开发人员,我希望能够编写一个简短的命令来构建整个项目。“在构建服务器之前,你只需要运行这两个命令……”,这句话简直太可怕了,因为这表明构建过程是多步骤的。每次都需要运行这两个命令?只有当这两个文件发生变化时,需要运行这两个命令,这句话什么意思?如果我使用 sanitizers 构建项目,这些命令会如何变化?构建过程不支持 sanitizer 是什么意思?为什么构建脚本突然开始输出链接错误?

我说了这么多,其实就想表达一个观点:缺乏统一的构建系统真的很令人苦恼。Bazel 是朝着正确方向迈出的一步。CMake 至今仍是我的噩梦。

在经历了这一切后,我感觉 Rust 将我从地狱拉到了天堂。你只需编写一个简短的命令来构建整个 Rust 项目。更重要的是,这个世界上所有其他的 Rust 项目使用的都是同一个构建系统,因此你无需将构建脚本从他们的系统转换到自己的系统。你只需要 Cargo.toml 中的一行代码,就可以将构建过程所有的依赖项都包含进来。它甚至会自动将正确的编译标志传递进来。

编译器

来自两个编译器的错误消息真的很让人崩溃,你需要付出大量努力才能正确理解和修复。

在 C++ 中,错误消息的大小都是以千字节为单位衡量的。终端模拟器中的无限滚动是绝对必须的,因为 C++ 编译器太喜欢输出文本了。几年后,你会形成某种直觉,只要看到错误多少就能判断自己是应该阅读错误还是看看代码。通常错误消息越大,随便看看代码的作用就会大于阅读错误消息。我感觉,如果 C++ 不改变模板的定义方式,这个问题永远无解。

在 Rust 中,编译器错误(在修复所有拼写错误之后)通常是非常糟糕的消息。通常,这些错误消息表明你需要通过某种方式重新组织代码,或花一些时间调整生命周期,所以你不可能错误地使用内存。虽然这个过程需要时间,而且很烦人,但正确的方法是认真听取编译器的建议。说起来很惭愧,通常听取建议有助于编写更好的代码。此外,错误消息可以完整地显示在一页内,很方便阅读。

类型系统

在 Rust 的类型系统中表达想法是一种享受。

首先,非常感谢没有鸭子类型的泛型。Traits 清楚地表达了类型希望看到的合约结构或函数。这也有助于编译器生成有用的错误消息。我们获得的错误消息不再是:“对第 Y 行的方法 clone() 的无效引用”,而是“类型X没有实现 Clone”,清晰明了。

其次,枚举非常强大。Result 和 Option 是非常强大的概念,每个人都在使用。这两个枚举是所有库(包括标准库)表达容易出错的计算和可选值的通用语言。在 C++ 中,我们有 (1) 返回错误代码;(2) 返回无效值;(3) 引发异常;(4) 进程崩溃。所有有问题的选项和每个库都使用不同的选项。除了 Result 和 Option 之外,我发现定义标记枚举的功能也非常方便。

总结

总的来说,切换到 Rust 后,我感觉日常工作体验得到了极大地提升。Rust 的工具非常友好,语言富有表现力且功能强大。我非常喜欢 Rust,而且我希望Rust 将来的发展能够避免 C++ 的一些陷阱。

","gnid":"9db077ce02afefc39","img_data":[{"flag":2,"img":[{"desc":"","height":"80","s_url":"https://p0.ssl.img.360kuai.com/t013d73ffee4a20366b_1.gif","title":"","url":"https://p0.ssl.img.360kuai.com/t013d73ffee4a20366b.gif","width":"640"},{"desc":"","height":"80","s_url":"https://p0.ssl.img.360kuai.com/t018e6f0fcf6c9df4ee_1.gif","title":"","url":"https://p0.ssl.img.360kuai.com/t018e6f0fcf6c9df4ee.gif","width":"960"}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"hbase","pub_time":1679968190000,"pure":"","rawurl":"http://zm.news.so.com/d2b91f4ff438b0ee711f8194b7a43c35","redirect":0,"rptid":"511de8e960559b18","rss_ext":[],"s":"t","src":"CSDN","tag":[],"title":"从 C++ 切换到 Rust,工作体验大幅提升!

解莲司3006会c++编程能干什么? -
冀径类13857644219 ______ C++很有用啊,软件的很好找工作,中兴、华为、百度、腾讯都是好单位啊,只要编程厉害都是可以去的

解莲司3006学C++将来会做什么工作的!!!
冀径类13857644219 ______ 程序员、软件开发工作者……

解莲司3006学会c++可以做什么工作啊? -
冀径类13857644219 ______ 如果你只是初中的话建议你暂时不学,因为光学c++是没有用的,要编写有用的程序一般要结合数据结构,线性代数,甚至是运动物理学和高等数学,如果再大点的程序还需要调用数据库,对windows...

解莲司3006请问下学C++以后与什么工作挂钩呢? -
冀径类13857644219 ______ C++多数是做游戏开发吧,或者MFC开发应用程序,如果不用C++的特性的话就是C语言了,C语言找工作的话有做单机片的,如果你牛一点的话可以做linux系统移植方面的工作

解莲司3006学会了 VC++ 能找到什么样的工作? -
冀径类13857644219 ______ 关键是你掌握的如何,深不深.我有个同学,学的是自动化专业,但他对编程感兴趣,尤其是java,毕业后自己投简历被南京富士通软件录用了,实习期也是狠学C++,这说明它很基础,只要理解透彻,肯定能找到工作的.

解莲司3006学会C++能够干什么?程序设计师?有什么市场需求? -
冀径类13857644219 ______ c++?比如说操作系统啊,防火墙啊,杀毒软件啊,各种管理系统啊 总之,是一门非常强大的语言,相当于九阳神功,学精了就相当于打通了任督二脉,再学其它的语言就跟张无忌学乾坤大挪移一样的简单.

解莲司3006C++编程可以从事何种工作?
冀径类13857644219 ______ windows操作系统是c++编写的,好象有个大型游戏叫磨兽也是c++编写的!c++就是一种开发软件的语言!很不错的!就是有点难啊1你们现在可能是初学,只让你们写个算法什么的吧?那是基本功,好好 练习,可以自己学着开发系统啊,如学生信息管理系统和游戏啊?什么的啊!都可以的!知道c++是做什么的了吧?

解莲司3006只会c++可以找到什么样的工作 -
冀径类13857644219 ______ 老实说仅仅会C++没有什么合适工作,即使纯粹的编程也需要数据结构/数据库等基础技术

解莲司3006学C语言,C++能干什么? -
冀径类13857644219 ______ 可以干的事情多了,第一找工作!主要是以电脑软硬件开发为主.第二、了解电脑的基本原理和操作

解莲司3006学C++,出来的方向或者说做什么职业
冀径类13857644219 ______ 学得好,可以做比较蛮的工作.如果功力不深、就要转型其它语言、多数行业都要多快好省地做项目.

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024