Python主題
我認為主要有三個主題敞峭,無處不在,我們看了一遍又一遍的課程蝉仇,但我還沒明確提到他們旋讹,直到現(xiàn)在。這些主題不僅貫穿整個課程轿衔,而且遍及整個計算機科學沉迹。第一個是抽象。抽象就是隱藏細節(jié)害驹。抽象的目的是使它可以讓你有一個東西鞭呕,在許多不同的方式使用,你可以使用它宛官,而不必了解它背后的所有細節(jié)琅拌。在這個課程中我們看到了很多抽象的例子。最重要的是程序抽象摘刑。我們可以寫一個程序进宝,用它來做什么取決于輸入很多不同的東西,當我們使用的程序枷恕,我們不需要知道党晋。
這是一個烤面包機,烤面包機徐块,一個是從計算機非常不同未玻。電腦是萬能機。我們看到許多例子計算機是通用的胡控。能夠定義每一個可能的程序扳剿。我們看到,如果我們有辦法做決定昼激,我們看到了我們庇绽,如果在Python中锡搜;我們看到,如果我們有辦法追蹤的東西瞧掺,在Python中我們可以使用變量和數(shù)據(jù)耕餐;如果我們有辦法繼續(xù)前進,我們第一次看到使用時辟狈,用while循環(huán)肠缔,我們可以做些繼續(xù)只要我們想。但事實上哼转,我們甚至不需要明未。我們可以這樣做的程序,這就是我們看到的遞歸定義在第6單元壹蔓。
一旦我們有了這3樣東西趟妥,我們就可以編寫任何計算機程序。所以我們有了更多的動力與計算機比我們做的烤面包機庶溶。最后一個主題煮纵,我想總結為我們的第三個主要主題是一個我們已經(jīng)在這里提到懂鸵。遞歸定義偏螺。我們在第6單元明確地介紹了這些,但是在那之前你見過很多次匆光。你第一次看到他們實際上是在第1單元套像。我們看到這些規(guī)則,說我們可以通過使用另一個表達式终息,使用加號運算符夺巩,并將其與另一表達式相結合來表達。對于遞歸定義來說周崭,這還不夠柳譬。我們還需要一個基本情況。我們看到了一個基本的情況续镇,就像我們可以有一個表達式美澳,這是一個數(shù)字。所以這里的大的想法是摸航,用非常簡單的規(guī)則制跟,我們可以定義無限多的東西。
概述
這是我們班上的3大主題:抽象性酱虎、普遍性和遞歸定義雨膨。我現(xiàn)在想做的是看看我們在課程中所涵蓋的各種事物,看看它們是如何融入這3個主題的读串。在第1單元中我們引入了變量的概念聊记。我們可以用一個名字來引用一些值撒妈。所以這絕對是一種抽象。它允許我們使用X的名稱來引用不同的東西甥雕。它有助于普遍性踩身,但它本身并沒有真正提供給我們。這并不是一個遞歸定義社露,盡管我們可以用其他變量來定義變量挟阻。在第2單元我們介紹了程序。一個過程絕對是一種抽象峭弟。通過將參數(shù)設置為一個過程附鸽,我們可以編寫一個代碼,該代碼一旦做了許多不同的事情瞒瘸,我們就可以在使用過程中隱藏所有這些細節(jié)坷备。程序也給我們一種普遍性的形式
我們可以使用相同的程序來做許多不同的事情,我們可以定義程序做任何事情情臭,正如我們所看到的省撑。我們還沒有真正理解,但在第2單元俯在,雖然竟秫,但它足以定義每一個可能的計算機程序。當然跷乐,我們使用程序來進行遞歸定義肥败,并且我們已經(jīng)定義了遞歸過程--直到6單元。這給了我們一個定義一個過程的方法愕提,通過把它看作一個較小的版本來解決問題馒稍。第3單元的主要新事物是。這是一種數(shù)據(jù)抽象浅侨。你可以使用一個列表纽谒,不知道怎么的Python實現(xiàn)列表的細節(jié)。它也可以是遞歸定義如输。我們可以擁有具有其他列表元素的列表鼓黔,因此它對于遞歸定義是很有用的。這是普遍的挨决,在這個意義上请祖,我們可以把任何元素,我們想要的列表脖祈。因此肆捕,在第4單元中,我們做的主要事情是通過提供數(shù)據(jù)索引的方式來完成搜索索引盖高。這當然涉及大量的抽象慎陵。我們找到了一種在索引中從網(wǎng)頁中表示數(shù)據(jù)的方法并響應查詢眼虱。我們在第4單元談到的另一件事是網(wǎng)絡如何工作。網(wǎng)絡都是關于抽象的席纽。我們想找到方法捏悬,使我們在思考什么是我們要求作為一個網(wǎng)頁。所有我們真的被隱藏的細節(jié)润梯,如果我們不需要擔心过牙,這是很好的思考,抽象為這是發(fā)送一個網(wǎng)頁請求纺铭。在第5單元中我們介紹的主要新想法是如何衡量成本寇钉。那是一種抽象。我們要衡量的成本舶赔,了解如何成本規(guī)模與輸入的大小扫倡,而不是成本的細節(jié)。它也與普遍性有關竟纳。了解程序的成本取決于有一個相當普遍的計算模型撵溃。
我們想了解一個給定的算法的成本多少,而不依賴于我們的特定計算機如何工作的細節(jié)锥累。然后我們介紹了哈希表缘挑。這是一種數(shù)據(jù)抽象。在這個意義上揩悄,它可以包含任何一種元素作為它的值卖哎。我們沒有遞歸定義它鬼悠。當然删性,我們可以有哈希表包含其他哈希表,我們有字典字典焕窝,所以這也肯定有遞歸定義方面的地方蹬挺。最后,在第6單元中它掂,主要的大思想是遞歸過程巴帮。顯然,這符合我們的遞歸定義的主題虐秋。它還涉及普遍性榕茧。我們展示了如何使代碼永遠運行或繼續(xù)下去,只要它需要客给,而不使用while循環(huán)用押,因此,這給了一些支持的想法靶剑,我們真正需要的是程序蜻拨,如果池充,和一種方法來跟蹤的事情,能夠定義每一個計算機程序缎讼。我們看到收夸,任何程序,我們可以寫作為一個遞歸過程血崭,我們也可以寫while循環(huán)卧惜。所以,如果你已經(jīng)按照我們在這個班上所做的一切夹纫,你真的學到了驚人的金額序苏。當你越來越了解計算,你會看到這3個主題的抽象性捷凄,普遍性和遞歸定義各地忱详。但你已經(jīng)見過他們很多次,只是在本課程的單位跺涤。