为什么每一名程序员都应该学习 C++?

c80aa044106fc276c1b0c360c0c74eae.pngGit 中的合并排序实现,作者截图

如今,每个商业实体通常都会向云计算生态系统发展,并努力实现业务流程的自动化。因此,现在大多数程序员通过编程解决商业问题,而不是与计算机科学相关的问题。

但是,即使是从事面向商业的软件开发项目,他们也经常要运用计算机科学理论来编写更好的代码,使软件更有效率。因此,对每个程序员来说,计算机科学理论知识都是必不可少的。

毫无疑问,C++ 是一种高级语言,它提供了比 C 语言更高级、对人更友好的抽象。但是,C++ 鼓励人们像 C 语言一样使用指针和手动管理内存。另外,C++ 标准库的设计注重计算机科学概念、性能和灵活性,而不是仅仅注重开发的便利性。因此,当你学习 C++ 时,会无意中学习到计算机科学的基础知识。

3 使用 C++ 构建轻量级、高性能、简单的解决方案

大多数现代编程语言专注于用类似伪代码的语法来隐藏底层技术细节,而在性能、轻量化和灵活性方面考虑不多。但是,C++ 仍然可以生成轻量级的二进制文件,是编写性能优先的软件系统的最佳选择。

像 Golang 这样符合现代潮流的编程语言,通过提供类似 C 语言的最小语法和自动内存管理(通过垃圾收集)与 C++ 竞争。但是,Go 会生成很大的二进制文件,所以它不适合于轻量级的场景。这就是为什么大多数程序员使用 Go 来构建高性能的云工具,因为对云环境来说,二进制文件的大小并不是问题。在高性能、轻量级的软件开发方面,程序员仍然喜欢用 C++ 而不是 Go。

Go 通常是静态链接标准库实现,当我们导入 fmt 时,它会将一个 1.2MB 的 Go 最小二进制文件增加到 1.8MB。C++ 通常是动态链接,当我们包含 iostream 时,它会将一个 16.5KB 的最小二进制文件增加到 17.3KB。在 GNU/Linux 平台上,Go 二进制文件大小增加了 50%,而 C++ 二进制文件大小增加了不到 5%。

上述简单的实验证明,C++ 更适合于高性能、轻量级的软件开发。C++ 是一种复杂的全加载语言,但通过选择自己偏好的特性,你仍然可以编写出最小的代码。下面这篇文章将帮助你练习用任何编程语言编写最小的代码:帮助你编出更好代码的 5 个编程原则。

4 C++ 技巧能让你更快地学习其他编程

语言程序员根据自己的喜好学习各种编程语言。有些程序员在开始从事企业级软件开发项目时学习编程语言。同时,有些程序员倾向于把学习编程语言作为一种业余爱好。有些语言很容易掌握,有些则需要不断的试验来获得进一步的经验。

由于复杂的语法(C++ 有 60 个关键词)、多功能的标准库、面向硬件的开发环境以及鲜为人知的最佳实践,C++ 需要更多的时间来获得专业工作经验。C++ 是一种多范式、多功能的编程语言。换句话说,你可以在用 C++ 编写代码时制定自己的编程风格和最佳实践。

学习 C++ 标准库和开发模式需要扎实的计算机科学知识和技术能力。因此,当你精通 C++ 时,学习一门新语言就是小菜一碟。

5 与操作系统 API 交互的最佳语言

每个操作系统都为开发者提供了一个可编程接口,用于处理操作系统级的操作,如进程管理、文件处理、GUI 渲染和网络请求处理(通过套接字)。所有这些 API 都暴露了基于 C/C++ 的接口,因为每个操作系统都是用 C/C++ 编写的。

GNU/Linux 系统以 C 语言头文件的形式提供 Unix 风格的 API 和 GTK GUI 库。MacOS 也提供 Objective-C 接口,我们可以通过 Apple Clang LLVM 编译器来使用。因此,我们可以用 C++ 直接访问任何操作系统级的 API,因为 C++ 是 C 的超集,而且苹果编译器允许开发者混合使用 C++ 和 Objective-C。例如,请看 Electron 如何在 C++ 源文件中使用 GTK C 头文件:

319722e0c7504fe2dd64803af4fcc79c.png

01

《C++程序设计语言(原书第4版)》

738b9ae1980cc53eed5b17bb803c583f.png

02

《C++程序设计:原理与实践(原书第2版)》

544729dd8d232cf717ba67d6bf3948f0.png

03

《C++语言导学(原书第2版)》

b6aa8ac4cbc77b898daa17528f3d06f8.png

04

《C++编程思想(两卷合订本)》  

56ce49ac83a9def7774f7bfdbf93a2cd.png

05

《Big C++中文版(原书第3版)》  

7e1db7821eca66e3a55070d48aec15f7.png

06

《C++20编程技巧:98个问题解决方案示例(原书第2版)》  

d850189e3da7cbe1d47c7b2fee1ef838.png

直播预告

fc20536d760a837c16223230899c12ac.gif

80a4f53080eced3ed71bb588d2213c0e.gif

更多精彩回顾

书讯 | 5月书讯(上)|  元宇宙、因果推断、薛定谔方程…你关注的都在这

书讯 | 5月书讯(下)|设计致物系列+少儿编程好书推荐

资讯 | 分布式系统一致性的本质,看这篇秒懂

书单 | 知乎高赞:有哪些你看了以后大呼过瘾的数据分析书/p>

干货 | Go语言精进之路:你知道什么是Go语言编程思维吗/p>

收藏 | 终于有人把Scrapy爬虫框架讲明白了

上新 | Verilog HDL与FPGA数字系统设计第2版

赠书 | 【第102期】传统企业如何应对数字化转型些书给你答案

活动 | 【向上突破系列】第1期:互联网裁员潮下,去还是留/p>

干货 | 如果机器翻译始终存在缺陷和错误,那它还有什么用处/h2>

45e4cfb09c236a183df55985f6bee878.gif

点击阅读全文购买

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92138 人正在系统学习中

来源:hzbooks

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月3日
下一篇 2022年4月3日

相关推荐