不用高级语言也不用汇编可以写程序(汇编语言是不是高级程序语言)
现在大家开发软件都非常方便,有很多高级语言可以选择,如C++、Java等,但在计算机刚发明出来时,编程可就没有这么方便了。
在1946年世界第一台计算机诞生时,程序就是一堆杂乱无章的电线,程序员需要摆弄电线来编程。现在的程序员自嘲说自己是码农,但在当时,程序员干的确实是体力活。
这么反人类的操作,当然的程序员也受不了,非常累,出错率也极高。于是哈佛大学的艾肯发明了打孔纸带编程,将预先需要编程的程序,按照计算机指令,在纸带上提前打孔,送入计算机执行,执行结果经另一条纸带打孔显示出来。打孔编程是真正按照计算机的原指令来编程的,按照计算机的二进制规则,提前在纸带表上特定的位置打孔,有孔的位置相当于1,没有孔相当于0。
打孔纸带实现了最初级的编程,但指令的编写和输入输出都极为麻烦,而且二进制的打孔纸带可读性极差,往往会耗费数周甚至数月的时间完成纸带代码,再用数周的时间分析执行结果。
随着计算机的发展,打孔纸带编程已经慢慢落后,基于指令助记符的汇编语言慢慢发展。计算机指令原生是二进制形式,指令和操作数混在一起,需要对着指令手册才能识别。汇编语言使用人类能读懂的字符代替二进制指令码,如mov ax 1234H,很容易就能想到把十六进制数1234H给ax寄存器,再经过系统的学习,就可以完全扔掉二进制的指令码了。
汇编解决了指令的易读问题,但还是太基础,即使能读懂大部分指令的意思。但汇编语言还是直接基于指令的语言,包含着大量计算机底层的晦涩难懂的内容,如寄存器、内存地址、中断等,上手学习难度也比较大。
与此同时,另一种更接近人类语言的高级计算机语言也在发展。如现在流行的C++语言,可以使用变量、语句、函数、判断、循环、类等人类语言的概念来开发软件,只需经过简单的学习,就可以上手开发软件。
当然,计算机并不能直接识别类似C++的高级语言,高级语言需要先编译成汇编语言,再把汇编转成计算机机器码执行。如今,汇编大部分时间都被用作高级语言的中间语言,或开发驱动和底层应用的利器。