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

结合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.dtcms.com/a/89496.html

相关文章:

  • 数据库原理及应用mysql版陈业斌实验二
  • 小迪安全-php模型,mvc架构,动态调试未授权,脆弱及安全,为引用。逻辑错误
  • Qt中QApplication::processEvents()详细讲解
  • 定长内存池设计核心:如何用固定块内存实现零碎片管理
  • Python备赛笔记2
  • 5分钟学会interface(纯标题党)
  • 在GitHub中上传第一个文件
  • 如何优化SQL查询以提高数据库性能?
  • 科技快讯 | 谷歌正在推出Gemini实时人工智能视频功能;意大利出版全球首份“AI报纸”
  • 【C++】 —— 笔试刷题day_8
  • (十八)面向对象的三大特性:封装 、继承、多态
  • 速卖通API数据清洗实战:从原始JSON到结构化商品数据库
  • 收货地址区域
  • 基于python+django的商城网站-电子商城管理系统源码+运行
  • 详解vector容器
  • AI Agent开发与应用
  • MTK Android12-Android13 设置系统默认语言
  • 服务器修改内存后Oracle无法正常启动
  • Contactile三轴触觉传感器:多维力感赋能机器人抓取
  • PCL 点云多平面探测
  • 一个纯.Net开发的JavaScript执行引擎
  • uniapp再次封装uni-nav-bar导航栏组件
  • 智能打气泵方案:无线充气泵的适用场景有哪些?
  • 备战蓝桥day-7(递归回溯)
  • PP-PLL:基于概率传播的部分标签学习
  • Python第六章13:集合(set)的定义和操作
  • 【euclid】21 3D包围盒模块(box3d.rs)
  • 【Python Cookbook】字符串和文本(二)
  • 【鸿蒙开发】第五十一章 Camera Kit(相机服务)
  • pagehelper 分页插件使用说明