计算机系统构造浅解第一期
程序设计的基本元素
- 基本表达式,用于表示语言关心的最简单个体。
- 组合的方法,通过它们可以从简单的东西出发构造出符合的元素。
- 抽象的方法,通过它们可以为复合对象命名,并将它们当做单元去操作。
在程序设计中,我们需要处理两类要素:过程和数据。数据是一种我们希望去操作的“东西”,而过程就是有关操作这些数据的规则的描述。
抽象过程
数据参数化
如果我们要计算2的平方,你可能会这样写:
|
|
现在我们要表达一个”平方”的概念,则有如下公式:
|
|
我们提出了一个复合过程平方,从只能计算2的平方到任意数的平方,差别在于给了过程一个参数,把数据参数化,可以提高抽象性和适用性,下面用平方去定义平方和的概念;
|
|
实例:比如在canvas上绘制多个矩形:
|
|
函数参数化
由上面可知,函数是对过程的简化,现在我们尝试把一个函数作为一个参数,那么会得到一个高阶函数:
|
|
实例:高阶组件的应用
|
|
抽象数据
现在我们要完成有理数的计算,就要有理数这个概念,下面构造有理数:
|
|
转换成class写法:
|
|
现在我们可以轻松地完成对有理数的操作,从对整数的操作中释放出来,通过构造有理数这个概念,为整数提供了一份抽象,我们得以在有理数之上操作整数。
实例:react Element的构造,封装真实DOM的操作:
|
|