结合DrRacket学习《如何设计程序,第二版》
如何设计程序语言
DrRacket用于学习程序语言和设计程序语言,如何设计程序手册:How to Design Programs
如何设计程序,第二版:How to Design Programs, Second Edition
系统程序设计
设计师需遵循一系列严谨且系统的步骤:
首先,要深入剖析问题陈述,这类陈述通常以文字问题的形式呈现;
接着,需抽象地提炼并精准表达问题的本质;
随后,通过具体实例来阐释这一本质;
基于上述分析,制定清晰的大纲与详细的计划;
依据预期成果对实际结果进行评估;
针对未通过的检查与测试,对产品进行相应修改。
在上述每一个步骤中,分析能力、精准度、清晰的描述、明确的重点以及对细节的密切关注都不可或缺。任何经验丰富的企业家、工程师、记者、律师、科学家,或是其他领域的专业人士,都能阐释这些技能在其日常工作中的必要性。而练习设计规划——无论是在纸上勾勒,还是在 DrRacket 中实操——都是获取这些技能的愉悦途径。
同样,优化设计并非仅局限于计算机科学和程序开发领域。建筑师、作曲家、作家等专业人士同样需要践行这一过程。他们从脑海中的灵感出发,以某种形式将其本质呈现出来。他们在纸上反复打磨这些想法,直至产品尽可能贴合其心中的构想。当他们将想法诉诸笔端时,所采用的技能与专注的设计流程颇为相似:绘画、写作或弹奏钢琴,用以构建、描绘人物性格或谱写旋律。而让他们能够在迭代开发过程中保持高效的,是他们已经融会贯通了基本的设计方法,并学会了如何根据当前情境挑选最合适的一种。
已创建中文Lisp方言的Racket语言扩展基础框架,包含主模块、示例程序和包配置。当前需先完成Racket环境安装:
1. 访问 官网下载 安装程序
2. 安装时勾选'Add to PATH'选项
3. 安装完成后在项目目录执行:
raco pkg install --auto chinese-lisp
raco test example.rkt
系统
系统的程序设计
一个程序与人互动,称为用户,以及其他程序,在这种情况下,我们谈到服务器和客户 成分。因此,任何合理完整的程序都由许多构建块组成:有些处理输入,有些会产生输出,而有些则弥合了这两者之间的差距。我们选择使用函数作为基本构建块,因为每个人都会在代数前遇到功能,并且最简单的程序只是这样的功能。关键是要发现需要哪些功能,如何连接它们以及如何从基本成分中构建它们。
在这种情况下,“系统的程序设计”是指两个概念的混合:设计食谱和迭代精致。我们从迈克尔·杰克逊(Michael Jackson)创建COBOL程序的方法以及与Daniel Friedman的递归有关的对话,Robert Harper的类型理论和丹尼尔·杰克逊(Daniel Jackson)的软件设计中的对话中汲取了灵感。设计食谱是作者的创建,在这里,它们可以使用后者。
从问题分析到数据定义
确定必须表示的信息以及在所选编程语言中如何表示。制定数据定义并用示例说明它们。
签名,目的声明,标题
说明所需功能会消耗和产生的数据。为问题提出简洁的答案什么功能计算。定义一个符合签名的存根。
功能示例
通过说明函数目的的示例来工作。
功能模板
将数据定义转换为函数的轮廓。
功能定义
填写功能模板中的空白。利用目的声明和示例。
测试
将示例阐明为测试,并确保该函数通过全部。这样做发现了错误。测试还补充了示例,因为它们可以帮助其他人在需要时阅读和理解定义 - 任何严肃的计划都会出现。