1. 程式人生 > >MIT 電腦科學和Python 程式設計導論

MIT 電腦科學和Python 程式設計導論

       其實上一本書《笨辦法學python》嚴格意義上來說,算不上是入門書,因為它主要目的是讓你去找到敲程式碼的感覺,基本不涉及計算機的內容。說到真正的入門,MIT的《電腦科學和python程式設計導論》這門課程是個非常好的選擇。對於想要入門python的人來說,這門課程不會讓你失望,但是它能給你的不止於此,其實這門課程的核心目的,是以python這門語言為媒介,向你介紹電腦科學領域的重要基礎內容。有了這個認識其實很重要,因為它決定了你學習這門課的方式和最終效果。自己當時很愚笨,只是單純把它理解為了掌握pyhon這門語言的課程,對於課程中的有些內容並未給予足夠的重視,即便如此,自己也收穫了比預想多很多的東西。只是現在回過頭裡再看這門課程的時候才發現,錯過了很多好東西。

       說了這麼多,這門課究竟講了什麼呢?  課程的一開始就丟擲了一個問題——what does a computer do ?  隨後作者介紹了計算機所具有的兩個根本特性——超快的計算速度和超大的記憶體。計算機擁有的計算速度,可以達到每秒鐘十億次,與此同時,相較與需要儲存的內容而言,計算機具有近乎無限的儲存空間。正是因為在這兩個驚人特性的組合,便賦予計算機強大的功能。當我在學習了後續的課程後,發現很多的內容都是圍繞著這兩點展開的。演算法和資料結構就是一個很好的例子。雖然我們擁有超快的計算速度,但是面對異常複雜的問題時,單純蠻力式的進行運算,是不明智的。這時候演算法就派上了用場,通過一些巧妙的的演算法,我們可以把一個問題簡單化,這樣運算自然簡單了許多。同樣的道理,面對複雜的問題,需要儲存的內容和資料是巨大的,如何通過巧妙的儲存以利於資料的讀寫,這就是資料結構的內容了。這也是為什麼我們一般會把演算法和資料結構放在一起講授,因為它們本來就是一個整體。

這門課程的核心,是向大家傳遞一個概念——計算思維(computational thinking)。這其實是很龐大的一塊內容,自己可能現在還不能完全駕馭,不過也嘗試著說說自己的理解。過去當我們面對一個問題的時候,可以通過很多的角度來思考和解決,比如人性的角度、歷史的角度、經濟的角度等等,現在隨著計算機效能的提升和使用的普及,它可以看做是人腦的一個延伸,那麼利用計算機去考慮和解決問題就成了另一個我們可以使用的有效手段。計算思維就是在這種背景下產生的一個概念。其實計算思維這個玩意我們日常中一直在用,比如說,當我們面對選擇,權衡利弊的時候,其實就是計算思維的體現。但是人腦的運轉速度和記憶力是有限的,當計算機成為我們人腦的延伸時,具備的超快的計算速度和超大的儲存空間,就讓原先我們自己不可能解決的問題變成了可能。那麼在這種情景下,對於一個現代人來說,掌握計算思維就非常變的非常重要了。計算思維的過程,概括起來主要有四個內容——抽象、可計算、執行、優化。  具體說來,面對一個問題的時候,先利用抽象能力,找到問題的本質,隨後將其轉換為可計算的內容來執行得到結果,但是到這一步並未結束,在得到結果後我們還有對其進行優化,以得到更好的結果,而且這個優化過程是往復多次的。

       通過這門課,我們可以逐漸的去理解並掌握計算思維的本質,但這僅僅是一個入門,還需要我們後續不斷的去學習和實踐。作者也為我們開設了一門後續課程——《計算思維和科學導論》,Peter Norvig 開設的《design of computer program》也是一門強調計算思維的實踐課程,很值得一看。