感谢北大李戈老师讲解的计算概论。
【道阻且长,行则将至】
很多年没有intensive coding,现在这个系列是coding retake,一点点回忆之前的知识,希望能重回到一线。主要内容包括C,C++,Pytorch学术前沿项目学习和实践,预计会在2024年内完成。
1. 计算机的基本原理
在这部分,讲得最出彩的是“3次数学危机-图灵机”(感兴趣请观看原视频)以及通过最初的图灵机(一个存储带、一个控制器)完成4+3=7的操作,让人对图灵机的深刻影响有了直观的感受。
哥德尔不完备性定理的证明结束了关于数学基础的争论,宣告了把数学彻底形式化的愿望是不可能实现的。
那什么是可计算问题?可计算与不可计算任务的边界如何界定?
>> 研究思路:为计算建立一个数学模型,称为计算模型,然后证明凡事这个模型能够完成的任务就是可计算任务。
>> 图灵机1936年提出了一种理想的数学模型-图灵机。完美地界定了任务是否可计算。
2. 程序运行的基本原理
在这部分,讲得最出彩的是提出了几个大家很容易忽略的问题。计算机是能用电路进行计算的!CPU是制造好的电路,它能完成指令集里的运算!
- 计算机为什么能进行计算?
>> 用二进制表示数据
>> 用布尔代数进行运算(与、或、非、异或、同或等)
>> 用电路实现布尔代数
所以电路能进行计算,计算机就是由这样的电路组成的。
- 现代计算机怎么计算?
1. ENIAC,实现原子电路,根据需要执行的程序,进行线路组合(超级大、超级多线)
2. EDVAC, 不能通过重新“组合不同电路”的方式,存储程序式计算机,冯·诺伊曼式计算机。包括5个部分,控制器、计算器、存储器、输入、输出设备,通过总线相连。现代计算机就是如此。
程序执行,人写的程序->编译成CPU能接收的指令->二进制码