Python主题
我认为主要有三个主题,无处不在,我们看了一遍又一遍的课程,但我还没明确提到他们,直到现在。这些主题不仅贯穿整个课程,而且遍及整个计算机科学。第一个是抽象。抽象就是隐藏细节。抽象的目的是使它可以让你有一个东西,在许多不同的方式使用,你可以使用它,而不必了解它背后的所有细节。在这个课程中我们看到了很多抽象的例子。最重要的是程序抽象。我们可以写一个程序,用它来做什么取决于输入很多不同的东西,当我们使用的程序,我们不需要知道。
这是一个烤面包机,烤面包机,一个是从计算机非常不同。电脑是万能机。我们看到许多例子计算机是通用的。能够定义每一个可能的程序。我们看到,如果我们有办法做决定,我们看到了我们,如果在Python中;我们看到,如果我们有办法追踪的东西,在Python中我们可以使用变量和数据;如果我们有办法继续前进,我们第一次看到使用时,用while循环,我们可以做些继续只要我们想。但事实上,我们甚至不需要。我们可以这样做的程序,这就是我们看到的递归定义在第6单元。
一旦我们有了这3样东西,我们就可以编写任何计算机程序。所以我们有了更多的动力与计算机比我们做的烤面包机。最后一个主题,我想总结为我们的第三个主要主题是一个我们已经在这里提到。递归定义。我们在第6单元明确地介绍了这些,但是在那之前你见过很多次。你第一次看到他们实际上是在第1单元。我们看到这些规则,说我们可以通过使用另一个表达式,使用加号运算符,并将其与另一表达式相结合来表达。对于递归定义来说,这还不够。我们还需要一个基本情况。我们看到了一个基本的情况,就像我们可以有一个表达式,这是一个数字。所以这里的大的想法是,用非常简单的规则,我们可以定义无限多的东西。
概述
这是我们班上的3大主题:抽象性、普遍性和递归定义。我现在想做的是看看我们在课程中所涵盖的各种事物,看看它们是如何融入这3个主题的。在第1单元中我们引入了变量的概念。我们可以用一个名字来引用一些值。所以这绝对是一种抽象。它允许我们使用X的名称来引用不同的东西。它有助于普遍性,但它本身并没有真正提供给我们。这并不是一个递归定义,尽管我们可以用其他变量来定义变量。在第2单元我们介绍了程序。一个过程绝对是一种抽象。通过将参数设置为一个过程,我们可以编写一个代码,该代码一旦做了许多不同的事情,我们就可以在使用过程中隐藏所有这些细节。程序也给我们一种普遍性的形式
我们可以使用相同的程序来做许多不同的事情,我们可以定义程序做任何事情,正如我们所看到的。我们还没有真正理解,但在第2单元,虽然,但它足以定义每一个可能的计算机程序。当然,我们使用程序来进行递归定义,并且我们已经定义了递归过程--直到6单元。这给了我们一个定义一个过程的方法,通过把它看作一个较小的版本来解决问题。第3单元的主要新事物是。这是一种数据抽象。你可以使用一个列表,不知道怎么的Python实现列表的细节。它也可以是递归定义。我们可以拥有具有其他列表元素的列表,因此它对于递归定义是很有用的。这是普遍的,在这个意义上,我们可以把任何元素,我们想要的列表。因此,在第4单元中,我们做的主要事情是通过提供数据索引的方式来完成搜索索引。这当然涉及大量的抽象。我们找到了一种在索引中从网页中表示数据的方法并响应查询。我们在第4单元谈到的另一件事是网络如何工作。网络都是关于抽象的。我们想找到方法,使我们在思考什么是我们要求作为一个网页。所有我们真的被隐藏的细节,如果我们不需要担心,这是很好的思考,抽象为这是发送一个网页请求。在第5单元中我们介绍的主要新想法是如何衡量成本。那是一种抽象。我们要衡量的成本,了解如何成本规模与输入的大小,而不是成本的细节。它也与普遍性有关。了解程序的成本取决于有一个相当普遍的计算模型。
我们想了解一个给定的算法的成本多少,而不依赖于我们的特定计算机如何工作的细节。然后我们介绍了哈希表。这是一种数据抽象。在这个意义上,它可以包含任何一种元素作为它的值。我们没有递归定义它。当然,我们可以有哈希表包含其他哈希表,我们有字典字典,所以这也肯定有递归定义方面的地方。最后,在第6单元中,主要的大思想是递归过程。显然,这符合我们的递归定义的主题。它还涉及普遍性。我们展示了如何使代码永远运行或继续下去,只要它需要,而不使用while循环,因此,这给了一些支持的想法,我们真正需要的是程序,如果,和一种方法来跟踪的事情,能够定义每一个计算机程序。我们看到,任何程序,我们可以写作为一个递归过程,我们也可以写while循环。所以,如果你已经按照我们在这个班上所做的一切,你真的学到了惊人的金额。当你越来越了解计算,你会看到这3个主题的抽象性,普遍性和递归定义各地。但你已经见过他们很多次,只是在本课程的单位。