对于赵文来疯起来只会说二进制的计算机语言,赵德彬和王江平是是震惊的。
“嘶——”
两人齐齐倒吸一口冷气。
恐怖如斯!
真是恐怖如斯!
这里必须要向读者老爷们解释一下二进制语言、汇编语言和高级语言之间的关系。
二进制语言是计算机能直接运行的语言,属于低级语言,就是一连串的0和1,人类很难从连篇累牍的0和1中获取信息。
举个例子:
假设这里有“0”,二十四个连空格都没有的0和1,正常人打眼一看,只能看到满眼的0和1,还能从里面看出其他什么东西?
而计算机就不一样了,它能看懂这一长串的0和1,识别出这串信息表达的是“ZWL”的意思;
再假设这里有一个牛逼的程序员,能把阿克斯码对照表背的滚瓜烂熟,知道0对应的是Z,0是W,0是L。
可是,当他看到上面二十四个0和1的时候,是不是他还得反应一会,先把这二十四个数分成三组,一组八个,才能看出来这一串是“ZWL”的意思?
这才仅仅是二十四个0和1,表达的是“ZWL”三个字母的意思。
试想,一个程序如果有几十万、上百万的0和1挤在一起,任谁看了,不也得懵圈?
除了阅读性差以外,容易出错也是另一座无法翻越的大山。
人在输入0和1的时候,是不是很容易出错?
那简直不要太容易。
只要眼睛花一下、手摁得慢一下,一个0或1出错,程序就会出问题。
同样地,想从这一堆0和1中找错,也是一件非常困难的事情,就像上面那一串只有区区二十四个0和1,但却可以看得让人感觉眼花缭乱。
况且,人的脑子很难把二进制的阿克斯码背下来,因为这东西太反人类了,根本就没有什么规律。
比如:
“0”是“Delete删除”,
要是打错了最后的1,那么“0”就是“波浪号~”的意思;
打错中间第五个1,就会变成代表着“小写w”的“0”。
人的脑子很难准确地记住那一串串的0和1,需要不停地翻对照表,不仅特别容易出错,有了错误还不好排查。
后来,上古程序员们是被冗长的0和1折磨得不轻,觉得这东西实在是太不方便了,难且不说,效率还低。
于是,他们就在二进制语言的基础上,倒腾出来了汇编语言。
汇编语言是面向机器的低级语言,不能被机器直接识别,需要编译。
这个虽然也比较难,但已经比二进制语言强多了,最起码人的脑子是可以记住的。
据说,国家在航空航天和武器方面的编程,用的都是汇编语言。
因为汇编语言仍是面向机器的语言,外人很难从其代码上理解程序设计意图,设计出来的程序不易被移植,安全性比较高。
然而,汇编语言对广大凡人们来说,还是有些复杂、困难,尤其是在进行数据处理或是逻辑运算时,更是令人头秃。
所以,有一批特别聪明、特别有才的程序员,寻思着:不行啊,就算用汇编语言编程,还是有很多人不会,这怎么办捏?
于是,这批聪明人,又设计出了高级语言。
C语言就是高级语言,到这里,编程语言对人类已经非常友好了,就跟大家平常说话交流是一样的。
程序员的门槛总算是被极大地拉低了,连小学生都可以学编程。
用C语言写的程序,阅读性很好,泛用性也很高。
张三写出来的程序,李四就算水平差点,也能看懂。
就算李四看不懂,李四也可以祭出程序员的杀手锏、编程的终极武器、所有代码的万能钥匙——上网查。
只不过,高级语言是从人类的逻辑思维角度出发的计算机语言,不能被机器直接识别,需要最终编译成0和1让计算机识别。
但打个比方,假如汇编语言只需要编译一次就能成为二进制语言,C语言就得进行多次编译,转成十六进制、二进制,计算机才能懂。
高级语言方便是方便,但需要多次编译。
在编译过程当中,可能出现问题,比如有些东西转译后机器识别不了,或者有些信息译着译着就给译丢了。
所谓的“debug”,就是找出编译不通过、计算机无法识别的信息。
甚至在有些情况下,用高级语言写程序写的好好的,怎么看都没有错误,实际上也没有错误,但转译成二进制之后,机器就是识别不出来。
综上所述,会二进制语言并不稀奇。
远古时代的程序员,拿线圈、磁珠,在打孔卡上怼程序,用的就是二进制语言。
很多上古时代用汇编语言编程序的程序员,就懂一些二进制,就比如王江平。
为什么王江平的杀毒软件在全国首屈一指,别的杀毒软件都打不过他?
就是因为他搞的是底层的东西,从底层的一串串“0……”找病毒的代码,将病毒从根上抹除。