Sunday, November 29, 2009

Learning Scheme

以後每個星期來看一回SICP好了。看了一回,雖然英文聽得霧煞煞,但還是有很大的收穫。

裡頭的講者說話鏗鏘有力,毫不拖泥帶水,想想上大學以來上過的那些課,大概只有有機化學和演算法兩門課的老師能夠相比了。

---

電腦科學其實一點也不科學,甚至也不怎麼電腦。電腦反而比較像是研究用的工具,而研究的目的,並非獲得告訴你事實的declarative knowledge,而是如何告訴你如何做的imperative knowledge。換言之,電腦科學關注的是做事的方法,還有思考的方法。透過程式語言,我們可以精確地描述出做某件事的方法,然後在電腦上實做出來。

也許再過幾十年,一些新型態的電腦會冒出來,甚至連生物體也能當作電腦來使用,然後每件困難的事都會有已知的最佳解法......到時人類的智慧透過電腦與電腦科學的延伸,達到的境界一定不是現在能想像出來的。人類也許能夠在電腦中創造出一個與現在環境相差無幾的世界來,然後成為該世界的造物主,又或者人類可以創造出心目中理想的世界出來......我們所知的現實世界,與創造出來的虛擬世界,其界線將會變得非常模糊。而當我們腦袋中的程式能移植到機器上和其他生物體上時,人和動物、人和機械的的分野也會變得無法辨識。到時候,世界究竟會變成什麼樣子呢?我們這些"原始的人類",又將如何自處?

扯遠了。

---

至於練習的環境,目前有emacs的*scratch* buffer (press ctrl+x ctrl+e to evaluate),還有Guile,其中前者的語法與影片中的有所出入 (elisp != scheme) (define -> defun),而後者提供interactive mode,還可以寫script,相當方便。

附上影片結尾,用遞迴求平方根範例。

No comments:

Post a Comment