《像计算机科学家一样思考Java》—— 导读

439c3628e1e9a312eade824bb313ff596e171ae7

前言

像计算机科学家一样思考Java
我们从别人的发明中享受了很大益处,我们也应该乐于以我们的任何一种发明为别人服务,并且这种事我们应该自愿地和慷慨地去做。

——本杰明·富兰克林,引用自Edmund S. Morgan所著的《本杰明·富兰克林传》

我为什么写这本书
1999年,当我还在科尔比学院教书的时候,我便开始写这本书了。现在,这已经是第5个版本了。那时,我正使用Java程序设计语言来教授计算机科学导论课程,但始终没有找到一本合适的教材。一方面,这些书的内容太多,让学生去阅读一本800页的技术书籍显然不可能,即便是我硬叫他们去读也不可能,更何况我并不想他们这么做。另外,书中多数内容的针对性都很强,比如Java语言的细节和Java类库等内容,而这些类库在学期结束时很有可能就已经过时了。这样的书籍显然不是我需要的。

另一方面,我发现一开始就讲面向对象编程并不合适。很多在其他方面表现得很好的学生,一旦接触到对象就一头雾水了。于是我开始写这本书,每天写一章,一共写了13天,第14天编辑,然后是复印和装订。上课第一天我便把书分发给学生们,并叫他们每周阅读一章,这样一来,他们阅读的速度比我书写的速度慢了7倍。

背后的哲学
以下是我写这本书的一些想法:

词汇很重要。学生应该有能力去讨论程序并且能够听懂我所讲的话。我尝试着引入尽可能少的术语,并在第一次使用这些术语时精心地给出定义,然后在每章的最后附上术语表。在我的课程中,我会在小测验和考试中包含一些和词汇相关的题目,然后要求学生使用恰当的术语进行回答。
要编写程序。学生应该理解算法,知晓程序设计语言本身,并能够调试程序。太多的书籍都将程序调试内容给忽略掉了。本书最后的附录D讲述程序调试的内容,附录C讨论程序开发内容(可以帮你避免调试)。我建议学生们尽早地阅读这些内容,并且时常回过头来复习。
有些概念需要时间来消化。对于一些较难的内容,本书将反复讲到,这样可以给学生更多的机会去复习和巩固。如果第一次没有学会,可以在后面赶上。
我试图尽量少地使用Java语言来教会学生获得尽量多的编程能力。本书的目的在于教学生如何编写程序和一些计算机科学导论方面的概念,而不是Java语言。因此,我去除了一些Java语言特性方面的内容,比如switch语句便没有必要了,多数类库也不在本书的教授范围之内,特别是一直在变并很可能被替换掉的AWT。
这种最小化的方式有它的优点。除了章后练习,每章大概10页左右。在我的课程中,我要求学生提前阅读要讲的章节,他们都愿意这么做并且理解得很好。这样一来,我们便有时间来讨论一些更抽象的内容、做一些课内练习和学习本书之外的内容。

但是,这种最小化方式也有缺点。从本质上讲,这种方式没有多少有趣的地方。书中的多数例子只是在展现基本的语言特性,并且很多练习都包含了字符串操作和数学相关的知识。我认为其中的一些内容是有趣的,但是还有很多能够激发学生兴趣的内容,比如图形、声音和网络应用只是一带而过。

问题在于,很多令人兴奋的内容都包含大量的细节,而其中的概念并不多。从教学上讲,这样浪费了太多的努力但又达不到教学目的。因此,在取悦学生和富含知识之间便出现了一个折中。我让老师们自己去解决这种平衡。作为帮助,本书的附录中包含图形、键盘输入和文件输入等内容。

面向对象编程
有些书一上来便介绍对象,另一些书先通过面向过程的编程方式进行引导,再逐渐讲授面向对象编程方式。本书采用后一种方式。

Java中许多面向对象特性都是由先前语言出现的问题来驱动的,并且它的实现也受到了这些语言发展历史的影响。在学生不了解他们需要解决的问题的情况下,有些特性是很难解释的。推迟讲面向对象编程并不是我的意图所在,相反,我会尽快地涉及到这些内容,只是我每次只讲一个概念,并且尽可能清晰,以使学生可以相对独立地练习每一个知识点,然后再加入后续的概念。但是我也承认,达到这样的目的确实需要时间。

目录

第1章 程序之道
1.1 什么是编程语言
1.2 什么是程序
1.3 什么是调试
1.4 形式语言和自然语言
1.5 第一个程序
1.6 术语表
1.7 练习
第2章 变量和类型
第3章 无返回值方法
第4章 条件语句和递归
第5章 GridWorld(第一部分)
第6章 有返回值方法
第7章 迭代和循环
第8章 字符串
第9章 可变对象
第10章 GridWorld(第二部分)
第11章 创建对象
第12章 数组
第13章 对象数组
第14章 数组对象
第15章 面向对象编程
第16章 GridWorld(第三部分)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
注:上次误将加密文档上传,抱歉!这次已解密了。 《像计算机科学家一样思考python》按照培养读者像计算机科学家一样的思维方式的思路来教授python语言编程。全书贯穿的主体是如何思考、设计、开发的方法,而具体的编程语言,只是提供一个具体场景方便介绍的媒介。《像计算机科学家一样思考python》并不是一本介绍语言的书,而是一本介绍编程思想的书。和其他编程设计语言书籍不同,它不拘泥于语言细节,而是尝试从初学者的角度出发,用生动的示例和丰富的练习来引导读者渐入佳境。 作者从最基本的编程概念开始讲起,包括语言的语法和语义,而且每个编程概念都有清晰的定义,引领读者循序渐进地学习变量、表达式、语句、函数和数据结构。此外,书中还探讨了如何处理文件和数据库,如何理解对象、方法和面向对象编程,如何使用调试技巧来修正语法、运行时和语义错误。每一章都配有术语表和练习题,方便读者巩固所学的知识和技巧。此外,每一章都抽出一节来讲解如何调试程序。作者针对每章中所专注的语言特性,或者相关的开发问题,总结了调试的方方面面。可以说这是一种非常有益的创新,让初学编程的读者少走很多弯路。 全书共19章和3个附录,详细介绍了python语言编程的方方面面。《像计算机科学...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值