陈述性知识(declarative konwledge)只会告诉我们,什么是什么,比如1+1=2,但它并不会告诉我们为什么1+1=2,
程序性知识(imperative knowledge),会给我们一系列推导信息的步骤。
早期的计算机是fixed—program computers:只能专门用来解决固定的问题,比如研究炮弹轨迹。
之后的计算机是stored-program computers:计算机自己储存了一系列命令,还有执行命令的基本元素。它通过构建一个命令集,将计算过程详细地分解为一系列指令。这就是一个灵活的机器了。
编程语言包含:原始概念(primitive constructs):数字,字符串,操作符等,就像英语单词
语法(syntax):决定原始概念如何组合的规则,就像名词后一般跟动词。(literal.operator.literal)
静态语义(static semantics):决定语法(syntax)合适的句子是否有意义,像名词跟的动词前后单复数(时态)要一致并且是这个名词能够发出的动词,也是之后名词能够接受的动词,你不能说“桌子舔我”,123/“a”也是无意义的。
语义(semantics):语法、语态和时态正确的句子的意思。自然语言中“哎呦,真行!"是夸奖,也可能是讽刺,而在编程语言中句子必须有一个明确的意思!
编程语言的分类方式: 低级和高级(Low vs high):前者利用计算机本身的指令,后者利用语言设计者给的抽象操作符。
通用和专用(General vs targeted):它的操作是可以广泛使用还是面向单一领域。
可解释的和要编译的(interpreted vs compiled):前者计算机可直接理解,后者还要编译