C和C++是不同的语言,您将来希望使用哪种语言最多?找到一些做这件事的人,并问他们做什么以及如何到达那里。所以如果您将来想要使用更多的C,则着重于操作系统设计,驱动程序,固件和非常小的嵌入式系统。侧面的一些硬件和电气工程可能会有所帮助。
今天,C++的使用领域千差万别,一些核心方向可能是:
1.高性能计算,这可能与
低延迟(响应股票涨跌变化的速度比街上的汽车更快),
实时(始终无时无刻地响应发动机下一转之前的传感器读数)
高吞吐量(在用户认为经过任何时间之前,搜索数十亿个网页以响应某一网页查询)
-如果您正在考虑从事这种职业,请专注于算法和系统架构。在成为专家之前,您必须了解并紧跟现代CPU和GPU架构,SIMD功能,缓存一致性协议,内存子系统架构以及OS设施(例如文件系统和网络堆栈)的内部工作的最新发展,以及同时了解所有算法,它们的真实(而不是教科书)复杂性,内存访问模式,高速缓存亲和力,并行化方法等。当Cilk+开发人员对TBB开发人员说“只有怪物偷孩子”时,您会理解为什么很有趣。
2.资源受限的环境,我将其大致归类为
程序分配的资源(有限的内存,有限的文件,有限的连接,有限的同步原语)
-这些通常是嵌入式系统,它们的体积不会太小以至于只能使用C语言,因此,如果您想在此领域玩游戏,请看看那些。想想装配线机器人,交通信号灯,物联网。硬件和系统架构非常值得在这里了解,更多地侧重于网络和嵌入式系统(这与低延迟人员可以购买的最昂贵的系统相对)
该程序消耗的资源:电源/冷却,这就是为什么C++在云计算和跨平台移动开发中越来越多地使用的原因。
-这里需要的技能是优化,这再次需要算法和系统架构,就像上面的低延迟人员一样。
3.软件基础架构
C++的主要设计目标之一一直是零成本抽象,这导致了
中间件和可重用组件(例如通用消息传递框架或boost库)
大型软件基础结构(例如像Bloomberg或Google这样的公司,成千上万的程序员不断向已经拥有超过1亿行的应用程序中添加代码,您如何确保它们在10年后会更好地工作?)
这里的核心技能是数据结构,算法和软件工程。要到达这里,参与开发,在github上选择一些大型开源项目,并立即开始修复它们的错误,以便十年后您知道如何正确地进行操作。