Objective-C之父Brad Cox訪談:我的編程之路

jopen 10年前發布 | 9K 次閱讀 Objective-C

        英文原文:The Road to Code: An Interview with Brad Cox

        眾所周知,Brad Cox 與 Tom Love 一起創造了 iOS/MAC 平臺的首選開發語言 Objective-C。構建于C語言之上的 Objective-C 其理念來自于公認的第二個面向對象的程序設計語言和第一個真正的集成開發環境的 Smalltalk。日前,原文作者 Dave Dribin 采訪了 Brad Cox,一起來了解下這位大神級人物,是如何看待他的編程之路。

Objective-C之父Brad Cox訪談:我的編程之路

        Brad Cox 和他的愛犬

        Q:請您簡單做個自我介紹以及與 Objective-C的關系,謝謝。

        Brad Cox:我之前在 ITT 實驗室工作,在那里結識了 Tom,我們都有興趣為人們帶來高效的協作系統,但不同于郵件和實時通訊等應用;現在人們習慣稱呼這類系統為 Groupware (群組軟件)。我們發現在C語言上很難實現想法,當接觸了 Smalltalk 以及面向對象的概念后,我想我們是時候要做出改變了,我們要創造一個更好用的基礎平臺。初期版本是有關 Sed 和 AWK 的工具集合,后來發展為基于 lex 和 yacc 的語言。而今天它還可以作為匯編語言的生成工具。

        Q:方括號可以說是 Objective-C 的特色,請問這是您的杰作嗎?

        Brad Cox:是的,其實我就想看看有什么還沒使用過的,花括號有了,圓括號有了,最后就是方括號了,我希望人們使用時不會與C語言等類似的混淆。

        Q:有什么功能您當初想添加的,但限于當時的技術和時間等制約因素,而最后沒有完成?

        Brad Cox:的確曾有過不少想法。例如 Smalltalk 中的閉包概念,垃圾回收機制,解釋型語言等。這些想法后來通過不同形式被實現了,但是沒有任何一個類在C語言中是絕對適合的。

        今天這些的確都一一成為了現實。在 Mac OS X 10.5 中,給出了垃圾回收機制;在 10.6 中,也就是雪豹版本,在 Objective-C 中添加了閉包處理。

        Brad Cox:是的,我一直是閉包的擁護者,但是要進入調用者的堆棧的確是需要一定的技巧。

        Q:在靜態和動態還一直爭論不休的時候,Objective-C 做了個跨界整合,動態的運行時環境和靜態的編譯。這是故意而為還是意外行為?

        Brad Cox:事實上,很多功能是在我之后發布的。而當時我直接參與的,是在C的靜態基礎上簡單地添加動態支持。而后來,靜態支持是在這之后發展起來的。Objective-C 的功能都是希望為大家帶來非常輕量級的工具,這也是 Objective-C 一直追求的。

        與純靜態的 C++ 和 Java 相比,Objective-C 的動態類型支持的確非常好用。

        Brad Cox:可能是多了一種輕巧的預設組件方式組合。

        Q:蘋果 iPod 和 iPhone 的銷量超過了 3 千萬,看到如此多的手持設備運行在 Objective-C 之上,那感覺是怎么樣的?

        Brad Cox:這感覺美妙極了。

        Q:語言的設計是非常呆板的。過去 20 多年間出現 Java、C#、Python 及 Ruby 等都與Objective-C有很大不同。函數式語言似乎稍稍打破了沉悶的環境。對于語言設計的下一個重大事件或功能,您有什么看法呢?

        Brad Cox:嗯,函數式語言現在變得熱門了。我也曾嘗試過,但是語法這個環節我就碰了壁。可能還欠點緣分。

        Q:您覺得是語言的選擇影響了最終軟件質量,還是說全部的面向對象語言其實都大同小異?

        Brad Cox:我想他們大體上都是差不多的。

        Q:從您近期發布的消息和您的新作品<>一書中,不難看出您關注的焦點轉移到了軟件組件部分。請問能更多地講述您現在的興趣點嗎?

        Brad Cox:其實我沒有轉變焦點,請記得,為人們帶來輕巧實用的功能是我創造 Objective-C 的初衷。對于我有關組件的關注,其實是我希望能找出有效幫助打造協作系統的辦公自動化組件,所以說我并沒有轉變,只是希望幫助語言設計找到一個繞彎的方法 到達相同的目的地。有關組件方向的更多介紹,請進入我的個人博客進行了解。

        另外,我對 OSGi 模塊化架構有非常大的期待。一旦流行起來,它將扮演非常重要的角色。雖然上手有一定難度,但是盡早學習是我的建議。

        Q:可以分享更多有關 OSGi 的看法嗎?

        Brad Cox:好的。OSGi 運行在 Objective-C 上可能不太合適,但是在其它的 Java 平臺運作良好。一些主流的 IDEs 開發平臺,如 Netbeans 和 Eclipse,是一個能實現過渡到基于 OSGi 組件的中間平臺。而隨著技術的日漸發展和逐步成熟,將來或會成為人們日常工作的一部分。

        Q:OSGi會替代 jars 嗎?還是會與 jars 相結合?

        Brad Cox:我傾向于后者。

        Q:是 metadata 提取物?

        Brad Cox:是的。一個 OSGi bundle 可以看成是一個 metadata 的 jar 提取物。因此也可以說是在 JVM 中的小型 SOA (基于服務架構)服務。他們擁有自己的生命周期,能實現離線等待等處理。

        Q:這樣一來,能實現在線組件更新而不用把整個系統關閉?

        Brad Cox:沒錯。一個典型的做法是在虛擬機中運行 OSGi,然后等候它來完成升級過程。這需要花時間來熟悉。這個模型與 Java 中不斷創建—銷毀的過程不太一樣。

來自: CSDN
                    <span id="shareA4" class="fl">                            
                        </span>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!