程序设计技术和方法

上传人:xzh****18 文档编号:46506495 上传时间:2018-06-26 格式:PDF 页数:6 大小:171.46KB
返回 下载 相关 举报
程序设计技术和方法_第1页
第1页 / 共6页
程序设计技术和方法_第2页
第2页 / 共6页
程序设计技术和方法_第3页
第3页 / 共6页
程序设计技术和方法_第4页
第4页 / 共6页
程序设计技术和方法_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《程序设计技术和方法》由会员分享,可在线阅读,更多相关《程序设计技术和方法(6页珍藏版)》请在金锄头文库上搜索。

1、程序设计技术和方法裘宗燕,2012-2013 - (1)裘宗燕北京大学数学学院信息科学系裘宗燕北京大学数学学院信息科学系2012.9-2013.1程序设计技术和方法程序设计技术和方法 structure and Interpretation of Computer Programsstructure and Interpretation of Computer Programs程序设计技术和方法裘宗燕,2012-2013 - (2)0. 课程简介0. 课程简介课程教材:课程教材:H. Abelson, G. J. Sussman, J. Sussman, Structure and Inter

2、pretation of Computer Programs (SICP), MIT计算机程序的构造和解释,机械工业出版社,计算机程序的构造和解释,机械工业出版社,2003程序设计技术和方法裘宗燕,2012-2013 - (3)课程安排:课程安排:?上课:星期三晚上课:星期三晚 6 点点 40 到到 9 点点 30?上机(具体事项另行安排):上机(具体事项另行安排):?理科楼理科楼 1235?集中上机和辅导时间:星期一晚集中上机和辅导时间:星期一晚 7 点到点到 9 点,第点,第3周开始周开始?每人每人 50 小时上机时间,可在指定时间去,也可自己安排时间小时上机时间,可在指定时间去,也可自己

3、安排时间?课程辅导课程辅导?理科一号楼理科一号楼 1480 (我的办公室)(我的办公室)?星期一下午星期一下午 4 点到点到 6 点。视情况和需要调整点。视情况和需要调整?辅导老师:陈璐瑶,胡婷婷辅导老师:陈璐瑶,胡婷婷?作业交给辅导老师(电子邮件)作业交给辅导老师(电子邮件)程序设计技术和方法裘宗燕,2012-2013 - (4)课程相关材料课程相关材料?主页:主页: 全文和相关信息,全文和相关信息,Scheme 手册(手册(R5 有中文翻译)等有中文翻译)等?发布课程通知,作业和上课幻灯片等发布课程通知,作业和上课幻灯片等?讨论用教学网讨论用教学网 () 本课程讨论板:本课程讨论板:?欢迎

4、积极参加,提出问题和看法欢迎积极参加,提出问题和看法?请只讨论与本课程有关的问题请只讨论与本课程有关的问题?发贴请尽可能言之有物发贴请尽可能言之有物?给出意义明确的标题,能清晰说明要讨论的问题及自己的看法给出意义明确的标题,能清晰说明要讨论的问题及自己的看法?一些同学在教学网的帐号下没有邮件地址一些同学在教学网的帐号下没有邮件地址?请登录并加入邮件地址,以便联系请登录并加入邮件地址,以便联系程序设计技术和方法裘宗燕,2012-2013 - (5)软件软件?本课程上机用本课程上机用 Scheme 语言和语言和 MIT Scheme 系统系统?机房安装机房安装 MIT Scheme。基本系统是个交

5、互式解释环境,带有一个类似。基本系统是个交互式解释环境,带有一个类似 emacs 的编辑环境,可直接在该编辑环境里使用的编辑环境,可直接在该编辑环境里使用 Scheme,也可以用 其他编辑器编程后装入系统,也可以用 其他编辑器编程后装入系统?主页上有简单使用说明,系统有联机手册主页上有简单使用说明,系统有联机手册?安排时间介绍安排时间介绍MIT Scheme 使用,欢迎参加(第一次上机)使用,欢迎参加(第一次上机)?系统安装系统安装?安装文件可下载安装文件可下载?网页链接有文档网页链接有文档/资源等相关信息资源等相关信息?另一使用较广的另一使用较广的 Racket(rachet-lang.or

6、g,原为,原为 PLT Scheme)?标准标准 Windows 界面常见形式的编辑器和执行环境、调试支持等界面常见形式的编辑器和执行环境、调试支持等?有一点兼容性问题,后面章节的有些程序需要修改。也可以解决, 但会有点小麻烦有一点兼容性问题,后面章节的有些程序需要修改。也可以解决, 但会有点小麻烦程序设计技术和方法裘宗燕,2012-2013 - (6)情况和想法情况和想法?信息学院希望有一门用信息学院希望有一门用 SICP 开的选修课程,帮助同学进一步加深对程 序语言和程序设计中各种问题的认识开的选修课程,帮助同学进一步加深对程 序语言和程序设计中各种问题的认识?数学学院原有课程数学学院原有

7、课程“程序设计技术和方法程序设计技术和方法”两方面的想法和需要结合,形成了这个供两学院同学选修的课程已经开过四次想法:帮助同学们从更多角度观察和理解程序和程序设计中的问题:两方面的想法和需要结合,形成了这个供两学院同学选修的课程已经开过四次想法:帮助同学们从更多角度观察和理解程序和程序设计中的问题:?函数式程序设计函数式程序设计?各种程序组织方式,分解和控制程序复杂性的技术各种程序组织方式,分解和控制程序复杂性的技术?丰富多彩的编程模式丰富多彩的编程模式?对一些基础问题的理解对一些基础问题的理解?上述各方面与常规的(命令式的,典型的如上述各方面与常规的(命令式的,典型的如c/c+,等等)程序设

8、计之 间的关系,给我们的启示等,等等)程序设计之 间的关系,给我们的启示等程序设计技术和方法裘宗燕,2012-2013 - (7)说明式和过程式知识说明式和过程式知识?说明式知识(说明式知识(Declarative Knowledge)?有关事实和情况的说明有关事实和情况的说明?实例:饭店的菜肴介绍,包括配料成分、色香味、照片等实例:饭店的菜肴介绍,包括配料成分、色香味、照片等?过程式知识(过程式知识(Procedural Knowledge)?有关完成某件工作的一系列步骤(操作)的描述有关完成某件工作的一系列步骤(操作)的描述?实例:菜肴的烹制方法和过程,各种相关操作及其执行顺序实例:菜肴的

9、烹制方法和过程,各种相关操作及其执行顺序?随着计算机科学技术的发展,过程式知识变得越来越重要随着计算机科学技术的发展,过程式知识变得越来越重要?算法:过程式知识的精确化,与适当信息表示形式结合解决问题算法:过程式知识的精确化,与适当信息表示形式结合解决问题?二进制编码的普适性,与过程式知识结合,借助于电子计算机作为 基本工具,形成了一套具有普适性的全新的问题解决模式二进制编码的普适性,与过程式知识结合,借助于电子计算机作为 基本工具,形成了一套具有普适性的全新的问题解决模式?软件开发工作是在说明式与过程式知识的结合点上软件开发工作是在说明式与过程式知识的结合点上从说明式知识出发,开发过程式知识

10、从说明式知识出发,开发过程式知识程序设计技术和方法裘宗燕,2012-2013 - (8)?程序设计的主流是命令式程序设计的主流是命令式 (imperative) 程序设计,计算基于一组基本 操作,在一个环境里进行。操作效果是改变环境的状态,体现在所创建 和修改的状态中:初始状态中间状态结束状态程序设计,计算基于一组基本 操作,在一个环境里进行。操作效果是改变环境的状态,体现在所创建 和修改的状态中:初始状态中间状态结束状态命令式和函数式计算命令式和函数式计算?函数式函数式 (functional) 程序设计把计算看成数据的变换,程序的行为就是 对数据的一系列变换:程序设计把计算看成数据的变换,

11、程序的行为就是 对数据的一系列变换:数 据 初始数据 数据 数据最终结果 可称为程序的命令式观点和函数式观点可称为程序的命令式观点和函数式观点程序设计技术和方法裘宗燕,2012-2013 - (9)函数式和命令式程序设计函数式和命令式程序设计?(常规)程序以命令方式描述计算:层次较低,接近(因 此容易有效利用)实际硬件(计算机),可能较高效。编 程需关注更多细节,非常复杂,很容易出错(常规)程序以命令方式描述计算:层次较低,接近(因 此容易有效利用)实际硬件(计算机),可能较高效。编 程需关注更多细节,非常复杂,很容易出错?函数式程序设计层次较高,更抽象,屏蔽计算的更多实现 细节,程序可能更清

12、晰。但与实际硬件距离较远,需要复 杂的运行时支持,可能效率较低函数式程序设计层次较高,更抽象,屏蔽计算的更多实现 细节,程序可能更清晰。但与实际硬件距离较远,需要复 杂的运行时支持,可能效率较低?在编程中命令式思维和函数式思维都有价值。在不同抽象 层次,需要灵活使用对程序的命令式思维和函数式思维在编程中命令式思维和函数式思维都有价值。在不同抽象 层次,需要灵活使用对程序的命令式思维和函数式思维?程序工作常可分解为一些阶段程序工作常可分解为一些阶段?每个阶段是对整体数据空间的某种变换(函数式的)每个阶段是对整体数据空间的某种变换(函数式的)?而每个变换又是通过复杂的状态操作实现(命令式的)而每个

13、变换又是通过复杂的状态操作实现(命令式的)程序设计技术和方法裘宗燕,2012-2013 - (10)Scheme?本课程中使用的本课程中使用的 Scheme 是一种是一种 Lisp 方言方言?Lisp 是函数式语言之祖。许多新语言从中汲取营养,了解是函数式语言之祖。许多新语言从中汲取营养,了解 Scheme 有利于理解今天和明天的编程语言有利于理解今天和明天的编程语言?Scheme 可以很好表现程序和程序设计中的许多问题可以很好表现程序和程序设计中的许多问题?Scheme 能自然地支持许多威力强大的编程技术,许多技 术有一般性,可能在其他语言中使用或模拟能自然地支持许多威力强大的编程技术,许多

14、技 术有一般性,可能在其他语言中使用或模拟?Scheme 不是纯函数式语言,为效率和对计算的细节控制 而提供了命令式特征(状态操作)。学习它有助于理解另 一种编程思维,及在两种思维和编程方式间权衡和转换不是纯函数式语言,为效率和对计算的细节控制 而提供了命令式特征(状态操作)。学习它有助于理解另 一种编程思维,及在两种思维和编程方式间权衡和转换?在这里学到的技术可能用到其他地方。课程中将讨论一些 技术在常规语言和编程中的应用可能性,相互关系在这里学到的技术可能用到其他地方。课程中将讨论一些 技术在常规语言和编程中的应用可能性,相互关系程序设计技术和方法裘宗燕,2012-2013 - (11)函

15、数式语言和常规程序设计函数式语言和常规程序设计?主流语言已经并将继续从函数式语言中汲取大量营养主流语言已经并将继续从函数式语言中汲取大量营养?基于运行栈的实现技术,递归基于运行栈的实现技术,递归?动态存储分配,废料回收(垃圾回收)动态存储分配,废料回收(垃圾回收)?表处理的问题和技术(表处理的问题和技术(Lisp 的核心数据结构)的核心数据结构)?动态操作指派(方法的动态约束,面向对象语言的基础)动态操作指派(方法的动态约束,面向对象语言的基础)?虚拟机、字节码、动态编译(虚拟机、字节码、动态编译(Java, C# 等)等)?lambda 表达式,表达式, ?学习函数式程序设计(包括学习函数式程序设计(包括 Lisp 类语言程序设计),有助 于掌握如何在较高抽象层次上思考计算问题和程序问题类语言程序设计),有助 于掌握如何在较高抽象层次上思考计算问题和程序问题?丰富看程序和程序设计的角度和观点,可能把程序设计中 的一些基本问题看得更清楚丰富看程序和程序设计的角度和观点,可能把程序设计中 的一些基本问题看得更清楚

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号