高级语言视角
算法语言
高级语言编程都是通过描述算法,在其中描述算法的逻辑结构主要就是分支和循环。高级计算机语言编程过程中,我们发现许多相似的概念。比如:变量赋值语句,if-else逻辑控制结构,for循环结构,文件,Socket等。
编译器
推断,编译器塑造变量赋值,if-esle逻辑控制,for循环结构。推断,操作系统塑造文件,Socket等。理解编程高级编程语言,本质就是理解编译原理和操作系统。
推断,编译器早于操作系统,0和1的组合记忆是人类面临的第一个难题。于是,最早的汇编器就是将助记符对应于二进制。思考,若类似键盘的字母输入设备,那么汇编器然并卵。改善输入设备,为人类可识别的英文字母,当我们输入相应的汇编指令,都会经过处理(人工或硬件或程序),然后,变化成二进制输入。早期输入计算机的输入设备都是识别二进制,汇编语言写出来的程序,需要人工对应表进行翻译成对应的二进制。
操作系统
BIOS,通用计算机关键所在,提供了基本的输入输出,并且规范了CPU执行的代码开始位置。
操作系统,接管BIOS的后续代码执行,一些简单的系统调用有BIOS提供,抽象各种概念来达到对待计算机的统一视图。主要分为两个方面,统一各个设备提供的功能接口规范(同一功能设备,不同驱动程序)和统一视图于各个设备(文件系统,针对各种存储设备)。
本质(面向操作系统)
高级语言编程,语法结构是面向编译器的逻辑。编译器提供了语法的逻辑视图,也就是编译器这个软件提供的一些功能,屏蔽功能复杂性,暴露需要的通用性。
高级语言编程,抽象设备是操作系统将物理设备抽象出来的统一概念。例如文件系统,Socket等,运行的程序本身是操作系统的一个概念(进程),也就是高级语言规范其实是捆绑于操作系统中,需要遵守操作系统的规范。进程,运行中的代码,存于内存,运行于cpu,若需要交互IO设备,则需要进行系统调用(OS提供)。
于是,高级语言编程本质是存于内存,执行于CPU,交互外界于系统调用。
而且,编译器实际上不仅仅是编译器,而且还是统一提供操作系统的抽象概念的暴露者。
网友评论