close

物件導向一直試圖改變程序導向使用者的思維,甚至已經統治了現今常用的程式語言。自20世紀中期,物件導向被引入程式語言中,為了方便(或說更有條理地)解決現實生活的種種問題。因此物件導向至今仍是一種趨勢,到未來(我想)也還不會改變。而在現今物件導向語言成熟的階段,悄悄爬出一個我們可能也沒聽過的函數式語言。早在60年代,函數式程式語言 - LISP問世(約和物件導向同期),這代表在更之前已經被大量地研究。然而,連年輕學子也不了解的函數式語言,真的沒有壯大的可能性嗎? 我稍稍研究有關函數式語言,它有著以下特性:

    - less bug
    - less side effect

Less bug代表了更少的時間被浪費,我們不需因著程式碼本身的問題被胡弄許久。Less side effect代表了在程式執行時會出現較少的錯誤。在具備這兩種特性的程式語言應該擁有非常複雜的結構,像是例外處理、賦值問題處理、非法動作的抵制…等。然而,在設計上本身就採用簡單的概念,所以(跟據我的猜測)它不會是那麼地複雜。而在成熟的物件導向語言 - Java,加入了很多的聰明機智,使它也具備less bug的特性。也因如此,犧牲了不少的執行料率。我們在許多的課程中(尤其作業系統概論)也體會到一點:快和安全是兩個相反的東西。因此,為了安全,我們不需要快。而Java為了在執行效率上(特別是經常被執行的片段)有更好的表現,加上了一點命令式的做法。這就是人們時常爭論的話題:Java是否為純物件導向語言。我覺得Java已經夠純了,只是為了應付更多的挑戰,它不得不這麼做,畢竟人家已經是最流行的語言之一。而純種的函數式語言(像是Haskell),其執行效率比起程序式語言慢了不少,甚至不及於Java。這是為什麼呢? 我們可能會想:函數式語言是否比物件導向語言更複雜了一點? 函數式語言到底都在做什麼? 是什麼讓他那麼慢? 這個問題(以我目前的知識)我想我還未能正確地回答。但有一點確實可以推測:它使用了更抽象的思維做為設計方法。

(未完待續)

arrow
arrow
    全站熱搜

    moses1202 發表在 痞客邦 留言(0) 人氣()