‘壹’ 很多程序都是用计算机语言,那么这些计算机语言是如何发明出来的
我是学电子工程与计算机科技的,也自己设计编写过编程语言
计算机的处理器只懂得两个数字,0和1,有些32位有些64位
但是让人去写01010101这样的太不合理,于是有了汇编语言
计算机会把汇编语言翻译成01010101,再运行
汇编语言非常原始,于是基于汇编语言有了更高一等的语言,比如 fortran 和 c
走到现在,有了 java haskell ruby lisp 等等等等等等等等
反正最后都要翻译成0101010101才能运行
基本上语言都是一层一层搭出来的
电路知识不需要,除非你设计 CPU 或者为 CPU 设置汇编语言之类
‘贰’ 程序是如何编写的
设计环境 程序也就是指令的集合,它告诉计算机如何执行特殊的任务。
‘叁’ 编程语言本身是怎么开发出来的
编程语言是从低级语言向上发展成高级语言的,现在的编程语言大部分都是高级语言,最开始的编程语言是机器语言,它是由0 1代码组成的,编写代码非常困难,极易出错,所以人们开始用助记符来代替0 1代码组合,形成了汇编语言,它只是简单的替代,并没有很高级的技术,以后的语言、系统便是由汇编语言开发出来的,要详细了解,可以学一下汇编语言。
二进制——汇编——C——更高级语言
‘肆’ 像c++这样的编程语言是怎么创造出来的
编程语言的发展是随着硬件一起发展的,最初没有当前成熟的101键盘前,技术人员是无法用字母输入命令和语句的,显然也不存在任何高级语言的。
机械计算机我就不谈了,太遥远,第一台电子计算机是ENIAC是1946年制造的,开始用的是连接线,后来用的是打孔机,以纸带作为输入,一根纸带边上是齿孔用于步进电机带动纸带,类似现在的针式打印机的纸张,当然纸带比针式打印机纸张窄,编程人员事先写好二进制指令的编码和数据,逐一在纸带上打孔,比如一个指令和数据是8位,如果是1,则打一个孔,如果是0则不打孔,打完一个字节让步进电机进一格,打后面一个数据。所有程序代码和数据打完,将纸带装到计算机的读入设备中并逐一读入并运行,当时还没有存储器,所以执行完如果需要再运算一遍,要复位重新装纸带。当然如果程序要改写就得重新打一卷纸带。
这就是电子计算机最原始的编程(机械计算机则还要麻烦),后来有了存储器,还是用纸带输入程序,然后可以重复运算,因为输入的指令和数据都存入存储器了,不需要再跑一遍(真正意义的跑)。此时程序员编写的程序都是机器语言,形式就是二进制码
类似这样
01010100
11001101
01101010
...
后来人们觉得这样很麻烦,考虑到一种CPU的指令都是固定,如果有一种简单容易能帮助记忆符号来代替一串二进制就方便多了,因此设计出了汇编语言,因此汇编指令称为助记符,比如MOV,ADD,JMP等等。这时候就需要一种新的输入设备代替打孔机,而且能直接连接在计算机上,之后随着晶体管的发展,单片机出现,一个按钮代表一个指令,同时结合数码键(0-9,A-F)输入16进制数据,让设备转成二进制数据,这应该算最早的编译器了,属于硬件编译器。
再之后,人们发现计算机不仅可以处理数据,还可以处理文本,因此有了ASC码,ASC码也发展了好几代,既然可以处理文本,随着计算机设备的发展,把打字机键盘复制过来,扩展单片机的按钮,这样计算机键盘的雏形出现了,取消了专用汇编指令键,而改用程序来翻译输入的文本,比如单个汇编指令MOV改用键盘输入这三个字母的文本,由翻译程序翻译成二级制码,这应该是最早的源代码了,而这个翻译程序最先当然还是用单片机开发的,而这个翻译程序就是最早的汇编指令编译器了。
有了汇编指令编译器,人们可以直接通过键盘输入汇编指令,由编译器编译成二级制码执行程序,有了汇编编译器,人们不仅直接用于各种科研运算,而且开发了更高级的语言了,那么后来各种语言蓬勃发展起来了,在C语言前还有A,B,以及其他高级语言陆续出现,比如1954年的Fortran。
所以你可以看到,技术都是迭代发展的,你只要学习到足够的知识,可以用任何语言开发你的编译器,当然这可是件不简单的任务,同时,所开发的编译器受你所用的语言限制。