c语言是为了写unix操作系统而发明的,因为一个操作系统的代码量是异常庞大的,大概21年统计的linux新版本操作系统源代码大概三千四百万行。发明的原因主要是因为高效(编码效率高效 而不是指的运行的速度在当时看来 当然 在现在看来 c/c++在运行速率上绝对也是吊打其他所有语言的 这也是c语言没有被淘汰重要的原因之一),而且是一门比较跨平台的语言。跨平台的原因是因为c语言是对汇编语言的抽象,只要你的平台安装了c语言的编译器,c语言就会将相同的源代码编译器不同的汇编语言,汇编语言才是与平台直接相关的。与之对应就可以实现同一份代码在不同的平台运行。大家可能不觉得,在大家眼中可能大家使用的windows pc机 x86机器不就一个平台么?那么大费周章搞编译器干嘛。确实,我们学习计算机总是容易被我们现有的知识所局限,每个人都是这样,这也是我要写这一份前言的原因。可以说,除了我们用的pc机和服务器,其他所有的设备,包括但不限于电视、空调等等。。基本都是arm架构的,arm架构又有非常多不同的版本,arm架构在数量上应该是x86架构的几个数量级。说了这么多c语言,也该说说c++了。c++也是跨平台的,并且在大部分场景在可以用c++的编译器g++来编译c语言代码并且生成相似的汇编代码。c++在初学者上手时候会比c语言难一些,因为c++是面向对象的语言(里面涵盖了非常多c语言不具有的特性 成也多特性败也多特性 多特性肯定是利用初学者使用的 但是对于真正的系统开发大佬 呃 大概都是用c 例如linux就是c语言+汇编语言)能提高开发效率并且更容易构建一个比较大型的项目(例如你们大二要编写的编译器),我们这一届和上一届都是使用c语言编写的编译器,导致我们在编码过程中很多地方要考虑工具层面的事情,浪费了挺多时间的。这大概也是高中玩竞赛都是用c++的原因。我建议大家有时间在暑假都比较深入的学习一下C++语言,因为卓中卓大二是不会学习java语言的。所以说不仅对你们大二写编译器有帮助、利于你们的沟通和合作,对于你们快速上手和掌握其他的语言,也是很有帮助的。因为其他语言的特性基本c++都覆盖,就像我在大一暑假时有c++基础的情况下,基本只是花两天的时间熟悉了一下java,然后就可以开始学习框架写一些项目了。