C语言在二十世纪末到二十一世纪初,因其简易、高效、不依赖运行环境的特性广泛用于低级存储器的编程,尽管到了现在被诸如C++ 、 Python 、 Java等其他高级编程语言,因功能强大、接近人类日常思维等特性淡出各类软件工程师的视线,但随着物联网、微机文化的流行与大环境的倡导,C语言在硬件资源有限的微控制器(MCU)等微机编程上仍旧经久不衰,甚至成为了很多高等院校学习微控制器编程的主要语言。
跟学习不同国家的语言一样,我们需要理解来自外来文化的交流语言,来理解他们的思想、意见和行动;也需要把自己想要让对方知道的观点、想法和命令转化成能被对方所理解的交流语言被他们顺利接受。
同理,能让电脑、移动设备、微机所理解的语言就是编程语言,编程语言有着固定的语句格式、词汇及其作用,电脑、手机、微机等设备都有自己的通用中央处理器,读取内存上的指令并切换与其对应的工作模式,准确执行人们所规定的动作,或者转化为可被人们读取或操作的内容。
存储器是由 海量的二进制可控电容器作为基本框架 堆叠而成的 数字信号阵列,模拟信号难以量化、易受干扰等特性都不能构成稳定的存储结构,否则处理器会在重复读取时产生不同甚至错误的动作。这些数字信号与电路连线中的数字开关相连接,一个二进制位代表一个开关,通过读取这个二进制位以改变电路连线的开关状态,来改变这一套系统中的电气功能。
一个位的数字信号只有低电平(0)和高电平(1)两种状态,想要准确表达更多的状态,就要通过硬件连接一次性读取多个逻辑位,随后改变硬件的电气连接。假设一次性读取4个二进制位并对其加以解析,硬件电路就能区分24=16种不同的状态,最多可以改变一组电气连接系统中的16种工作模式。
海量的二进制序列为集成电路工作在用户要求的工作模式提供了可能,但如果把这些二进制序列组成的机器码直接转化为普通文本并交给用户理解的话,就会让人焦头烂额。
编程语言按照用户通俗语言与机器语言之间的距离和位置,分为高级语言和汇编语言(又称“低级语言”或“汇总编程语言”)。汇编语言可直接被系统编程器直接转换为机器码,偏向处理器一侧,但是文化水平欠佳的用户难以理解;高级语言需要深刻理解用户的需求,并将用户随口说出的基本语句转换为可被细化为独立步骤的汇编语言,对转换媒介的语言功底或密码学经验提出了更大的挑战。
编译器和解析器可以在可被集成电路控制的机器码与可被用户识别并理解的文本之间提供交流的桥梁,前者可以把用户需要的数据转化为可被处理器执行的机器码,后者将及其执行的代码转化为可被用户接受并理解的文本。
随着各个地区的各个用户希望计算机处理的事情越来越多,不同语言下的用户需求如何转化为可被计算机理解的过程语言是难点也是重点,将用户按通俗语言提出的核心需求转化为可被计算机理解并细化的执行语言,就是程序员存在的意义。他们最为接近用户一侧,更懂难以被辞典量化解析的晦涩语言、方言、俚语或网络梗句,懂得如何将几乎偏离基本语句结构的语言转化为结构严谨、语句清晰的基础文本,让计算机对齐加以区分并准确动作。
集成电路和处理器会随着用户需求的苛刻而更新迭代,后续推出的通用处理器会增加功能指令、提高寄存器深度、提高处理频率,正因如此,计算机或者微机才会实现更多的功能更好地为人民服务,但同样伴随着硬件成本的提高,如果在功能需求量不大的多数环境下贸然使用通用计算机,只会导致资源浪费。举个例子,单纯用于后台路由或数据服务的电脑不必像能玩游戏的电脑一样额外添加独立显卡,因为独立显卡的图形渲染对于纯数据处理而言完全没用,能不用就不用。