第01/90步《番外篇》第1章认识计算机世界第1课~第4课

简介: 今天学习《番外篇》第1章认识计算机世界的第1课~第4课内容,了解计算机基础原理及基础概念。没有练习,完成阅读并理解即可。

image.png

今天学习《番外篇》第1章认识计算机世界的第1课~第4课内容,了解计算机基础原理及基础概念。没有练习,完成阅读并理解即可。


学习目标


  • 了解计算机是如何响应人类的交互请求的,对于1+1这样简单的问题,计算机是如何计算的。
  • 了解计算机是如何实现及提供可编程机制的,人类是如何通过编程语言控制计算机的交互行为的。
  • 了解编程语言具有哪些常见特征,变量是什么,语句是什么,逻辑控制语句具有哪三种结构,什么是代码区块,什么是函数,什么是类。

主要知识点


  • 所有计算机表面上复杂的软件运行,都是底层简单的节字叠加。

  • 机器码是像 010110010 这种二进制格式的数据,计算机只能认识和执行这种数据。

  • 汇编语言是给人类看的机器码注解,所有汇编程序编译后,在给计算机执行前,都会变成机器码。

  • CPU由寄存器、算术运算单元等元件组成。寄存器像商场里的寄物柜,是暂时寄存有待运算的数据的。算术运算单元是处理计算工作的。

  • 加法器是CPU中非常基本的逻辑元件,对于加法器,输入数据一定,输出数据也一定,这是由物理电磁学定律决定的。其它逻辑组成元件,及使用基本逻辑元件复合成的更为复杂的逻辑元件,也遵循同样的物理电磁学定律。

  • 现代计算机 CPU 里用的是更高级、更微小的场效应管,本质上它也是一种晶体管。晶体管是组成加法器等基本逻辑元件的基本组成部分,是计算机CPU里最最基础的存在。

  • Bug指代码中的错误,在英语中是飞蛾的意思,而 Debug 是由 Bug 派生的单词,指查找、解决Bug的过程。

  • 由于物理电磁效应,线圈变成一个磁铁,吸附铁片闭合电路,这是继电器开关的工作原理。人类从继电器开关上继续迭代,发明了逻辑门电子元件,例如逻辑非门、逻辑与门等。

  • 人类使用逻辑门元件组成了半加器,又用半加器组成了全加器,全加器及其它类似的逻辑元件共同组成了ALU(算术逻辑单元)。ALU及其它同类单元共同组成了计算机的核心————CPU。

  • 人类第一台真正意义上具有冯·诺伊曼结构的电子计算机叫ENIAC,诞生于1942年的美国宾夕法尼亚大学,有40吨重,占地四室一厅那么大,1秒钟可以计算5000次。现在随便一台装在口袋里的智能手机,性能都完爆它。

  • 早期计算机并没有编程语言,先后经过了拨动开关编程、卡带编程时代。

  • 编程语言是给人类看的,计算机不需要看编程代码,编程语言的核心是编译器。葛丽丝·霍普发明了人类历史上第一个计算机编译器——A-0系统,这是一个工具,负责将人类编写的字母翻译成计算机可以理解的机器码字节。霍普的A-0系统被称为汇编语言鼻祖,这个编译器工具具有划时代的意义,但很遗憾在当时霍普的布道却遭到了抵制和泼冷水。人类在近代文明发展史上表现出来的愚昧,并不比哥白尼时代将宣扬哥白尼日心说的哲学家布鲁诺当众烧死的罗马教众有所降低。

  • C语言是现代高级编程语言的鼻祖。上世纪 70 年代,在贝尔实验室工作的肯·汤普逊为了可以在实验室的一台小型计算机PDP-7上玩一款太空游戏,在A-0的的基础之上发明了B语言,并用B语言重写了PDP-7的系统————即后来的Unix系统的前身,使其可以运行太空游戏。后来他的同事丹尼斯·里奇加入,又与肯·汤普逊一起,将B语言进一步简化,形成了C语言。两个程序员大神,为了玩一个小游戏,写了一个操作系统,发明了两个编程语言,其中一个至今仍在广泛使用。

  • 汇编语言是负责计算机与高级编程语言打交道的,而高级编程语言是负责汇编语言与人类打交道的。

  • 变量是一种指代数据的动态符号,它是计算机世界第一个“魔法”元素,为计算机开启了“智能”。它和人类的智能类似,在人类文明中也有许多类似“变量”的存在,这方面最普通的符号就是自然语言,例如符号“moon”、“月”指代月亮。

  • 编程语句是对操作的符号描述,它指代早期一波开关的拨动,或者一段卡带上的输入信息。变量指代数据,语句描述操作。

  • 无论什么编程语言,逻辑控制语句只有三种:顺序、分支和循环。
  • 函数是最基本的代码复用单位。函数有输入条件,有输出结果,输出结果又可以作为另一个函数的输入条件,加上逻辑控制语句(例如分支和循环),同样的代码可以演绎出不同的执行结果,这就是计算机的“智能”。这与人的人生发展很像,决定一个人一生成就的不仅在于基因,还在于不同阶段接收到的外界输入条件,及每个阶段的执行结果。

  • 类是对函数的封装,是面向过程软件思想遇到挑战时,面向对象软件思想诞生时产生的概念。类包括属性和方法,属性是数据描述,方法是操作描述。类是一种集合了数据描述和对数据操作描述的对象,从这个意义上讲,Go语言虽然没有类,但它的结构体(struct)就是类的概念。

  • 数据结构是组织、存储数据的一种复杂方式。简单的数据类型经过复合,便是复杂的数据类型——即数据结构,计算机的数据结构可以描述任何我们需要描述的信息。

  • 栈是一种从顶部推入、从顶部抽出的一维有序数据集合。队列是一种从尾部推入,从顶部取出的数据结构。与栈、队列只能在两端处理数据的方式不同,链表可以在任何一个子节点上处理数据,它是一种可以在任一数据节点上处理数据的链状数据。

  • 冒泡排序通过相邻两个元素之间的比较和交换,使较大的元素逐渐从左边升序,移至右边,就像水底下的气泡一样,逐渐向上冒出,故称为冒泡排序。

  • 算法工程师要在具体的某个特定细分领域的数据结构及算法上钻研得深入,而架构师必须在软件系统设计的方方面面考虑得周全且缜密。怎么做一名合格的架构师?只有对自身业务充分了解,才能在丰富的软件架构经验上,设计出足够强壮稳定、又充分灵活的软件架构;只有对当下业界的主流技术充分了解,才能在选择技术方案时,做出风险最低、效率最优的架构决策。

实践疑难点



小结


  • 计算机没有智能,所有智能都是人类赋予它的,计算机是人类文明在数据处理能力上的工具延伸,和一万年前原始人打磨石器制作工具是类似的。

  • 霍普发明的A-0翻译系统,是编程语言的鼻祖,标志着人类对计算机的使用进入了新时代。

  • 变量、函数、类,这三个概念的引入在计算机编程史上具有重要意义,这三个概念每一个概念的诞生,都让计算机的数据处理能力有了层级跃升。

后记


内容看起来有点枯燥,放在项目实践中一点一点做就不显得枯燥了。这本90步讲义只是一个示例,事实上读者在学习过程中,最好自己照样画瓢,基于费曼学习法,写一写自己的“讲义”————将每一步的学习结果都记录下来。也可以在作者的基础之上,进行一些删减修改;总体上独立完成归纳总结是最好的。


目录
相关文章
|
5月前
大学物理(上)-期末知识点结合习题复习(1)——运动的描述(两类运动学知识点、圆周运动知识点、相对运动知识点)
大学物理(上)-期末知识点结合习题复习(1)——运动的描述(两类运动学知识点、圆周运动知识点、相对运动知识点)
38 0
|
6月前
|
编解码
通信原理期末复习——基础小题汇总(二)
通信原理期末复习——基础小题汇总(二)
162 0
通信原理期末复习——基础小题汇总(二)
|
算法
研究生考试.数据结构与算法之十一 图
研究生考试.数据结构与算法之十一 图
52 0
|
4月前
|
编解码
《通信原理》期末复习笔记(一)
《通信原理》期末复习笔记(一)
|
4月前
|
编解码 内存技术
《通信原理》期末复习笔记(二)
《通信原理》期末复习笔记(二)
|
11月前
|
Python
1轻松学python第一节到第五节
1轻松学python第一节到第五节
45 0
|
存储 前端开发 数据库
【软件设计师-从小白到大牛】下午题基础篇:第一章 数据流图(DFD)
顶层图上的数据流:是系统和外部实体之间的联系。而内部数据流在0层图中能体现,因为系统被细分了。 对于数据流图任意一个加工:都应该有输入和输出,箭头有进也有出;黑洞:只有输入,没有输出;奇迹(白洞):只有输出,没有输入。这两种都不符合客观事实。
202 0
|
存储 编译器 调度
[计算机组成原理(谭志虎 微课版)]第一章 计算机系统概述(课后习题[习题1]+答案解析)
[计算机组成原理(谭志虎 微课版)]第一章 计算机系统概述(课后习题[习题1]+答案解析)
|
移动开发 JavaScript 前端开发
第03/90步《番外篇》第1章认识计算机世界第6课
今天学习《番外篇》第1章认识计算机世界的第6课,认识网页开发基础概念。这是这一章的最后1课,学完它代表概念准备阶段完成。
67 0
|
设计模式 JavaScript 前端开发
第02/90步《番外篇》第1章认识计算机世界第5课
今天学习《番外篇》第1章认识计算机世界的第5课,认识面向对象有关的基本概念。
68 0