今年沒有看著什么新的有點思想的東西,雖然前不久買了兩三本關于實時系統的和FPGA的,可是都忙著工作,都沒怎么看著,當然,這些也都是些application(應用)的了,并不是一些basic(基礎)型的。呵,經常去圖書館借離散數學和偏導回來,可是翻都沒翻又還回去,而且是過期先,真是暈死。不知為什么現在的心都不如幾年前了,那時雖然也是如饑視渴,但是還是可以一步步地慢慢從基礎開始,現在可不行了,總靜不下心來學些基礎的……(費話還有很多很多)
言改正傳。前不久,不知算不算心血來潮,突然就想玩玩apply(蘋果),于是想到了買機器,裝MAC OS X(蘋果的操作系統),載XCode(Mac OS X下的一個開發平臺),下文檔等等之類。當然,想了就做了(廣告語:Just do it)。呵,運氣不好,在淘寶找了兩個商家,一個說我不懂裝懂直接不賣我,另一個說著傳機器的照片過來的,結果照片沒過來機器賣別人了。也罷,本想再買個小白來陪一下現在這臺小黑的,沒辦法,他們都逼我省錢。只好在現在的小黑上裝上小白的心--Mac OS X and XCode, etc.
文檔下了一大堆,從Mac OS X的核darwin到上層的Cocoa等等。今天花了半天學會了基本的Objective-C。好久沒有看過english document(英文文檔)了,有些困難,不過還好,幾乎都只是看看文檔里的代碼就都差不多明白了,哈,一目十行不在話下。
說說對Objective-C的一點點感覺吧。幾年來我神游過很多種計算機編程語言,我覺得最好玩和最深奧的還是函數式的,像Lisp和Scheme,到現在我還沒得到其精髓所在;而最常用的就是C語言了,從最底層的bootloader到OS,到驅動再到應用層,從單片機,到PC再到大型機,它都可以上任,而且做得很好;最實用的就是shell,如果shell也算一種語言的話。編程語言現在最流行的是什么?OO(面向對象)!不管是新興的python, php, java, c#,就連有點古老的pascal都加上了OO的支持,也就是delphi吧。如果你現在去書店里轉轉就會發現編程方面的書都幾乎被java和c#的書給占完了,而幾年前我出道的時候最流行的還是C++,不管網上還是網下,到處都是學習C++,論OO。C++學了幾年了,精算不上了,但是還算上熟悉吧。其實,不管是哪種語言,都脫離不了計算機這個不變的東西,如果你能達到和計算機一樣的思維再加上這些語言的思想那就是難達到真正地運用自如了。(呵,計算機這個東西我覺得我已經理解得差不多了)
哎呀呀,又扯得遠了些,怪不得以前語文老師不是說我的作文寫得好就是寫得又臭又長的- -b
那天用XCode(就像M$的VS,Borland的delphi和BCB)生成了個程序,呵,看到objc(Objective-C的簡稱)代碼中一大堆方括號[],還真是給看暈了。心想怎么這么麻煩的,比起c++, java, c#來太不藝術了。可是,今年終于明白了很多。其實objc在OO方面是從OO的鼻祖smalltalk給直接繼承過來的(以前雖然也去研究了一下smalltalk,可是沒入門就又出來了),它還是沿用著message(消息傳遞)的方式進行OO處理,而不像現在流行的c++, java, c#使用function call(函數調用)方式進行。舉個例子:
object.function(argument); // function call
[object method: message]; // message
還有,學過C++的都應該知道,C++是可以多重繼承的,可是objc和java一樣,只能單一繼承。
當然還有其它很多地方,現在還沒深入。
呵,不知是不是被C++, java, C#思想的毒害,總感覺objc的語法不優雅不夠藝術,寫得太復雜,也許這也是其不如前者流行的原因吧。但是,這種OO的思想真的是原汁原味的。
再多說一下,其實,objc與cocoa的關系就只是一種語言與一個庫的關系,就像C++與MFC,C#與.NET,JAVA與swing一樣。
附:
1,wikipedia中關于objective-c的詳細介紹:http://en.wikipedia.org/wiki/Objective-C
2,Introduction to The Objective-C 2.0 Programming Language:http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/chapter_1_section_1.html
3,Foundation Framework Reference:http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/index.html
4,Introduction to Cocoa Fundamentals Guide:http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaFundamentals/Introduction/chapter_1_section_1.html
|