Introduction
身為Mac和iOS的開發者,Objective-C是基礎必學的語言。Apple利用了Objective-C的特性以及優秀的物件導向的思維創造了十分巧妙的Cocoa和Cocoa Touch的架構。Objective-C的確是有許多優點,但是即使在Obj-C滿20歲的那一年推出了Obj-C 2.0,但它似乎還是跟不上時代的腳步。這也是為什麼我想要發展這一個新的語言––––"Rubjective-C"。
Story
我第一個學會的程式語言是Python,它是我在念生技碩士時由Timothy Wu花了3個小時教我number、string、list、tuple、dictionary、function、if/else、loop...等語法及概念。於是我花了一個白天的時間利用Python把某個網頁上的gene特定資訊擷取出來,又花了1天的時間將其自動化讓它可以從網路上的整個database擷取出整個genome的特定資訊。在花了一天的時間去處理可能會因為網路連線問題導致的錯誤結果。以一個新手來說,我獲得了小小的成就,至少它比在實驗室拿pipetman有趣得多了!
「我想我應該有天份可以當程式設計師!」我很天真的這樣想。剛好那時台灣開始開發iOS的風氣正要起來,於是我參加了一些免費的教學課程,並與Timothy Wu開始了兩年的iOS開發。接觸了Obj-C和Cocoa Touch之後,我才發現寫一個十分物件導向的程式不如想像的那樣輕鬆了。我花了許多時間去學習物件導向(OO)、設計模式(Design Pattern)、物件導向分析與設計(OOAD),試圖去了解Cocoa的設計。
即使Cocoa是如此的美麗動人(還有人說Cocoa是他的女朋友),Obj-C卻有點像是過氣的藝人。一些語法上過於繁瑣的特性,反而像是個囉嗦的老頭。而Python,則像是個年輕的小伙子。於是我開始有想要把Obj-C年輕化的念頭,使他變得更像是能與Cocoa美女匹配的紳士(或許這也算是生物學上的「印痕(imprinting)」的現象吧)。
可惜Python在OO上的能力不足以支撐Cocoa的設計,直到了我遇見了––––Rails,而看到了Ruby的可能性。於使我選擇了把Objctive-C進行「紅寶石化(Rubilization)」,而產生了這個Rubjective-C(Rubilized Objective-C)的語言。Powerful Features of Rubjective-C
- 超語言:目前Rbj-C的底層還是Obj-C(或者該說是C),Rbj-C只是提供一個簡潔語法介面讓程式設計師與Obj-C語言打交道,所有Rbj-C的編碼最後都可以被轉譯成為Obj-C碼。而Rbj-C的最終目標是要實現程式設計師的語法與底層實作分離(decoupling)––––也就是Obj-C不僅可以轉譯成為Obj-C,還可以是C或其他的程式語言。而可以達到「架構」的程式碼不變,「實作」的底層方式改變,而可以使Rbj-C可以轉換到不同語言或是平台(雖然目前也只開發可以轉換到Obj-C的程式碼)。
- 導向觀:雖然Ruby和Obj-C毫無疑問是OO語言,但Rbj-C則是以Object-Oriented Design Pattern為基礎的Pattern-Oriented語言,你不難發現Rbj-C的物件結構是來自於許多設計模式概念。此外,Rbj-C的物件方法實作則是採用Block-Oriented的Pseudo-Code來進行。所以在Rbj-C有個十分重要的概念––––「你不實作任何類別,你只敘述它」。我稱之為Described-Object-Oriented (DOO)或是Block-Modeling-Oriented。藉由DOO,我們更可以去調整程式碼在整個架構中的地位及使用方式。
- 生產力:Rbj-C藉由前兩項特徵,便可以用極少的編碼去創造出不同所需要的文件。並且可以很容易的進行測試、發佈及版本升級。
Development of Rbj-C
還在建構當中...
No comments:
Post a Comment