机器语言、汇编语言、高级语言的理解
三种程序设计语言概要
引言
第一台通用计算机 -- ENIAC
由于第二次世界大战的需要,历经4年的科研与实践,世界上第一台通用计算机、第二台电子计算机 ENIAC(Electronic Numerical Integrator And Calculator)于 1946 年 2 月 14 日在美国宾夕法尼亚大学宣告诞生,标志着计算机时代的到来。
ENIAC 是基于真空管技术研发的第一代计算机,无操作系统,采用机器指令或汇编语言编程,下图便是编程语言的层次结构,具体概念将一一道来。编程语言的层次结构:
机器语言
机器语言(机器码)是用二进制代码(只包含“0”和“1”的代码)表示的、计算机能直接识别和执行的一种机器指令的集合。最早的计算机直接靠机器语言运行,输入方法是靠打孔带(一个条带上面有实心空心的小点,对应1和0)。后来出现了磁带,但指令输入的本质没有改变。 通俗来讲,那时需要靠科研人员给计算机一段对应 0 和 1 的打孔带,计算机才能执行相应的操作并返回预期的结果。用机器语言与计算机沟通
这些包含 “0”、“1” 的二进制机器码具有灵活、直接执行和速度快的特点,可以根据计算机设计者的实际需要直接操作计算机的硬件结构。但由于机器语言与硬件构造密切相关,每个计算机的硬件也不尽相同,因此不同型号的计算机其机器语言是不相通的,按照一种计算机的机器指令编制的程序,不能在另一种计算机上执行。一个机器语言源码示例
二进制的机器语言也是有规则的,每一串相应的01映射着一条特定的指令。机器语言的简要实例
计算机发展至今,除了计算机生产厂家的专业人员外,绝大多数的程序员已经不用再去学习机器语言了。
汇编语言
汇编语言(符号语言)是将二进制的机器码通过助记符的方式让人可以更方便地编写并检查的低级语言。汇编语言接近机器语言,可以看做是机器语言的另一种形式,计算机在运行时也需要将汇编语言变为机器语言的二进制形式才可运行,这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。一个汇编语言源码示例
汇编语言的特点:
- 面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。
- 保持了机器语言的优点,具有直接和简捷的特点。
- 可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。
- 目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。
- 经常与高级语言配合使用,应用十分广泛。
汇编语言在编程发展史中承前启后,它第一次摆脱了机器语言的束缚,进入到以接近人类语言为发展目标的时代。
高级语言
高级语言是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序,但机器是无法直接执行的,需要最终编译链接成二进制的机器代码才可被计算机直接执行。
高级语言并不特指某一种具体编程语言,而是包括很多编程语言在内。如目前流行的 JAVA 、 C 、 C++ 、 C# 、 Pascal 、 Python 、 PHP 、VC 语言等等,这些语言的语法、命令格式不尽相同。一个简单的高级语言程序 -- C语言
因此将程序设计语言从机器语言抽象到高级语言,带来的主要好处是:
- 高级语言接近算法语言,易学、易掌握,一般工程技术人员只要几周时间的培训就可以胜任程序员的工作;
- 高级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高;
- 高级语言远离机器语言,与具体的计算机硬件关系不大,因而所写出来的程序可移植性好,重用率高;
- 由于把繁杂琐碎的事务交给了编译程序去做,所以自动化程度高,开发周期短,且程序员得到解脱,可以集中时间和精力去从事对于他们来说更为重要的创造性劳动,以提高程序的质量。
编译型语言和解释型语言
高级语言又分编译型语言(C、C++等)和解释型语言(JAVA、JavaScript、PHP等),虽然最终都需要编译成机器语言才能被计算机识别和执行但是——
- 编译型语言需要将源码一并地转换成机器语言的程序之后再执行,针对不同计算机结构编译后的机器语言无法跨平台运行;
- 解释型语言是在运行的时候将程序先编译成字节码(可以理解为一个中间语言),再在运行的时候由运载解释型语言的环境将字节码翻译成机器语言。但这个过程中可以依靠运载环境根据不同的计算机硬件结构生成相应的机器语言,从而具有跨平台的特性。
posted on 2018-01-09 19:20 yarou7076 阅读(2256) 评论(0) 编辑 收藏 举报