在過去的25年裡,程式設計世界發生了巨大的變化,如今,我們有大量的有用的、靈活的資料型別可以使用,但在25年前,你需要花大量的額外時間自己去構造這些型別。
c和pascal語言——當時的標準語言——提供了少量的面向機器的資料型別:數字,指標,陣列,形式上的字串,以及把多種資料組合到一起的結構體或record。重要的是,以這些基本的型別為基石,我們可以構造出更多有趣的型別,例如棧,樹,鏈結表,雜湊表,可變陣列等。
在perl或python,或erlang語言裡,我不需要考慮這些東西。我在使用list、string或array時,根本不關心它們能容納多少元素,或放在記憶體的什麼地方。最常使用的還有字典,同樣,根本不擔心它的容量或雜湊衝突是如何避免的細節內容。
除此外,我仍然需要一些新的資料型別,但它們更多的是現有型別的一種變換,而不是重新構造。任意維度的vector實際就是array。乙個rgb顏色值實際上乙個3元tuple。乙個多項式既可以是乙個tuple,也可以說list。我驚奇於這些array,tuple,list,dictionary等資料型別大大的消除了我在大學課程裡學到的那些基本資料型別上的不便。在實現乙個平衡二叉樹時,你的注意力放在如何讓二叉樹平衡,而不是痛苦的糾結於亂如麻的指標操作。
將已有的小方塊搭建成乙個新的建築,這將會引起比小方塊出現帶來的更大的變化。這些小方塊是如何出現的已經不是人們關心的重點。在很多的程式設計課程和教材中,本來很好的教學中突然出現了一批新詞彙:物件,構造器,抽象基礎類,以及私有方法。於是,下一次作業中,用簡單的三元tuple來表達的rgb顏色值變成了由乙個具有get、set方法,多高構造器的類來代替,更要命的,出現了大量的**。
這就是為什麼有人會不停的呼籲、解釋為什麼物件導向不是個好東西、會使程式設計失去樂趣的原因。但很少奏效。
並不是物件導向不好,或含有什麼缺陷。而是物件導向不是計算機程式設計的基本原子,它們不是人們想象的天生就存在的。不設門檻的任意使用物件導向來解決問題會讓**變得臃腫和過度技術化,然而,很多人還是堅持鍥而不捨的用物件來解決所有問題。這非常糟糕,因為這樣做讓人們辨不清物件導向風格的做法是否真的產生了使問題簡化並易於理解的效果。
本文**
html5中國
**:
計算機基本原理
1.什麼是語言?什麼是python語言?語言是乙個事物與另乙個事物溝通的介質,python語言則是程式設計師與計算機溝通的渠道。2.什麼是程式設計?程式設計就是程式設計師將自己想要讓計算機做的事情用程式語言翻譯出來寫到一系列的檔案中,這一系列的檔案稱之為程式 軟體。3.為何要程式設計?程式設計的目的...
計算機的基本原理
論可計算數在判定問題中的應用 一文中提出了一種理想的計算機器的數學模型 圖靈機,其由一條雙向無限延長儲存帶和乙個可以儲存當前自身的狀態控制器,該控制器並且包含乙個讀寫頭,可以讀 寫 更改儲存帶上每一格的數字 字母,可以根據讀到的字母 數字變換自身的狀態,可以沿著儲存帶一格一格地左移 右移。其規則的確...
物件導向程式設計的基本原則
1 open close principle ocp 開 閉原則。講的是設計要對擴充套件有好的支援,而對修改要嚴格限制。這是最重要也是最為抽象的原則.2 liskov substituition principle lsp 黎克特制代換原則。很嚴格的原則,規則是 子類必須能夠替換基類,否則不應當設計...