3.1 引言

译者:飞龙

第一章和第二章描述了编程的两个基本元素:数据和函数之间的紧密联系。我们看到了高阶函数如何将函数当做数据操作。我们也看到了数据可以使用消息传递和对象系统绑定行为。我们已经学到了组织大型程序的技巧,例如函数抽象,数据抽象,类的继承,以及泛用函数。这些核心概念构成了坚实的基础,来构建模块化,可维护和可扩展的程序。

这一章专注于编程的第三个基本元素:程序自身。Python 程序只是文本的集合。只有通过解释过程,我们才可以基于文本执行任何有意义的计算。类似 Python 的编程语言很实用,因为我们可以定义解释器,它是一个执行 Python 求值和执行过程的程序。把它看做编程中最基本的概念并不夸张。解释器只是另一个程序,它确定编程语言中表达式的意义。

接受这一概念,需要改变我们自己作为程序员的印象。我们需要将自己看做语言的设计者,而不只是由他人设计的语言用户。

3.1.1 编程语言

实际上,我们可以将许多程序看做一些语言的解释器。例如,上一章的约束传播器拥有自己的原语和组合方式。约束语言是十分专用的:它提供了一种声明式的方式来描述数学关系的特定种类,而不是一种用于描述计算的完全通用的语言。虽然我们已经设计了某种语言,这章的材料会极大扩展我们可解释的语言范围。

编程语言在语法结构、特性和应用领域上差别很大。在通用编程语言中,函数定义和函数调用的结构无处不在。另一方法,存在不包含对象系统、高阶函数或类似while和for语句的控制结构的强大的编程语言。为了展示语言可以有多么不同,我们会引入Logo作为强大并且具有表现力的编程语言的例子,它包含非常少的高级特性。

这一章中,我们会学习解释器的设计,以及在执行程序时,它们所创建的计算过程。为通用语言设计解释器的想法可能令人畏惧。毕竟,解释器是执行任何可能计算的程序,取决于它们的输入。但是,典型的解释器拥有简洁的通用结构:两个可变的递归函数,第一个求解环境中的表达式,第二个在参数上调用函数。

这些函数都是递归的,因为它们互相定义:调用函数需要求出函数体的表达式,而求出表达式可能涉及到调用一个或多个函数。这一章接下来的两节专注于递归函数和数据结构,它们是理解解释器设计的基础。这一章的结尾专注于两个新的编程语言,以及为其实现解释器的任务。

计算机程序的构造和解释 python_SICP Python 描述 第三章 计算机程序的构造和解释 3.1 引言...相关推荐

  1. python第三章课后答案_XX医学院本科各专业《Python》第三章习题与答案-2020年实用精品...

    XX医学院本科各专业<Python>第三章习题与答案 一.填空题 1.python语言提供.和3种数字类型.(整数.浮点数.复数) 2.整数类型有4种进制表示,默认情况采用十进制,二进制数 ...

  2. Python程序设计第三章测验总结

    第三章 顺序和分支程序应用 3.1 猜数字与二分法 1.如果需要提前结束循环,可以使用: A.break B.continue C.else D.if 解:A 2.语句x=input()执行时,如果从 ...

  3. python基础代码事例-python基础第三章

    第三章主要讲解Python的print语句的应用和赋值语句,代码块与缩进,条件语句,循环语句.这几种基础的语句 Python 条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者 ...

  4. 零基础学Python(第三章 基础语法)

    本套学习内容共计[22]个章节,每个章节都会有对应的从0-1的学习过程详细讲解,希望可以给更多的人提供帮助. 开发环境:[Win10] 开发工具:[Visual Studio 2019] 1.第一个 ...

  5. python课本第三章答案idle_第三天任务 (【基于Python编程从入门到实践】第三章 列表 书本及动手试一试)...

    3.1列表什么是列表 列表是由 一系列特定顺序排列的元素组成的 用方括号[]来表示列表 并用逗号来分隔其中的元素 访问列表元素 索引指定访问的列表元素 使用列表中的各个值 3--1 动手试一试 3.1 ...

  6. 数据结构与算法 Python语言描述 第三章 线性表

    1.数据类型 集合E上线性表为E中有穷元素排列的序列 L=(e0,e1,...,en-1) ei∈E n>=0.对于L表元素的关系称为下一个关系,是一个二元组集合{<e0,e1>,. ...

  7. python进阶(第三章1) 字典

    文章目录 3.1 泛映射类型 什么是可散列的数据类型(键的要求) 字典的构造方法 3.2 字典推导(dictcomp) 3.3 常见的映射方法 用setdefault处理找不到的键 3.4 映射的弹性 ...

  8. [转载] python机器学习第三章:使用scikit-learn实现机器学习分类算法

    参考链接: 使用Scikit-Learn在Python中进行embedding/投票分类 训练机器学习算法所涉及的五个主要步骤可以概述如下: 1.特征的选择 2.确定性能评价标准 3.选择分类器及其优 ...

  9. python基础第三章选择结构答案-Python days03-选择结构【if】

    编程基础:程序结构 通常情况下,代码为了模拟生活中的处理问题的方式/步骤,出现程序运行结构 1.顺序结构:按照从上到下的顺序,逐行解释执行代码! 2.选择结构:模拟生活中的选择条件,根据条件的结果来执 ...

最新文章

  1. 高通平台 MIC BIAS 的问题
  2. # Consumed parameters
  3. ida pro 7.5 idapython学习
  4. sdi线缆标准_松下会议摄像机新品AWUN145MC所搭载的12G/SDI到底是什么?
  5. 内存版u-boot制作
  6. outlook工具栏显示_Outlook 2007中的待办事项栏仅显示当前任务
  7. chrome解决跨域(CORS)问题---chrome插件
  8. java 方法 示例_Java语言环境getVariant()方法与示例
  9. 北京理工大学计算机系郭伟,【记忆辉煌2014】品学兼优榜样——郭伟(2012级研究生)...
  10. python循环遍历文件夹_如何用Python实现目录遍历
  11. 《几何与代数导引》习题1.34.1
  12. 产品经理训练营:让正确的事情相继发生 开营直播
  13. S变换在特征提取中的使用
  14. linux 查看gc情况
  15. 如何搭建个人博客(详细图解)
  16. python中py是什么意思_python中__init__.py是干什么的
  17. 异常解决——Failed to introspect Class [com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration]
  18. 产品经理求职方法指南:面试通关
  19. 【树莓派C语言开发】实验02:RGB小灯
  20. 基于RGB-D数据的语义建图

热门文章

  1. Create view failed with ORA-01031:insufficient privileges
  2. 用于检测敏感词的 PHP 扩展
  3. js优化工具:ECMAScript Cruncher
  4. mySQL教程 第7章 存储过程和函数
  5. 多核分布式队列的实现:“偷”与“自私”的运用(1)
  6. Oracle tips
  7. 虚拟机安装spark配置推荐
  8. postgresql 插入 时间戳_数据也玩躲猫猫?PostgreSQL中别人提交的数据,我为什么看不到?...
  9. python整数类型没有取值范围限制_详解Python中6种数据类型
  10. linux下延时1ms用什么函数,Linux下1ms分辨率定时器推荐方式