Johnson的SICP读书笔记第一篇:构造过程抽象

本文是Johnson关于SICP的读书笔记,主要探讨了通过过程抽象构建软件的方法。文章介绍了计算过程抽象的概念,强调了Lisp语言在学习程序构造和数据结构中的优势。内容包括Lisp的基本表达式、命名与环境、表达式求值、复合过程和过程应用的代换模型。通过举例说明了如何定义和应用过程,并对比了应用序和正则序的计算顺序。
摘要由CSDN通过智能技术生成

构造过程抽象

Is it possible that software is not like anything else,that it is meant to be discarded: that the whole point is to see it as a soap bubble? -Alan J.Perlis

计算过程抽象(Building Abstractions with Procedures)

Procedure is some kind of magic.When we are designing a procedure,we just ignore the details, and imagine that we have got all the element we need.

Intro

Process是控制一些抽象的数据的过程。Program就是用来控制Process演化的规则。这里SICP讲的很抽象,接着往下看便是。

计算的过程就像变魔术,一个process看不见摸不着,不是由真实的物质组成的但却是真真切切存在的东西。我们写的程序就像是完全由符号组成的精灵的咒语。不过学编程要比学咒语简单多了hhhh。不过从现在开始我们可以想象计算机就是some kind of sorcery ,只要咒语正确,事情就能正确的完成。
回到SICP这门课程要讨论的话题:软件工程,又或者说,怎样构造一个复杂的系统。成为大牛软件工程师要有组织程序的能力,从一个高级的视角观察系统的能力, 知道怎么样构造在意外的情况下也不会导致严重问题的计算机程序(鲁棒性好),并且知道问题发生时如何debug。

Programming in Lisp

1. Why Lisp?

Lisp语言的特性使其成为学习程序构造和数据结构的利器,最重要的是Lisp是描述性语言,他所描述的procedures本身可以作为Lisp的data进行表示和处理,Lisp这种描述计算过程的能力让他成为了优秀的计算机语言。并且Lisp下编程与以往所学过的C family programming language相当不同,用Lisp编程将会相当有意思。

The Elements of Programming

一个好的编程语言不单单意味着能写出让计算机do something的程序,语言更是我们组织思想的框架,因此我们描述一个语言的时候要尤其注意这个语言是如何将简单的想法进行有机的结合而构造出复杂的机制的。所有的优秀的语言都至少完成一下三个机制:

  1. primitive expressions:基本的表达式,代表了整个语言最简单的实体
  2. means of combination,通过什么方法组合简单元素能形成复杂的元素
  3. 抽象方法: 元素怎样作为一个单元被命名和控制
    本章我们只讨论简单的数值型数据而把精力集中在建立procedures的规则上。之后我们再考虑复杂的数据类型。
Expressions in Lisp

所有的表达式都是前缀表达式(波兰表达式),即
( p r o c e d u r e (procedure (procedure v a l 1 val_1 val1 v a l 2 … val_2 \dots val2 v a l n ) val_n) val

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值