北大内部教材python版算法与数据结构PDF电子书免费下载

资料大小: 10.87 MB

所需积分: 2

下载次数:

用户评论: 0条评论,查看

上传日期: 2019-07-08

上 传 者: qin_天他上传的所有资料

资料介绍

标签:python(1017)数据结构(176)存储器(2178)

  自从第一台需要人们用线缆和交换机向其传达指令的电子计算机问世以来,编程已发生了巨大改变。计算机科技的革新给计算机科学家提供了越来越多的工具和平台,方便他们在社会的各个领域一显身手。高速处理器、高速网络以及大容量存储器等在发展的同时也带来了难度螺旋式上升的种种问题,而计算机科学家们必须解决它们。发展固然很快,众多基本原则却能经久不变。计算机科学本质上是利用计算机来解决问题。无疑你已经花费了大量时间学习解决问题所需要的基本能力,我们也相信你对自己理解问题并提出解决方案的能力已很有自信。你应当已经感受到了编写程序代码常常是具有相当难度的。然而,往往正是大型问题的繁杂,加上其解决方案与之相当的复杂性掩盖了解决问题的过程中涉及到的基本思路。本章接下来将主要强调两个重要的方面。第一,回顾计算机科学以及算法与数据结构的基本框架,并特别强调我们学习这些内容的原因以及理解这些内容如何帮助我们更好地解决问题。第二,了解python语言。尽管无法提供详尽透彻的指导,本章将给出具体案例并对其余章节中将会涉及到的基本概念和思想做出解释。

  通常来说计算机科学难以准确地被定义。这或许是因为人们对“计算机”这个词的滥用。你也许清楚,计算机科学并不仅仅是对计算机进行研究。虽然计算机是支撑这门学科的重要工具,但它也仅仅是工具而已。计算机科学是对问题本身、问题的解决、以及问题求解过程中得出的解决方案的研究。面对一个特定问题,计算机科学家的目标是得出一个算法(algorithm),写出一组解决该问题可能出现的任何情况的步步为营的指令。算法通过有限过程解决问题。算法是解决方案。计算机科学可以被看作是对算法的研究。然而,我们必须小心翼翼地考虑到有一些问题是没有解决方案的。虽然证明这个说法超出了本课本的范围,有些问题无法解决这件事对研究计算机科学的人来说很重要。通过涵盖这两类问题,我们可以完整地定义计算机科学,计算机科学研究的是问题的解决方案以及没有解决方案的问题。描述问题及其解决方案时,“可计算”(computable)这个词是很常见的。当存在解决某个问题的算法时,我们说该问题是可计算的。另一种对计算机科学的定义是:计算机科学研究的是问题是否可计算,算法是否存在。在大多数情况下,你将会注意到“计算机”这个词完全没有出现。我们认为问题的解决方案是独立于机器本身的。计算机科学,就如它关注问题求解过程一样,也研究抽象(abstraction)。抽象使我们能以一种区分所谓的逻辑对象和物质对象的方式来看待问题及其解决方案。在常见的案例中这种基本想法对我们来说是很熟悉的。考虑一下你今天去学校或工作时乘坐的交通工具。作为一个司机,一个汽车的使用者,为了使汽车达到预期目的,你和汽车之间有固定的交互方式。你坐进车里,插入钥匙,发动汽车,换挡,刹车,加速,行驶。用抽象的角度来看,我们可以说,你看到的是汽车逻辑性的一面。你使用的是汽车设计者提供的将你从一个位置转移到另一个位置的功能。这些功能有时也被称为界面(interface)。另一方面,汽车修理工有非常不同的观点。他不仅知道如何驾驶汽车,而且知道运行我们认为理所当然的功能的所有必要的细节。他需要了解引擎如何工作,如何传递档位变化,如何控制温度等等。这被认为是物质的角度,发生在引擎盖下的细节。我们使用计算机的时候也是一样的。大多数人用计算机写文档,收发邮件,上网,播放音乐,储存照片以及玩游戏,但他们对于这些程序具体是如何运行的一无所知。他们从逻辑上或是用户的角度看待计算机。计算机科学家、程序员、技术员以及系统管理员又持有一种对于计算机截然不同的看法。他们必须知道操作系统具体是如何工作的,网络协议是如何配置的以及如何写各种代码来控制这些功能。他们必须能够控制那些用户认为是理所应当的底层的详细内容。

用户评论

查看全部 条评论

发表评论请先 , 还没有账号?免费注册

发表评论

用户评论
技术交流、我要发言! 发表评论可获取积分! 请遵守相关规定。
上传电子资料