首页 » 软件优化 » 如何成为一个高级C++软件工程师(模型代码认知能力编译)

如何成为一个高级C++软件工程师(模型代码认知能力编译)

萌界大人物 2024-11-02 18:34:58 0

扫一扫用手机浏览

文章目录 [+]

对于编程语言之说,王国维的三重意境,还是有一定道理的。
而且现有的统计也表示,对一种编译语言越熟悉,越不容易犯错。
所以,这里引出第一个观点。

对语言本身的熟悉程度

并不是说抱着C++标准,逐字逐句的背下来,你就可以成为C++高手了。
但是学习过一门语言的同学都应该知道,语感很重要。
千锤百炼才会形成一种超乎直观感觉的一种认知。

C++因为各种历史原因,它的语法相当复杂,且支持多种编程范式。
初入门的新手往往会沉浸在其中而无法自拔。
个人觉得,可以找一到两本书,把C++的基本语法都啃一遍,但又不过分细究是比较好的一个尺度。

如何成为一个高级C++软件工程师(模型代码认知能力编译) 软件优化
(图片来自网络侵删)
反复实践

编程其实是一种非常注重实践的活动。
光会看代码,不会写,始终会差了火候。
人的学习能力,很多时候会从错误中得来。
拿个编译器,把书上的代码一行行填进去,会报什么错?输出是什么?为什么错了?

学习语言的反馈回路

对内存模型的认知

C++是一种编程语言,它的本质其实是一种抽象。
在这一层抽象上进行编程要比底层汇编语言的编程要简单得多。
但是,想要更好地理解它,要明白每一行代码真正做了些什么。
需要了解计算机的原理。
毕竟,真正执行代码的,还是自己的机器。

所以要知道,什么是堆,什么是栈,什么是静态存储区,什么是代码段,等等。
通过这些基本的认知,结合对编译出来的汇编进行理解。
你就可以知道,每一个对象是怎么分配的,构造函数做了什么,拷贝又拷贝了什么,为什么对某个地址解引用会Crash, ......

理解了内存,你才会理解C++编程背后隐藏的那些东西。
知道这些,会让你的程序更加健壮,更加高效。

对大规模程序掌握能力

古代一个将军能力有多强,要看他能掌控多少军队。
而对于C++工程师,尤其是更进一步的工程师,要看他能控制多少C++代码而不乱。

对于编译型语言而言,小规模的程序其实没有太大意义。
python, shell, 都可以很快地做到一些事情。
体现它们真正价值的,还是在大规模程序之上。
服务器程序,操作系统,数据库系统,编译器系统,等等,它们的代码动辄上百万,甚至上千万。
这种系统的架构师,具备很强的代码控制能力。

在这个层级上,设计模式,抽象思维已经占据了多数。
你看到的是整个系统的全景,甚至将来它可能的演进。

抽象认知能力

抽象认知,其实是对某个事物的模型认知能力。
比如说数据结构,算法,它们一个是数据聚合关系的模型抽象,另一个是对代码控制流组织模型的抽象。
那么,对于你正在从事的系统,对于你来说,是个什么样的模型呢?

从这一点看,编程和数学是极为相似的,一个是用编程语言进行抽象,另一个则是使用数学符号进行抽象。

对于各种编程模型的驾驭能力

多线程并发模型,异步模型,模板,函数式模型,命令式模型,等等。
它们有些来自于编程语言,有些来自于新的体系架构需求。
熟悉这些模型,它们是你在构思系统时的思维工具。

对系统性能的洞察能力

C/C++为什么用在关键的系统上,本质在于它们的性能。
离开了性能,其实任何系统都可以由某个图灵完备的编程语言实现。
所以,性能问题,对于C++工程师来说,尤为重要。

笔者所接触到的高级工程师,对于性能基本都有一定程度的认知。
同样是C++语言写的逻辑,不同的人写出来,性能可能天差地别。
这同样也是C++有魅力的地方,上限很高。

对于性能,体系结构,算法,以及对业务的理解都属于是核心。

总结

学会C++不难,但成为一个出色的C++工程师,路漫漫其修远。
共勉之。

标签:

相关文章

编程(线程后台如何将执行转移到)

·在Flutter中,你可以通过将任务放入Isolate中,让它们在后台线程中运行。这与在Android中的做法类似,将所有任务放...

软件优化 2025-01-01 阅读951 评论0