页面加载中,请稍候
来源:Amadeus发布时间:2021-08-09322浏览
询问 AI聪明的人类发现把简单的开关组合起来可以表达复杂的bool逻辑,在此基础之上构建了 CPU ,因此 CPU 只能简单的理解开关,用数字表达就是0和1。

创世纪:聪明的笨蛋
CPU 相当原始,就像单细胞生物一样,只能把数据从一个地方搬到另一个地方、简单的加一下,没有任何高难度动作,这些操作虽然看上去很简单很笨,但 CPU 有一个无与伦比的优势,那就是一个字:快,这是人类比不了了的,CPU 出现后人类开始拥有第二个大脑。就是这样原始的一个物种开始支配起另一个叫做程序员的物种。
程序员按照 CPU 的旨意直接用0和1编写指令,你没有看错,这破玩意就是代码了,就是这么原生态,然后放到打孔纸带上输入给CPU,CPU 开始工作,这时的程序可真的是看得见摸得着,就是有点浪费纸。1101101010011010100100110010100111001000110111101011101101010010乍一看你知道这是什么意思吗?你不知道,心想:“这是什么破玩意?”,但 CPU 知道,心想“这就简直就是世界上最美的语言”。
sub $8, %rspmov$.LC0, %edicallputsmov $0, %eax这样,程序员不必生硬的记住1011.....,而是记住人类可以认识的ADD SUB MUL DIV等这样的单词即可。
汇编语言就这样诞生了,编程语言中首次出现了人类可以认识的东西。
如果你用汇编这种低级语言就得这样实现:
我想你已经 Get 到了。
电光火石之间灵光乍现,你发现了满满的套路,或者说模式。大部分情况下 CPU 执行的指令平铺直叙的,就像这样:
这些都是告诉 CPU 完成某个特定动作,你给这些平铺直叙的指令起了个名字,姑且就叫陈述句吧,statement。if ***blablablaelse*** blablabla在某些情况下还需要不断重复一些指令,这个套路看起来就是原地打转:
while *** blablabla最后就是这里有很多看起来差不多的指令,就像这里:
这些指令是重复的,只是个别细节有所差异,把这些差异提取出来,剩下的指令打包到一起,用一个代号来指定这些指令就好了,这要有个名字,就叫函数吧:func abc: blablabla现在你发现了所有套路:
条件转移if***blablablaelse***blablabla这些相比汇编语言已经有了质的飞跃,因为这已经和人类的语言非常接近了。接下来你发现自己面临两个问题:
循环while***blablabla
函数funcabc: blablabla
就像盗梦空间一样,一层梦中还有一层梦,梦中之梦,梦中之梦中之梦。。。一层嵌套一层,子子孙孙无穷匮也。。。
此时你已经明显感觉脑细胞不够用了,这也太复杂了吧,绝望开始吞噬你,上帝以及老天爷啊,谁来救救我!f(x) = f(x-1) + f(x-2)这个递归公式在表达什么呢?f(x)的值依赖f(x-1),f(x-1)的值又依赖f(x-2),f(x-2)的值又依赖。。。
一层嵌套一层,梦中之梦,if中嵌套 statement,statement 又可以嵌套if。。。if : if bool statement else statementfor: whileboolstatementstatement: if | for | statement上面一层嵌套一层的盗梦空间原来可以这么简洁的几句表达出来啊,你给这几句表达起了高端的名字,语法。数学,就是可以让一切都变得这么优雅。世界上所有的代码,不管有多么复杂最终都可以归结到语法上,原因也很简单,所有的代码都是按照语法的形式写出来的嘛。至此,你发明了真正的人类可以认识的编程语言。之前提到的第一个问题解决了,但仅仅有语言还是不够的。
树干下面是树枝,树枝下是树叶,树枝下也可以是树枝,树枝下还可以是树枝、吃葡萄不吐葡萄皮,不吃葡萄倒吐葡萄皮,哎?这句不对,回到上面这句,树干生树枝,树枝还可以生树枝,一层套一层、梦中之梦、子子孙孙无穷匮、高中数学老师,等一下,这也是递归啊!!!我们可以把根据递归语法写出来的的代码用树来表示啊!
你的初中老师仰天大笑,图样图森破,看似高科技的东西竟然靠初中知识就解决了。
完成这个工作的程序也要有个名字,根据“弄不懂原则”,你给这个类似翻译的程序起了个不怎么响亮的名字,编译器,compiler。新闻来源:strongerHuang,文中所述为作者独立观点,不代表icspec立场。更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj。
暂无评论哦,快来评论一下吧!
2026-07-09

2026-07-13

2026-07-09