2009-05-12 15 views
8

Nie mam komputera Mac ani telefonu iPhone. Jednak koncepcja wzięcia C i uczynienia go bardziej dynamicznym w kierunku idei smalltalk, python lub ruby ​​jest dla mnie naprawdę atrakcyjna. Chciałbym zacząć od celu C.Cel nauki C bez Maca

Czy obiektyw C jest po prostu składnią składni C, czy jest to naprawdę jak C. Jak, czy można go skompilować za pomocą gcc itp ..?

Wykonuję większość moich programów w Ruby. Cel C wydaje się o wiele bardziej wybaczający niż C. Możesz pisać natywne rozszerzenia dla Rubiego w C. Czy możesz pisać natywne rozszerzenia dla Ruby w Objective C?

Jak mogę zacząć z Celem C poza posiadaniem Mac/iPhone'a i posiadaniem XCode?

+3

Dlaczego jest to oznaczone Ruby? – MickaelFM

+0

Czy udało ci się w swoich planach rozszerzenia ruby ​​napisanego w cel-c? Opracowałem również rozszerzenie ruby ​​w celu-c. Teraz mam problem z nowymi wyjątkami Cel-c (@ throw/@ catch ...). Kiedy używam ich, moje jądro aplikacji rutynowej zrzuca po pierwszym wystąpieniu wyjątku. Używam gnu-runtime i znajduje się w nim kod antydumpingowy: objc_exception_throw (...) { ... /* Jakiś rodzaj błędu rozwijania. */ abort(); } –

Odpowiedz

6

Wikipedia mówi

Dziś jest używany przede wszystkim na Apple Mac OS X i iPhone OS, dwa środowiska na podstawie, chociaż nie zgodny z norma OpenStep, i jest podstawowym językiem użyty dla Apple Cocoa API chociaż był pierwotnie używany jako główny język na NeXT's NeXTSTEP OS. Generic Programy Objective-C, które nie wykorzystują bibliotek , mogą być również skompilowane dla dowolnego systemu obsługiwanego przez gcc, który zawiera kompilator Objective-C .

Cel C obecnie często stosowany w tandemie ze stałym biblioteki standardowych obiektów (często określane jako „zestaw” lub „ramowe”), takich jak kakao lub GNUstep.

Może powinieneś dostać Linux vm, jeśli głównie używasz systemu Windows i uruchamiasz GNUStep.

1

Jest różnica między Objective-C, język, i ramy, które Apple zbudował na nim. Te frameworki składają się z kilku obiektów, które możesz wykorzystać w kodzie i są szczególnie przydatne, jeśli kierujesz reklamy na komputer Mac lub iPhone. W GNUStep jest kilka podobnych obiektów, ale nie jest to kompletny zamiennik biblioteki Cocoa/etc, a zwłaszcza nie obejmuje niczego związanego z iPhonem.

Język GNUStep i język Objective-C (przez gcc) są dostępne dla wielu platform i można pisać własne programy korzystające z obiektów Objective-C i współdziałać z dowolnymi aplikacjami C-api z Objective-C.

Objective-C jest nadzbiorem C i nie jest tak naprawdę bardziej wyrozumiały niż C, ale jest prawdopodobnie bardziej wyrozumiały niż C++ (prawie-nadzbiór C). Możesz także mieszać Objective-C i C++ z GCC, ale to staje się nieco skomplikowane, szczególnie w odniesieniu do obsługi wyjątków.

Dla początkujących i bawiących się z tym językiem, GNUStep i GCC byłyby dobrym rozwiązaniem.

+0

Jestem całkiem pewny, że Objective-C jest ścisłym nadzbiorem C, w przeciwieństwie do C++, który ma kilka (ale nie wiele) czystych pęknięć od C. –

+0

Objective-C to kompletny nadzbiór C, a nie prawie superset. –

+0

Ok, przepraszam za to (jestem bardziej zaznajomiony z C++ niż Obj-C). Poprawię tekst, w każdym przypadku z praktycznego punktu widzenia oba są nadzbiorem C. –

3

Apple przyczynił się cel c zmiany z powrotem na gcc (nie, że mieli duży wybór, będąc GPL). Gdziekolwiek więc możesz skonfigurować gcc, możesz ustawić kompilator celu c.

Poza tym środowisko Gnustep może dać ci trochę smaku oryginalnego środowiska OpenStep/NextStep.

0

Nie widzę żadnego ważnego powodu, dla którego nie można użyć Celu C do natywnych rozszerzeń ruby, z tą różnicą, że niewiele na tym zyskasz. Nadal będziesz musiał używać wywołań C na niższym poziomie, ponieważ o ile mi wiadomo, nie ma żadnych rubinów do powiązań typu "cel-c". Dodatkowo, Objective C zawiera dość znaczną bibliotekę klas użytkowych, które choć pomocne, nie ułatwią łatwego uzasadnienia ich wielkości i masy w kontekście rozszerzenia ruby.

+1

Jaką znaczącą bibliotekę klas użytkowych? Cel C nie ma praktycznie nic. – Chuck