• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Objective C - C++

graf_schokula

Stechapfel
Registriert
24.05.10
Beiträge
158
Hallo,

als Informatikstudent steh ich gerade vor der Wahl eines Zusatzfaches, und da ich sowieso ein bisschen mit Obj-C rumklabaudert habe, überlege ich mir C++ als Wahlfach zu nehmen (Obj-C bietet der alte verstaubte Bildungsapparat natürlich nicht an - dafür zig Kurse mit .NET Gedöns^^).

Deswegen wollte ich mal fragen, in wie weit C++ mit Objective C vegleichbar ist, und ob Wissen in dem einen dem anderen weiterhelfen kann.

beste Grüße,
graf_schokula
 
vergleichbar: kaum.

Objective-C und C++ sind schon in der Konzeption deutlich verschieden.
 
Ich würde eher sagen andersrum: Objective-C wird zum Glück nicht angeboten, da andere bessere Programmiersprachen gelehrt werden (C#, JAVA, C, C++). Nicht immer auf das Bildungssystem schimpfen, nur weil persönliche Präferenzen nicht unterstützt werden.....
 
hast schon recht, war ja nicht ganz ernst gemeint mit dem Staub ;)
Ich bin ja froh als Hauptsprache JAVA gelernt zu haben, nicht Objective C, aber ich finde für einen Zusatzkurs parallel zu den Hauptfächern wäre sowas mal interessant.
 
Also ich weiß ja nicht wenn man C++ kann kommt man auch gut mit Object C zurecht. Das größere Problem sehe ich beim Umstieg von Java auf C++, viele meiner Kommilitonen taten sich dabei sehr schwer, da Java die schweren Sachen ja gut umgeht... Pointer fehlen und das Datentypen Problem - toString Methoden wären ein Traum für C++;) Aber selbstverständlich ist es auch kein Hexenwerk, aber ich muss trotzdem zugeben ich war froh zunächst c++ und dann java zu lernen.
 
hehe, das mit den Pointern hab ich auch nicht kapiert. Also lernt man ja doch was in C++ für Obj-C.
 
Ich würde eher sagen andersrum: Objective-C wird zum Glück nicht angeboten, da andere bessere Programmiersprachen gelehrt werden (C#, JAVA, C, C++). Nicht immer auf das Bildungssystem schimpfen, nur weil persönliche Präferenzen nicht unterstützt werden.....

Weil diese Sprachen so viel besser sind ist ja auch die Applikationssoftware, die damit geschrieben wird so viel besser....
Ah nee halt... das ist sie ja gar nicht.... ;-)
 
Also ich weiß ja nicht wenn man C++ kann kommt man auch gut mit Object C zurecht. Das größere Problem sehe ich beim Umstieg von Java auf C++, viele meiner Kommilitonen taten sich dabei sehr schwer, da Java die schweren Sachen ja gut umgeht... Pointer fehlen und das Datentypen Problem - toString Methoden wären ein Traum für C++;) Aber selbstverständlich ist es auch kein Hexenwerk, aber ich muss trotzdem zugeben ich war froh zunächst c++ und dann java zu lernen.

naja in C++ werden die Sachen anders gemacht. Da haste keine toString methoden, sondern du implementierst casts. C++ hat den wirklich großen Vorteil, dass man operatoren Überladen kann. Jedoch muss man damit umgehen können, weil das sonst sehr undurchschaubar wird. Und wir von mir oben gesagt, es liegen Welten zwischen C++ und Objective-C. Das fängt schon allein beim erstellen von Objekten an. In C++ kann man nicht von Konstruktur auf Konstruktor verweisen. In Objective-C erstellt das Klassenobjekt eine Instanz. Selbst self kann man werte zuweisen, in C++ darf this nicht links vom = stehen.
Insgeheim hoffe ich, dass GNUstep endlich aus ihrer kleinen Welt rauskommen, damit man auch auf anderen Plattformen als nur Mac OS X vernünftig mit Objective-C programmieren kann.

Ich würde eher sagen andersrum: Objective-C wird zum Glück nicht angeboten, da andere bessere Programmiersprachen gelehrt werden (C#, JAVA, C, C++). Nicht immer auf das Bildungssystem schimpfen, nur weil persönliche Präferenzen nicht unterstützt werden.....

Schon einmal mit Smalltalk programmiert? Oder einer anderen dynamisch typisierten? Wahrscheinlich nicht. Aber die meisten tun sich schwer, wenn sie pseudo-OOP Java programmieren und dann auf Smalltalk stoßen. Ist schon erstaunlich, dass die meisten dann mit dem in Smalltalk gepriesene OOP überhaupt nicht klar kommen. ich bin froh, dass C++ eine schwach typisierte Sprache ist, daher ist sie nicht ganz so statisch wie Java.

In Objective-C kann man sehr schönes OOP programmieren, was in Java auf Grund der statisch und starker Typisierung eigentlich nicht möglich ist (Objekte definieren sich nicht durch deren Namen, sondern durch dessen Verhalten). Auch fehlen in den ganzen Sprachen Nachrichten und das späte Binding.

Also würde ich nicht sagen, dass andere Sprachen "besser" sind. Sie sind halt alle noch etwas funktionaler aufgebaut (besonders C++), was für die meisten auch irgendwie einfacher zu programmieren scheint.

Eigentlich muss ich auch sagen, dass ich persönlich ein starker OOP Freund bin und daher Smalltalk und Objective-C als meine Favoriten ansehe, was Programmiersprachen angeht.


Weil diese Sprachen so viel besser sind ist ja auch die Applikationssoftware, die damit geschrieben wird so viel besser....
Ah nee halt... das ist sie ja gar nicht.... ;-)

Das liegt nicht an den Programmiersprachen, sondern an den Bibliotheken und an den APIs der Betriebsysteme. Schaut man in die Linux Welt, wo größtenteils gtk+ verwendet wird, dann sehen auch die Anwendungen wieder ähnlicher aus. Aber du hast Recht, mit nahezu vollständigen OOP Sprachen (was Objective-C ja nur wegen dem C Unterbau ist), kann man GUIs besser programmieren ;)
 
Ich würde das an Deiner Stelle nicht gleichzeitig lernen, denn wie schon gesagt, liegen Welten zwischen C++ und Objective-C.
Objective-C ist sehr viel überschaubarer und als Sprache weniger komplex. Dennoch kannst Du ganz wunderbare Sachen damit machen (siehe Cocoa). Obj-C eignet sich prima für die Anwendungsentwicklung, obwohl Du Dich damit an Apple bindest (auf anderen Systemen kannst Du Gnustep verwenden, das hinkt Cocoa aber naturgemäß immer hinterher).

C++ ist eine Multiparadigmensprache und eignet sich m.M.n. eher für Systemprogrammierung oder lower level frameworks. Die Sprache ist sehr mächtig aber eben auch sehr komplex. Im direkten Vergleich finde ich C++ viel schwieriger zu meistern als Obj-C, allerdings sind damit ebenfalls sehr coole Sachen möglich. Mit der C++ Standard-Library bekommst Du ein auf jeder Platform verfügbares Werkzeug an die Hand, was Dir sehr viel Arbeit abnimmt. Mit Pointerarithmetik musst Du Dich in modernem C++ genauso wenig herumquälen, wie in Obj-C.

Wenn Du in C++ einsteigen willst, empfehle ich Dir folgende Lektüre

http://www.amazon.de/Die-Programmiersprache-Deutsche-Übersetzung-Special/dp/382731660X
http://www.amazon.de/Standard-Libra..._1_cc_2?ie=UTF8&qid=1297111577&sr=1-2-catcorr
http://www.amazon.de/Effektiv-progr...ramme-verbessern/dp/3827326907/ref=pd_sim_b_1

Damit lernst Du modernes C++ und nicht den Uralt-MFC Style, der immer gerne gebasht wird.
Überlege Dir aber gut, ob Du das wirklich parallel machen willst, die Ansätze der beiden Sprachen sind grundverschieden.