6.00 是MIT CS的入门课程,面向没有多少编程基础的人。从前学过一次,现在再学一遍,主要是为了学习Python。
第一课主要介绍计算机的一些基础知识,内容虽浅但逻辑清晰,涵盖了很多重要的问题。
1. Declarative Knowledge vs Imperative Knowledge
Declarative风格:首先声明一些规则,类似于启发式程序,这个可以从Lisp - AI上找到此程序风格的分支,90年代曾经红极一时,当初日本成为AI的中心,雄伟的五代机计划似乎要将美帝踩到脚下。随Google等公司大量使用函数式编程风格解决并行计算并投入巨大资源研究AI,相信我们未来能从Declarative风格中挖掘出更多宝藏。
Imperative风格:发出一系列指令,这个目前应用最广。Shell、C、Java等都是这个风格。由于其可控,因此其主导地位在这个时代是不可动摇的。
2. Stored Program Computer
简单说,就是指令和数据掺在一起的体系结构。(Treat instructions and data as the same thing)
过去曾有过指令流和数据流分开的机器,但目前几乎所有的机器都是Stored Program Computer. 将两者混合的好处我记不清了,我自己能想到的是降低控制难度,提升速度和使递归成为体系结构的一个特色。课程上讲这种方式更为灵活,可以处理用户自定义的程序,看来我没有想到点子上。
\
3. Syntax, Static Semantics, Semantics
了解过编译原理的人可能很容易分清Syntax和Semantics,可Static Semantics是什么可能就需要学过那们课程才知道。
Syntax: 语法,例如:指令可以操作数据,因此1/'a'在语法上是对的,1和'a'都是数据,可以被/处理
Static Semantic: 那段字符串具有语义,例如1/'a'就不能通过static Semantic检查,因为这是没有语义的。
Semantic: 语义
4. Compiled vs Interpreted
自然这个是少不了的,这个话题可大可小,这里就不多说了。