• 【SICP】引入与教学大纲


    主题一:黑盒

    计算机中的组件是抽象自由的,在构建大系统时,理想与现实没有太大的不同

    案例:通过求不动点求平方根

    不动点:f 的不动点 Y 满足 f(Y)=Y

    求不动点的具体思路:

    1. 猜测 Y 是 A
    2. 迭代函数 f,直到结果不会变化

    x \sqrt x x ,就是求 f ( y ) = x / y f(y)=x/y f(y)=x/y的不动点

    我们希望将求不动点的过程封装成一个黑盒,然后通过这个盒子来求平方根

    目标:创建求不动点的黑盒

    这个盒子接收的不仅是数,还要能接收函数和过程

    在这个问题里,我们要传给它 f 和 x,然后输出的是一个计算平方根的函数

    所以,这是一个生成函数的函数,一个生成通法的通法

    函数 Function 和过程 Procedure:Pascal-like 语言里,和 function 的区别是有没有 return value,C-like 里面区别不大

    Primitive Objects 基本对象,包含基本过程和基础数据

    关于 Lisp 的语法

    Primitive Procedures

    Primitive Data

    Means of Combination:将基础数据和基本过程结合来构建更复杂的东西

    Procedure Composition

    Construction of Compound Data:将基础数据结合成复合数据

    Means of Abstraction

    Procedure Definition

    Simple Data Abstraction:数据抽象技术,用于处理复合数据

    Capturing Common Patterns

    High-Order Procedures 高阶过程,输入,输出和它本身都是过程

    Data as Procedure 数据和过程的分界线变得模糊了

    主题二:约定接口。按照约定来实现对应的接口,然后组合

    案例:计算(* x (+ a1 a2)),对任意不同类型的 a1 a2

    用中缀表达式是这样的(a1+a2)*a3

    我们希望的是,不管 a1,a2 是向量,或者电信号,声波的什么类型,我们的过程仍要有效

    若 a1,a2 是多项式,最后的结果要是格式化好的多项式

    目标:设计新的语言

    希望任意来一种新类型的对象,都可以直接使用系统,而不会把系统弄乱

    Conventional Interfaces

    Generic operations 通用操作

    Large-Scale Structure and Modularity 大型架构

    对现实世界的大型系统建模来构建大型程序

    Object-Oriented Programming 面向对象编程

    通过相互传递消息联系

    Operations on Aggregates 聚集的操作

    流 streams

    主题三:元语言抽象(Metalinguistic Abstraction)

    控制系统复杂度的方法:构建一门新的语言,强调系统的某个方面而隐藏某些细节

    Y operator Y 运算符:在过程式语言中表达无限
    (YF)=(F(YF))

    了解 Lisp 解释的过程(process of interpretation):EVAL 求值 APPLY 应用的相互轮转 apply-eval loop

    实现在有 Lisp 解释器的芯片(chip)

  • 相关阅读:
    10-千奇百怪的排序算法
    [git] 撤销已经push的提交
    基于Spring Boot的仿豆瓣平台
    Python机器学习预测+回归全家桶,新增TCN,BiTCN,TCN-GRU,BiTCN-BiGRU等组合模型预测...
    就业班 第三阶段(nginx) 2401--4.22 day1 nginx1 http+nginx初识+配置+虚拟主机
    试除法求素数
    如何中断一个正在运行的线程?
    uniapp-引入模块失效的问题
    LeetCode 2359. 找到离给定两个节点最近的节点 基环树
    自然语言处理(NLP)—— 语言学、结构的主要任务
  • 原文地址:https://blog.csdn.net/weixin_43544179/article/details/133375755