回想 Java 剛升起的時代,那時 C 是主要的開發語言(現在 C 仍是 TIOBE 調查排行榜的第二名,Java 是第一名),C++ 則是最主要的 Object-Oriented 語言(那時 OO 正風行)。在 C 系列盤據的地盤中,Java 可以脫穎而出,除當時特殊時空背景外,C++ 的複雜性也是造成許多 programmer 轉換跑道到 Java 的原因之一。
關於 C++ 的複雜,這裡不討論,有經驗的 C++ 程式者,想想看光一個 method 宣告,其中 const 放在 method 前、method 後、或是參數前就會有不同的效果,就知道 C++ 如何要求程式開發者的智力與謹慎程度。
更不要說 C++ 物件的產生時機的複雜,讓很多 programmer 摸不著頭緒,「瞭解什麼時候呼叫 constructor,什麼時候呼叫 destructor?」是寫好 C++ 程式的一大關鍵。
雖然 constant、constructor、destructor 都是很正統 Object-Oriented 語言需要處理、且強調的部份。但實務上,你放心讓你同 team 的年輕小朋友處理這麼細膩的小細節嗎?筆者可不敢!
Java 簡化這方面的思緒,object 就是要 new 才會 create 出來,簡單清楚,讓人覺得可親。Garbage collection 也讓人不再擔心 allocated 出來的 memory 會導致未來系統的危機。去除掉 pointer 這個好用又危險的工具,也讓大家鬆了一大口氣,這都是 Java 由 C++ 領域中勝出的一大關鍵因素。
沒有留言:
張貼留言