編程範式思惟

程序設計有一個範式問題:就是組織程序的基本思想。它反映了程序設計者對程序的一個基本的哲學觀,也就是說,他認爲程序的本質是什麼,他認爲一個大的程序是由什麼組成的。網絡

範式目前有三種:過程範式、函數範式、對象範式。函數


  1. 過程範式認爲,程序是由一個個過程通過順序、選擇和循環的結構組合而成。反映在現實世界,過程範式體現了勞動分工以前「大包大攬」的工做特色—能勝任全部事情,擁有全部的資源,高度集中在這個「人」身上,只不過具體的事情得一步步地有順序來處理。
  2. 對象範式反映了勞動分工以後的團隊協做的工做特色–每一個人各司其職,各有所長,各自擁有私有資源,工件和信息彼此傳遞,最後完成工做。所以,對象範式也就造成了本身對程序的見解—程序是由一組對象組成,這些對象各有所能,經過消息傳遞實現協做。

後者較前者具備3個優點:設計

  1. 因爲實現了邏輯分工,下降了大規模程序的開發難度。
  2. 靈活性更好–若干對象在一塊兒,能夠靈活組合,能夠以不一樣的方式協做,完成不一樣的任務,也能夠靈活的替換和升級。
  3. 對象範式更加適合圖形化、網絡化、消息驅動的現代計算環境。

對象範式的兩大基本觀念:對象

  • 程序是由對象組成的。
  • 對象之間互相發送消息,協做完成任務。

爲了方便對象的構造,引入了類、繼承等概念。 smalltalk構造了更靈活和純粹的消息發送機制。繼承

它實現了一個與目標對象無關的消息發機制,無論那個對象是誰,也無論他是否是能正確的處理一個消息,做爲發送消息的對象來講,能夠毫無顧忌的抓住一個對象就發送消息過去。接到消息的對象,要嘗試理解這個消息,並最後調用本身的處理過程來處理消息。若是這個消息能被處理,那個對象天然會處理,若是不能處理,Smalltalk系統會向消息的發送者回傳一個doesNotUnderstand消息,予以通知。對象不用關心消息是如何傳遞格給一個對象的,傳遞過程被分離出來(而不是向Simula那樣明確地以成員函數調用的方式實現),能夠是在內存中複製,也能夠是進程間通信。到了Smalktalk-80,消息傳遞甚至能夠跨越網絡。進程

不妨把源自Smalktalk的消息機制稱爲「動態消息機制」。內存

把源自Simula的消息機制稱爲「靜態消息機制」。資源

對於消息轉發機制的不一樣選擇,主要是由於用途。Simula用於仿真程序開發,smalltalk用於圖形界面環境構建。開發

到了1980年代,C出現了。Bjarne Stroustrup在博士期間深刻研究Simula,因而在C語言基礎上,幾乎把Simula思想照搬過來,造成了最初的C。 大約在同期,Brad Cox根據Smalltalk的思想設計了Objective-C,但是因爲其語法怪異,沒有流行起來。只有Steve Jobs這種具備禪宗美學鑑賞力的世外高人,於1988年把Objective-C的團隊和產品一口氣買了下來。團隊協作

相關文章
相關標籤/搜索