都可以用文言文编程了,CPU真能读懂古文?

去年底,有中国开发者已经开发出文言文编程语言,并在GitHub上摘得了5500星,在国内引起不小反响。这件事给普通人的印象是,科技发展日新月异,电脑CPU太厉害,都能读懂文言文了!

CPU真的能看懂文言文代码吗?答案是CPU既看不懂文言文代码,也看不懂英文代码。

现在的CPU晶体管数量动辄几十亿个,结构非常复杂,但内部传输的信号只有两种:高电压和低电压,分别代表数字信号“1”和“0”(也有相反的),因此CPU唯一能看懂的就是由“1”和“0”组成的代码。 由于程序(代码)存储在电脑硬盘中时,也是“1”和“0”的形式,是否就意味着,只要程序存到硬盘中,CPU就能认识呢? 答案是CPU仍然看不懂这些程序,因为以“1”和“0”位模式存储的程序和以“1”和“0”写成的机器语言完全是两回事,简单说,两者的区别类似于汉语书和英语书都用纸和油墨印制,但依然是两种不同的语言,不会英语的依然看不懂英语书。 机器语言是CPU唯一能看懂的语言,也是第一代编程语言。


机器语言的最大特点是面向计算机硬件编程,简单说就是程序员需要通晓计算机硬件知识,写的程序要真实表示数据是如何被计算机操纵的。对程序员来说这就比较头大,一方面不仅需要通晓计算机硬件知识,另一方面如果计算机使用了不同的硬件,那么就得重新编程。

毕竟上得了“厅堂”(搞掂硬件)下得了“厨房”(玩得转软件),只有少数大神能做到,加上机器语言纯用“0”和“1”序列组成,非常单调枯燥,不仅扼杀了编程的趣味,而且对视力也是一种考验,稍微一眼花,看错1或0的排列位置,就会制造一个大BUG。

于是,有一帮人开始琢磨了:能不能将计算机硬件从编程中分离出来,让硬件知识小白也能编程?

最先开窍的是蓝色巨人IBM,它在其System/360计算机中引入了ISA(Instruction Set Architecture)概念,将编程所需要了解的硬件信息从硬件中抽象出来,这样编程人员就可以面向ISA编程。由于ISA是用来描述编程时用到的抽象机器(不是具体的电脑CPU),包括了一套指令集和一些寄存器,因此,程序员只要知道ISA,不需要了解具体的硬件知识,就可以编写程序,在ISA相同的电脑上运行。

这样一来,就出现了汇编语言,但汇编语言用符号写成,还是不够接地气儿,于是高级语言就诞生了。高级语言的诞生,使程序员将精力从复杂的计算机结构转移到要解决的问题,从而可以专心烹调程序大餐。

由此也可以看出,现在的程序员并不都是了解计算机硬件的,所以妹子们不要指望自己的程序员男朋友给你DIY电脑,或者电脑坏了,他能给你省下一笔修理费。他说不会修,那就是真的不会修。

自从高级语言出现后,人类开始了在编程语言上的放飞自我,经过数十年的发明创造,现在的高级编程语言已超过2500种,像比较知名的C++和Java等,都属于高级语言。