2011-08-06 40 views
1

所以我知道OOP的一些腳本和基本概念,但是當寫到實際的代碼時,語法殺死了我。Objective-C的語法與英語相似嗎?

我下載了iTunes U上的斯坦福大學課程,嘗試學習Objective C,而教授一直重申您希望自己的代碼儘可能的像英文一樣閱讀。我有英文文學學士學位,我認爲它不會像英文一樣閱讀。

也許這個問題太不符合範式,但任何人都可以比較Objective C語法和英語的語法嗎?

我很想在我的大腦中建立這些連接,這樣我就可以編寫代碼而不必爲每一行而掙扎。

感謝您的幫助。

+0

爲什麼downvotes? +1 – JustSid

+0

+1我也是。我看到其他人推動「像英文一樣閱讀」的方法,這對於清除這些內容很重要。 –

回答

6

什麼教授的意思是,如常見的類C代碼之間的區別,:

foo.drawCircle(p, r, c); //C#, C++, … 

與常見的Objective-C編程代碼,如:

[foo drawCircleAtPoint:p withRadius:r andColor:c]; //Objective-C 

哪一個告訴你馬上做了什麼以及參數代表什麼?

使用Objective-C中標記的(種類)方法參數,即使是複雜的方法(參數明智的)也可以被看作是簡單的英語。它們在大小寫和空白方面有所不同,但措辭很大程度上反映了英語。

Objective-C雖然不是語言特定的(除了if,do…while等)。你可以很容易地將上面的行寫成:

[foo zeichneKreisAnPunkt:p mitRadius:r undFarbe:f]; //Objective-C 

現在你的代碼讀起來有些德文。不過你不應該那樣做(認真,不要!)。


非常類似於英語的語言是Applescript。但正是這個特點使Applescript很難與之合作。英語(一般的自然語言)根本不是用來指導計算機的。

+0

命名參數的這種使用是我喜歡Objective-C的一件事 - 它確實很巧妙。我很想看到這種風格遷移到C#中(因爲它也命名參數)。 –

+0

這很有道理,你說得對,我完全理解Objective-C代碼的意思。在由p表示的點處繪製一個圓,半徑用r表示,c的顏色。這就說得通了。當我查看大多數Objective-C代碼時,它並沒有像所有那樣清楚。 – Lucas

+0

好的,是的,語言設計鼓勵使用命名方法,但最終完全取決於您選擇一個描述性的方法名稱。蘋果的框架中的那些命名和一致性雖然,恕我直言。 – Regexident

1

我真的對不起你的失望。 比較英語(口頭語言)和Objective-C(編程語言)是不對的。但在某種程度上,objective-c的語法比其他編程語言更容易理解。

第一次看到初學者,他將能夠理解代碼如何工作「邏輯」(與C或C++相比,他依賴於某些文檔)!他無法理解Objective-C中代碼的編程方面,但它更容易理解正在發生的事情。例如,在C中,您將創建用於初始化字符串的方法,並且您可以將該方法命名爲createString();在Objective-C中,您可以開始編寫代碼,如您感覺如何。

user.text = [NSString stringWithFormat:@"%@ is a %@", string1, string2]; 

html = [html stringByReplacingOccurrencesOfString: 
     [NSString stringWithFormat:@"%@>", text] withString:@""]; 

有這麼多的例子,你將竭誠爲只有當你開始與其他編程語言比較這門語言。我認爲你的教授的意思是積極的,以鼓勵學生學習。

+0

將它與其他編程語言進行比較有點困難,因爲我不會說我在任何其他編程語言中都很流暢。對我來說最接近的就是javascript,但我仍然在整體上掙扎。 然後再一次,它的一件事情是轉向任務,另一件事是我自己創建一個正在運行的程序。 – Lucas