当前位置: 首页 > article >正文

结合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)的软件设计中的对话中汲取了灵感。设计食谱是作者的创建,在这里,它们可以使用后者。

  1. 从问题分析到数据定义

    确定必须表示的信息以及在所选编程语言中如何表示。制定数据定义并用示例说明它们。

  2. 签名,目的声明,标题

    说明所需功能会消耗和产生的数据。为问题提出简洁的答案什么功能计算。定义一个符合签名的存根。

  3. 功能示例

    通过说明函数目的的示例来工作。

  4. 功能模板

    将数据定义转换为函数的轮廓。

  5. 功能定义

    填写功能模板中的空白。利用目的声明和示例。

  6. 测试

    将示例阐明​​为测试,并确保该函数通过全部。这样做发现了错误。测试还补充了示例,因为它们可以帮助其他人在需要时阅读和理解定义 - 任何严肃的计划都会出现。


http://www.kler.cn/a/601058.html

相关文章:

  • 基于Python的机器学习入门指南
  • Blender配置渲染设置并输出动画
  • 在转换不同格式时,保持正确的宽高比可以避免画面变形
  • Python FastApi(5):请求体、查询参数和字符串校验
  • k8s存储介绍(四)hostpath
  • 智能汽车图像及视频处理方案,支持视频实时拍摄特效能力
  • uv - pip 接口
  • 【多媒体交互】Unity+普通摄像头实现UI事件分析
  • VUE项目初始化
  • MATLAB 绘制空间分布图 方法总结
  • 【MySQL】mysql日志文件
  • 【QT】Qlcdnumber的使用
  • openai-agents-python中 agents_as_tools.py 示例
  • vue-如何将组件内容作为图片生成-html2canvas
  • Android ADB工具使用教程(从安装到使用)
  • 代理记账的第三个十年
  • Matlab多种算法解决未来杯B的多分类问题
  • 处理json,将接口返回的数据转成list<T>,和几个时间处理方法的工具类
  • 【杂记四】刚体运动 +SE(3)
  • Linux 安装 Redis