Słyszałem o Celu C, ale nigdy go nie użyłem. Byłem ciekawy, jakie są ogólne opinie na ten temat, a także w odniesieniu do C++. Czy są jakieś typy projektów, w których byłoby bardziej użyteczne lub mniej użyteczne?Jakie są zalety korzystania z Objective-C przez C++?
Odpowiedz
Dla rozwoju komputerów Mac i iPhone'a zdecydowanie lepsze. Najnowsza wersja ma GC, więc jeśli Ci się spodoba, prawdopodobnie spodoba ci się to lepiej niż C++.
Moja opinia jest taka, że składnia Objective-C jest początkowo trochę "dziwna", szczególnie jeśli pochodzisz z tła C/C++ (tak jak ja). Jeśli masz zamiar pisać aplikacje na Maca lub iPhone'a, rozwój kakao jest sposobem na przejście na. Miałem okazję rozwijać program na komputerze Mac przez około miesiąc tej wiosny i zdecydowałem się napisać go w C++ przy użyciu bibliotek Qt, ponieważ byłem dość obeznany z tymi i czas był najważniejszy.
Jeśli masz komputer Mac, daj mu szansę! Jest tam dużo informacji i jest kilka dobrych narzędzi do rozwoju.
Aby dodać do tych doskonałych odpowiedzi, chcę zaznaczyć, że istnieje również Objective-C++, jeśli na początku czujesz się z tym bardziej komfortowo. –
Jeśli używasz systemu Linux, możesz zainstalować GNUStep, który zapewnia całkiem dobrą kompatybilność z kakao. To może Ci pomóc w rozwoju Objective-C/Cocoa bez posiadania komputera Mac. Najlepsze zasoby do nauki Objective-C [moim zdaniem] są z Apple.
http://developer.apple.com/referencelibrary/Cocoa/index.html
Podobnie jak wielu innych Właśnie zaczął patrząc na obj-C ze względu na iPhone. Zrobiłem dużo C++ i C# iz tego, co widzę, Obj-C ma zasadniczo inne podejście do OO, ponieważ dodaje komunikaty podobne do Smalltalk do C. Podobnie jak C++ jest w zasadzie nadal kompatybilne z C, ale rozszerzenia OO pozwalają wysyłasz dowolną wiadomość do dowolnego obiektu. W tym sensie nie jest to statycznie wpisane, takie jak C++ i C#, gdzie rzeczy, które obiekt może zrobić, są powiązane z klasą. W Obj-C możesz wysłać wiadomość do obiektu, nawet jeśli go nie obsługuje. Obiekt może następnie przekazać go dalej, jeśli nie wie, co z nim zrobić.
Naprawdę fajną rzeczą jest to, że można dodawać interfejsy (protokoły) w środowisku wykonawczym i można dodawać własne procedury obsługi, które przechwytują i ukrywają procedury obsługi wiadomości dla istniejących klas.
W sumie istnieje znacznie większa elastyczność w zakresie obsługi wiadomości, bardziej przypomina to, co można zrobić w Ruby lub Smalltalk. Niezależnie od tego, czy dobrze jest mieć ten typ OO przeszczepionego na C, czy nie, nie potrafię jeszcze tego stwierdzić, pod pewnymi względami podejście C++ jest lepsze w porównaniu z oryginalnym pomysłem C, ale z drugiej strony podejście Obj-C OO jest bardziej co lubią purystów OO.
Od "Some nice features of the Objective-C language":
- Klasy są obiektami
- dynamicznego typowania i opcjonalne statyczne wpisując
- kategorie
- Ekspresyjna składnia wiadomość wysyłając wiadomość
- introspekcji
- Dynamiczny Uruchom- czas
- Automatyczne zbieranie śmieci
- C wewnątrz
- C++ płynną
- Simplicity
- dostęp do technologii firmy Apple
Jest bardziej dynamiczny niż C++ i silnym wpływem z Smalltalk. Nie uważam tego za "lepsze" niż C++ - wręcz przeciwnie, ale niektórzy tak robią.
część tego, co sprawia, Objective-C tak wielka, nie jest językiem (choć jestduży część ot to), to jest to kakao (lub Cocoa Touch) ramy, które idzie w parze z nią (przynajmniej dla 99% użytkowników objc ;-)
Praktycznie rzecz biorąc, kiedyś byłem programistą C++ w starych "klasycznych" dniach Mac. Przechodząc do Objective-C, Cocoa i Mac OS X okazało się, że stałem się bardziej produktywny. Trudno powiedzieć dokładnie, o ile bardziej produktywne, ale 50% do 100% czuje się dobrze.
Cóż, jeśli kodujesz niektóre platformy, takie jak iPhone, wymagany jest Objective-C. Objective-C używa również pisania dynamicznego (run-time), który wielu ludzi woli od statycznego (kompilacja).
Obiekty OO obiektu C używają dynamicznego pisania zamiast pisania statycznego (kompilacja). To zasadnicza różnica w podejściach obu języków - czy jest to zaleta, czy nie, zależy od twojej opinii na temat pisania statycznego i dynamicznego.
WebKit był pierwotnie projektem C++ (khtml z KDE), który został później zaadaptowany przez Apple, aby był bardziej kompatybilny ze środowiskiem Cocoa i tym samym dostał warstwę Objective-C.
znajdę składnia Objective-C jest trochę czystsze niż C++ 's, choć wiem, że jestem w mniejszości tutaj
Tak, powiedziałbym, że jest o wiele czystszy. Nie tylko trochę. Tak jak w rzeczywistości, można go przeanalizować. –
bardzo luźne wiązanie wywołań metod i oddzielnych interfejsów powodują dość stabilnym kodu i uruchomionych obiektów w oddzielnych strefach (Przestrzeń adresowa pamięci) sprawia, że aplikacje są bardzo stabilne, biorąc pod uwagę, że jest to zasadniczo C. –
"Najnowsza wersja ma GC, więc jeśli Ci się spodoba, prawdopodobnie spodoba ci się to lepiej niż C++." Zauważ, że jest to nieuzasadniony argument. GC niekoniecznie jest Graalem dewelopera C++ ... :-p ... – paercebal
Zgadzam się - właśnie dlatego powiedziałem "więc jeśli to lubisz" –