Skip to content

编程语言

提示

这里有很多特例,不单独讨论,没有太大意义

什么是编程语言

与自然语言相对,编程语言是人为规定的用来定义计算机程序的语言,而自然语言是人类使用的语言,在发展过程中不断演化。举个例子,被广泛使用的汉语、英语、日语、法语这些都是自然语言,而常见的编程语言有C Java Python等。

编程语言中包含了一条一条的指令,指示电脑进行一些操作。具体内容会在下一章中讲解。

说明

编程中也有与自然语言相关的,人工智能有一个方向叫自然语言处理(NLP),现在大火的大语言模型就属于这一领域

目前该技术还未大范围应用于我们竞赛当中,但也听说有队伍的同学正在尝试基于大语言模型的自主决策,希望可以看到在读教程的同学们未来的表现

学哪种语言?

目前较完备的编程语言已经有上千种[1],并且还在不同增加中。不同语言有不同的特性,因此也适用于不同的场景

我们选择Python和C++,其中Python因其语法简单生态丰富用于模型训练,C++因其高性能和稳定的特性用于模型推理和解算、通信任务

电控的同学主要使用的是C和C++等语言,它们共同的特点是更贴近底层,便于直接操作硬件。需要注意的是嵌入式会使用如HAL等库与硬件交互,需要专门学习,这方面内容这里不会讲解

提示

我们教python和c++单纯是从竞赛中的应用出发,如果你对其他领域的开发感兴趣,可以自己去找找相关资料,能和了解相关方向的学长聊聊更好

机器语言、汇编语言和高级语言

机器语言

机器语言是用二进制表示的、计算机能直接识别和执行的一种编程语言。它具有灵活、直接执行和速度快等特点。但它的兼容性差,为某种架构计算机写的程序不能在另一种计算机上执行。

要用机器语言编写程序,编程人员需首先熟记所用计算机的全部指令代码和代码的涵义,自己处理每条指令和每一数据的存储分配和输入输出,还需记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分繁琐的工作,而且代码可读性差且容易出错。现在已经几乎没有人会直接编写机器语言了。

提示

回顾从小到大学,近十年的编程生涯中,我接触过几千名能力不同的程序员,即使是top3高校教授、互联网大厂程序员、操作系统厂商研发人员,没有一人会写机器语言。直接编写机器语言难度过高且没有意义,现在即使是硬件开发者、操作系统开发者也不会直接写机器码了。

汇编语言

汇编语言也是一类低级语言。不同的汇编语言可以在在不同架构的设备上运行,它对应着不同的机器语言指令集。

用汇编语言编写的源代码被汇编程序转换成机器代码,这一过程被称为汇编。同样的,它和机器码一样只能在同种计算机上运行,且编写难度较高。

嵌入式程序员或操作系统开发者可能会出于一些需要而编写汇编语言,但这种情况现在也已越来越少。

高级语言

与前两种低级语言相对,高级语言更易编写、更易阅读,也更方便维护,目前绝大多数代码均是使用高级语言开发。python和C++等所有我们要学习的语言都是高级语言,它们不依赖特定种类的计算机,一样的代码可以在不同平台上运行

信息

计算机只能执行机器码,所以后两种语言都会被以某种方式转换为机器码,然后才被计算机执行

编译型语言和解释型语言

编译型语言

编译型语言需要使用编译器,将代码“翻译”为机器码(这个过程被叫做“编译”),然后才能运行,运行时除系统外不依赖其他软件。编译型语言需要有编译过程,但通常运行速度更快效率更高。

虽然作为高级语言,相同的代码可以适配不同系统、不同计算机,但是在不同架构、不同计算机上都需要重新编译才可运行。

解释型语言

解释型的编程语言没有编译的过程,但在运行时需要解释器。在运行时,解释器会想人类阅读一样,动态地将代码逐句解释后再执行。

解释型语言的执行速度往往不如编译型语言,但它更加便于调试和修改,开发效率更高,并且在不同平台上执行时没有重新编译的过程。


  1. Programming Language ↩︎