编程语言
程序有语句或指令组成
计算机只能执行低级语言中的指令(汇编语言的指令要先转成机器码才能执行)
高教语言要执行就必须翻译成低级语言,翻译的方法有两种:编译和解释,虽然有这样的不便,但高级语言有一个好处就是平台无关性。
平台这个词有很多种解释,可以指计算机体系结构(Architecture),也可以指操作系统(OperatingSystem),也可以指开发平台(编译器、链接器等)。
不同的计算机体系结构有不同的指令集(Instruction Set),可以识别的机器指令格式是不同的,直接用某种体系结构的汇编或机器指令写出来的程序只能在这种体系结构的计算机上运行、
然而各种体系结构的计算机都有各自的C编译器,可以把C程序编译成各种不同体系结构的机器指令,这意味着用C语言写的程序只需稍加修改甚至不用修改就可以在各种不同的计算机上编译运行。
编译执行的语言
总结一下编译执行的过程
首先你用文本编辑器写一个C程序,然后保存成一个文件,例如program.c(通常C程序的文件名后缀是.c),这称为源代码(Source Code)或源文件,然后运行编译器对它进行编译,编译的过程并不执行程序,而是把源代码全部翻译成机器指令,再加上一些描述信息,生成一个新的文件,例如a.out,这称为目标文件(Object File)或可执行文件(Executable)。
其实可执行文件只是目标文件的一种类型。可执行文件代码才是计算机可以执行的程序
如下图所示:
优缺点
优点:
1.解释执行不依赖于平台,因为编译器会根据不同的平台进行解析
2.开发速度快,出现严重BUG的几率小
缺点:
1.解析需要时间,不生成目标而是一句一句的执行的方式会造成计算机资源的浪费,即执行效率低。
解释执行的语言
有些高级语言以解释(Interpret)的方式执行,解释执行的过程和C语言的编译执行过程很不一样,例如写一个Python源代码,保存成program.py(通常Python程序的文件名后缀是.py),然后,并不需要生成目标代码,而是直接运行解释器(Interpreter)执行该源代码,解释器是一行一行地翻译源代码,边翻译边执行的。
如下图所示:
优缺点
优点:
1.相比解释执行编译执行效率高,占用资源小,适合复杂程序。
缺点:
兼容性差,例如windows平台上写的编译程序一般不可以unix平台上运行。
当然,如果只是简单的scanf,printf是可以的,但是像指针,内存分配,文件操作,多线程等,在一些相对复杂的系统问题就严重了。