惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
博客园 - 司徒正美
C
Check Point Blog
G
Google Developers Blog
The GitHub Blog
The GitHub Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
有赞技术团队
有赞技术团队
P
Proofpoint News Feed
IT之家
IT之家
B
Blog
博客园_首页
量子位
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
J
Java Code Geeks
H
Help Net Security
A
About on SuperTechFans
Apple Machine Learning Research
Apple Machine Learning Research
Jina AI
Jina AI
D
DataBreaches.Net
Y
Y Combinator Blog
大猫的无限游戏
大猫的无限游戏
云风的 BLOG
云风的 BLOG
Google DeepMind News
Google DeepMind News

老董笔记

尚硅谷机构在哪?尚硅谷培训怎么样?靠谱吗-互联网IT百科 韩顺平介绍,传智讲师,开办泰牛,入尚硅谷等一系列-互联网IT百科 pandas多重索引标准样式(写入excel有空行)-互联网IT百科 cannot join with no overlapping index names-互联网IT百科 pandas多列变多行(即宽表变长表)melt和stack函数-互联网IT百科 pandas多行转多列(长表变宽表)pivot和unstack-互联网IT百科 Index contains duplicate entries, cannot reshape完美解决-互联网IT百科 single positional indexer is out-of-bounds-互联网IT百科 Can only compare identically-labeled Series objects-互联网IT百科 pandas transform用法详解(多个案例)-互联网IT百科 python四舍五入精确实现-互联网IT百科 pandas的groupby使用apply分组排序-互联网IT百科 index 0 is out of bounds for axis 0 with size 0-互联网IT百科 pandas分组过滤filter函数-互联网IT百科 联想Win10系统如何禁用触摸屏关闭触摸-互联网IT百科 groupby分组计算transform转换返回相同长度序列-互联网IT百科 brooks seo教程python教程,brooks seo教程网盘,布鲁seo资源-互联网IT百科 电脑右键文件夹一直转圈电卡死怎么回事-互联网IT百科 施琪嘉的心理成长课(荐)-互联网IT百科 百度SEO公司_SEO推广公司哪家好_SEO外包服务如何选-老董笔记 groupby后agg同1列用多个聚合函数、不同列用不同函数、自定义函数-互联网IT百科 pandas的groupby单列多列分组聚合运算-互联网IT百科 DataFrameGroupBy对象及分组个数、分组大小、组名索引、组数据详解-互联网IT百科 pandas中groupby之Grouper and axis must be same length-互联网IT百科 pandas中groupby的分组原理-互联网IT百科 pandas的groupby的使用详解大全-互联网IT百科 openpyxl单元格自动换行强制换行Alignment(wrapText=True)-互联网IT百科 python教程全套(可就业)-互联网IT百科 联想win10系统CPU显示100%,电脑呼呼响怎么回事-互联网IT百科 如何自制CPU,CPU原理是怎么样的?-互联网IT百科
第一个编译器是怎么写的?从哪来?-互联网IT百科
2020-03-28 · via 老董笔记

  第一个编译器是怎么写的?网上见过一篇写的比较好的文章,但是我感觉还是有逻辑上的漏洞,所以自行提出疑问再意淫补充!我们知道计算机是人类通过电子管的方式实现的一些逻辑层面的运算和转换,计算机的本质就是一堆电路,只不过这些电路被赋予了人类头脑里的逻辑,产生了所谓的加法电路和减法电路。

  计算机的核心器件 CPU 是许多电路的集合。电路是由开关来控制的,每一个开关的通断就是抽象层面的0和1,也就是所谓二进制数据。

  1、直接面对CPU时,编程就是拨通或者断开这些开关,没有传统意义上的编程语言。

  随着人类的改造,后来又发明出了穿孔打卡的方式,打孔的卡上面有很多排线,每条线都有可以打的孔,这些线和开关相互匹配。这种方式能够更简单方便地切换开关。

  2、此时此刻,人类不在直接操作开关了,改为去打孔,你打的孔决定了计算机发生什么样的运转。编程就是打孔,也可以说人类在打孔卡上面写程序。

  就像女娲造人一样,每个人的样子一样就不用手来捏了,发明个模具出来很快就能造个人!打孔卡也一样,让计算机完成同样的功能只要保存一个打孔卡上的孔即可,这减少重复工作,避免了重复造轮子。

  随着对计算机的使用,针对相似的功能人们开始构建程序库。大部分的程序渐渐的有了一些规则手册来指导编写,虽然比之前手动控制开关方便了,但还是很繁琐。

  这时候,格雷斯·霍珀(Grace Hopper)出现了一个革命性的想法。

  她想设计一种程序,让人可以用类似人类的语言把想做的事写下来,然后用这个程序把它转为真正能让计算机实现这个的事的机器指令。这个想法就是今日的 Compiler (编译器)。

  她发明了世界上第一个编译器 (Compiler),名字叫做 A-0。

  A-0 的原理是:编译程序把穿孔卡(该卡携带有所谓人类语言编写的程序)加载到计算机中,计算机会吐出另一组包含机器代码的卡片,第二组卡片将被装入计算机,计算机就可以执行这段新的程序了。

  疑问:既然第一次所谓人类语言被加载到计算机中,那么第一次所谓人类语言的程序应该也是打孔,因为计算机只能靠插入打孔卡来工作。那么,这和最初的打孔有啥区别呢?

  个人猜测所谓用人类语言的打孔可能打孔方式更接近于人类思维,比如我在打孔卡上打一个python66的形状,那么插入到计算机后会生成一个真正能让计算机打印python66的指令。

  区别在于我不用根据cpu的电路开关设计来费劲编写原始的打印python66的指令了,而是用人类习惯的打孔方式打一个python66的形状的孔即可,这打孔就轻松多了

  A-0 编译器是大量编程语言的开始,大多数现代编程语言都可以追溯到 A-0,这是编程语言的始祖。

很赞哦!

python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群 python学习会