2011-04-23 36 views
4

我來自Lisp並希望開發Iphone應用程序。我希望從其他Lisp或Python開發人員聽到Objective-c與Lisp在抽象方面的比較,如關閉,一流功能,宏等。Objective-C與Lisp相比有多抽象?

+0

請重新閱讀[faq](http://stackoverflow.com/faq),這種類型的問題在這裏是題外話。 – Mat 2011-04-23 13:31:11

+1

@Mat,我認爲這個問題不是主觀的,明確的定義和幫助。我只希望標題不是用「評級」Objective-C來表示的。但是對語言特徵和另一種語言差異的調查似乎是合理的。 – 2011-04-23 14:36:13

+0

@Kirk Woll:標題和措辭使我發表了上述評論 - 也是「開放式」,「討論」式的問題。 「我應該記住Objective-C中關閉的實現,來自Lisp的背景」(或者這個效果),聽起來確實是一個很好的問題。好東西「關閉」功能需要很多選票,我猜:-) – Mat 2011-04-23 14:50:41

回答

6

Objective-C的歷史植根於SmallTalk,因此,就像Lisp一樣,函數中存在許多使語言有用的東西(在本例中爲類的方法),您可以在運行時使用自己的代碼重寫該語言,並且可以在運行時將函數添加到類中。但是,在Objective-C中,底層C永遠不會很遠,因此與Lisp不同的是,您不必擔心內存管理等問題,而且語言顯然比功能更爲程序化。

最近Objective-C編譯器增加了對「塊」(即閉包)的支持。

當然,Objective-C仍然是一種編譯語言,並且它所具備的所有功能都可以在Lisp,Python或SmallTalk中找到。我可能會得到一些贊成票,但是考慮到你的背景,我認爲你會發現Objective-C是一個完全動態的解釋型語言,可以在編譯語言的時候獲得最接近的東西。

爲防萬一你沒有檢查或有人過來看這個問題需要它,看看the Wikipedia section on Objective-C syntax

作爲一個PS,根據你在做什麼,你可能也會對PhoneGap等工具感興趣,這些工具可以讓你在JavaScript中開發iPhone(和其他移動平臺),因爲JavaScript儘管有它的名字和類C語法,有很多你在Lisp中擁有的權力。

+0

哇,我從來不知道它是基於smalltalk。我將更多地檢查objective-c。謝謝 – Zubair 2011-04-23 13:51:30

+0

,我也會檢查電話缺口 – Zubair 2011-04-23 13:51:48

+1

+1,有一個小挑剔。是的,Objective-C(至少在iOS上)沒有GC,但實際上我很少花時間擔心內存管理。基本上,唯一的想法是決定是否聲明一個屬性爲「保留」或「複製」 - 不是非常令人擔憂。 :-) – 2011-04-23 14:56:25