OceaBase开发者大会落地上海!4月20日共同探索数据库前沿趋势!报名戳 了解详情
写点什么

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

  • 2022-04-19
  • 本文字数:2832 字

    阅读完需:约 9 分钟

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

本文最初发布于 Level Up Coding 博客。

掌握 C++ 可不容易,但一旦你掌握了,就会获得丰厚的回报。


通常,程序员在他们的编程生涯中会使用多种编程语言。然而,我们也看到,有些程序员一直在使用同一种编程语言。例如,我们经常遇到有几十年经验的 Java 专家和 C# 专家。但是,学习多种语言会使你在软件开发生涯中更加自信和娴熟。例如,如果你掌握了 Go 语言,你就会了解几个令人印象深刻的语言设计概念,提高自己的通用编程技能。


学习 Python 也很好,因为我们可以用 Python 知识来编写任何自动化脚本,而且很有成效。学习一种新的编程语言无疑会给我们带来独特的经验和新的技术专长。与其他流行的编程语言相比,C++ 语言能带给我们许多好处。与其他现代语言不同,学习 C++ 确实不容易,很费时间。因此,现在大多数程序员都跳过了 C++ 的学习,并且更喜欢那些提供更抽象的开发环境的现代语言。


我将解释一下,为什么学习 C++ 是所有努力成为编程专家的程序员的必修课。

C++ 激励你学习计算机科学基础知识


每一个技术上合理的软件程序背后,都可以找出几个核心的计算机科学理论。例如,Git 程序使用了图论、散列和许多基本的计算机科学算法。例如,以下是 Git 代码库中的合并排序实现:


Git 中的合并排序实现,作者截图


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


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


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

使用 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 个编程原则。

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


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


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


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

与操作系统 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 头文件:


Electron 中的文件选择对话框源代码,作者截图


另一方面,其他所有的编程语言都需要特定语言的绑定来访问操作系统的 API。由于这个原因,几乎所有的操作系统级框架都是用 C++ 编写的。看看下面这些基于 C++ 的框架:


  • Electron

  • React Native

  • Flutter

  • Neutralinojs


另外,像 Chromium、Firefox、Tensorflow、LLVM 和 V8 这样的大型软件项目也使用 C++ 作为主要的开发语言。

C++ 知识有助于你做出更好的技术决策


程序员不仅按照规范编写代码,他们还设计软件系统及组织项目结构。设计阶段在软件开发中非常重要,因为它为整个软件系统奠定了基础。我们经常要在设计阶段和开发阶段做出技术决策。


C++ 是一种复杂的语言——你有许多方法来解决同一个编程问题。另外,C++ 被设计成一门速度很快的语言,但让程序员可以充分控制程序的执行,按照自己的意愿优化代码。因此,你需要谨慎地作出技术决策,根据自己的偏好,为自己的需求选择最佳的 C++ 特性。


C++ 是一种多范式语言,尽管大家都知道它是一种基于 OOP 的语言。一些程序员使用 C++ 编程时会采用传统的 OOP 范式。同时,有些程序员使用 C++ 编程时会采用过程以及函数编程范式。有时,我们经常不得不避免使用一些 C++ 特性,以便简化我们的源代码。例如,谷歌的 C++ 风格指南建议不要使用 C++ 异常。所有这些情况都能提高我们的技术决策能力。

小结


我们已经讨论了在编程生涯中学习 C++ 的好处。目前有二十多种稳定的、功能齐全的、流行的编程语言。没有一种编程语言被称为“最好的编程语言”——每一种编程语言都在特定领域有着良好的表现。因此,学习五种自己喜欢的、精心挑选的编程语言,并称它们为“我最好的编程语言”,是一个明智的决定。


如果你仔细挑选五种编程语言,从各方面进行考虑——毫无疑问,C/C++ 也会在你的名单上。我在这篇文章里介绍了我最喜欢的编程语言:每位开发人员都应该学习的 5 种编程语言。


学习 C++ 而不学习 C,就像学习 React.js 应用开发而不试验原生 JavaScript 和 DOM 一样——所以,先学习 C,然后进一步学习 C++,可以为你的编程生涯带来上面所有的好处。


感谢您的阅读。


查看英文原文:


https://levelup.gitconnected.com/why-every-programmer-should-learn-c-during-their-careers-959e1bc2ea68

2022-04-19 14:202917

评论 1 条评论

发布
用户头像
①C++掌握不容易,但是一旦掌握,回报丰厚
②C++ 激励大家学习计算机科学基础知识
③使用C++ 构建轻量级,高性能,简单的解决方案

是时候,学习C++了😂
2022-04-21 23:44
回复
没有更多了
发现更多内容

云手机的境外舆情监控应用——助力品牌公关

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机 舆情监控

Bridge 2024 for Mac(BR)v14.0.2激活版

iMac小白

这波操作看麻了!十亿行数据,从71s到1.7s的优化之路。

不在线第一只蜗牛

数据结构 数据 数据优化 比赛

AI加速引擎PAI-TorchAcc:OLMo训练加速最佳实践

阿里云大数据AI技术

模型训练 大模型 机器学习PAI

使用OpenTelemetry进行监控

快乐非自愿限量之名

.net 优化 开发语言 项目开发

Navicat for MySQL Mac版(数据库管理开发工具)v16.3.6中文特别版

iMac小白

风险评估是什么意思?与等保测评有什么区别?

行云管家

等保 等保测评 风险评估

通义千问1.5(Qwen1.5)大语言模型在PAI-QuickStart的微调与部署实践

阿里云大数据AI技术

阿里云 人工智能’ 通义千问 机器学习PAI 大语言模型

使用C++界面框架ImGUI开发一个简单程序

EquatorCoco

c++ UI API 开发语言

AI加速引擎PAI-TorchAcc:整体介绍与性能概述

阿里云大数据AI技术

模型训练 大模型 #人工智能 机器学习PAI

Navicat Charts Viewer for Mac(Navicat图表查看器) v1.2.16激活版

iMac小白

Navicat for SQLite 16 for Mac(强大数据库管理及开发工具)v16.3.6中文版

iMac小白

什么是HTTP状态码,常见状态码有哪些

德迅云安全杨德俊

用云手机进行舆情监测有什么作用?

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机

GraphicConverter 12 for Mac(图片浏览器)v12.1.1(6440)中文激活版

iMac小白

Adobe Photoshop 2024 v25.5最新中文破解版 附安装教程

iMac小白

企业需要知道的数据安全管理产品-堡垒机

行云管家

数据安全 堡垒机 运维审计

友盟+Hologres:千亿级多维分析平台建设实践

阿里云大数据AI技术

友盟 数据分析、 数据查询 hologres

Navicat Charts Creator for Mac(Navicat图表创建器)v1.2.16激活版

iMac小白

Web3.0区块链技术开发方案:区块链数字钱包软件开发

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

洞悉市场趋势,把握增长先机:商品企划系统助力品牌飞跃式增长

第七在线

一端开发、多端部署,如何利用移动开发利器

Geek_2305a8

30分钟开发Vue 3插入客制化脚本插件

星辰编程理财

Vue 前端 vite AST 前端客制化

鸿蒙Harmony 时代的跨端方案

FN0

小程序 鸿蒙 鸿蒙开发

电商卖家如何利用API提升客户满意度

技术冰糖葫芦

API 接口

云手机海外社交媒体监测:洞悉舆论,把握商机

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机

MySQL学习笔记

秃头小帅oi

QLab Pro for Mac(音频剪辑软件)v5.3.6激活版

iMac小白

开发者手机开源代码编译指导

Laval小助手

Mac电脑图像编辑软件:Pixelmator Pro中文直装激活

iMac小白

一文读懂Penpad 以 Fair Launch 方式推出的首个资产 PEN

长安区块链

为什么每一名程序员都应该学习 C++?_编程语言_Shalitha Suranga_InfoQ精选文章