• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

programmieren in os x - aber wie?

  • Ersteller alfonso_p
  • Erstellt am

alfonso_p

Gast
Ich wollte mal ein paar Gehversuche in der Programmierung für meinen Mac machen.
Daher hier die Frage, ob das nur in Objective C zu machen ist. Ich hab ein bißchen C
und C++ Erfahrung, damit aber seit Jahren nicht mehr viel gemacht.
Beruflich war ich über die letzten Jahre eher viel mit Java und C# in Berührung.
Ein erster Blick auf Objective-C läßt mir daher einen kalten Schauer den Rücken runterlaufen. Alles voller Sonderzeichen, eckige Klammern, was soll so etwas? Hinzu kommt auch, daß ich nicht unbedingt diese Sprache erlernen möchte, da ich sie außerhalb vom Mac ja nirgends anwenden kann.
Also jedenfalls möchte ich sie nicht erlernen, wenn es nicht unbedingt notwendig sein sollte.
Und daher meine Fragestellung:
Ist, um den Mac und Cocoa und vielleicht auch OpenGL vollständig programmieren zu können, Objective-C von Nöten oder läßt sich das auch mit C und C++ bewerkstelligen? Ich habe auch gelesen von einer Java-Cocoa Bridge, aber das Apple die wohl (weiß der Teufel weshalb) nicht mehr fortführt. Dann habe ich noch von Unterstützung für Ruby und Python gelesen. Da dies aber interpretierte Sprachen sind, hat man hier wohl mit Abstrichen zu rechnen, oder wird der produzierte Code in XCode vorkompiliert und erreicht dadurch die gleiche Ausführungsgeschwindigkeit wie ein mit Objective C geschriebenes Programm? Und kann man auch mit diesen Sprachen alles am Mac programmieren oder ist man dann eher eingeschränkt?

Fragen über Frage, vielleicht kann mir jemand weiterhelfen und auch ein paar Bücher empfehlen zu Ruby mit XCode, Objective-C, OpenGL am Mac. Es scheint nicht sonderlich viel Literatur zu geben. Mich wundert daher insgesamt ein bißchen, ob Apple vielleicht einfach kein Interesse an einer größeren Entwicklercommunity hat oder einfach nur aus purem Stolz verkrampft an Objective C festhält.

vielen Dank für Eure Hilfe und ein paar schöne Feiertage

Alfonso
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Ich wollte mal ein paar Gehversuche in der Programmierung für meinen Mac machen.
Daher hier die Frage, ob das nur in Objective C zu machen ist.
Das kommt darauf an, was Du machen willst.

Mit C/C++ ist man für wirklich schöne, richtige Mac Oberflächen auf Apples HIToolbox Carbon aus dem Carbon Framework angewiesen. Der Umgang damit ist nicht so leicht, ausserdem hat die HIToolbox den 64 Bit zu verpasst, was vermuten lässt, dass es sie bald vielleicht nicht mehr geben wird.
Sonst gibt es Cross-Platform C++ Tools wie z.B. Trolltechs Qt. Aber das ist eben nicht wirklich Mac Programmierung

Konsolenprogramme kannst Du nach belieben in C/C++ schreiben.

Ein erster Blick auf Objective-C läßt mir daher einen kalten Schauer den Rücken runterlaufen. Alles voller Sonderzeichen, eckige Klammern, was soll so etwas?
Das ganze kommt von Smalltalk, und ist m.E. der sehr gelungene Versuch, in einer Programmiersprache natürliche Sätze nachzubilden.

Code:
[Lisa wirf:[Ball mitFarbe:Rot] zu:Robert];
ist valide ObjC Syntax.

Der Aufruf würde in C++ vielleicht so aussehen:
Code:
Ball = new Ball(rot);
Lisa->wirfEtwasZu(Ball, Robert];
delete (Ball)
Ist das jetzt wirklich schöner? Ich glaube nicht.

Hinzu kommt auch, daß ich nicht unbedingt diese Sprache erlernen möchte, da ich sie außerhalb vom Mac ja nirgends anwenden kann.
Siehe oben. Das kommt darauf an.
Ist, um den Mac und Cocoa und vielleicht auch OpenGL vollständig programmieren zu können, Objective-C von Nöten oder läßt sich das auch mit C und C++ bewerkstelligen?
Das sollte gehen, sogar relativ leicht wenn Du Dich darauf beschränkst, wirklich alles in Deinem OpenGL Fenster zu machen.
Diese Tutorials benutzen zwar auch Objective-C, aber nicht so viel davon:
http://nehe.gamedev.net/lesson.asp?index=01

Noch eine ganz andere Alternative wäre X11.

Ich habe auch gelesen von einer Java-Cocoa Bridge, aber das Apple die wohl (weiß der Teufel weshalb) nicht mehr fortführt.
Den Grund hast Du selbst genannt: Cocoa gibt es nur auf dem Mac. Wenn Du Java nehmen willst, dann nim ein Java Framework, das Deine Programme portabel hält. Die Cocoa/Java Bridge war eine schlimme Krücke.

Hoffe das hilft

Alex
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Objective-C trennt völlig den oo Ansatz (Objective) vom prozeduralen (C). Die einzigen Sonderzeichen, die dazu gekommen sind, sind @ (OOP-Schlüsselwort) und [] (Nachrichtenversand).

Da in Objective-C als echter OOPL Methoden/Nachrichten etwas völlig anderes sind als Funktionsaufrufe, ist das logisch richtig. Man mag das mit ein wenig Hereinschnuppern nicht erkennen …

Übrigens ist das nun gerade in C++ besonders eklig: Die Sonderzeichen-Template-Wüsten sind wohl offenkundig nur für Parser gedacht. Für Menschen ist das fürchterliches Kauderwelsch. C++ ist sozusagen das Behördendeutsch der programmmiersprachen.

Die Java-Bridge ist aufgegeben worden, weil sich in Java mangels Dynamik der Sprache gewisse Sachen nicht vertretbar formulieren lassen. (Gleiches gilt übrigens etwa für KVO und C++.) Spätestens mit Einführung dieser Technologien war daher Java als gleichwertige Primärsprache obsolet. (C++ war es bei noch weniger Dynamik ohnehin nie.)

Wenn man übrigens die Rasanz sieht, mit dem für OS X neue Applikationen entstehen, für deren Entwicklung etwa auf Windows Jahrzehnte vergangen sind, ist dieser Krampf ziemlich gut. Ich finde jedenfalls modale Dialoge auf Windows anstelle von Inspektoren ziemlichen Krampf, bloß weil ewig Gestrige unbedingt an C++ festhalten wollen.
 
Zuletzt bearbeitet:

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Code:
[Lisa wirf:[Ball mitFarbe:Rot] zu:Robert];
ist valide ObjC Syntax.

Der Aufruf würde in C++ vielleicht so aussehen:
Code:
Ball = new Ball(rot);
Lisa->wirfEtwasZu(Ball, Robert];
delete (Ball)
Ist das jetzt wirklich schöner? Ich glaube nicht.

Schlimmer noch sind serielle Funktionsaufrufe in C++:
Code:
dum->di()->dum()
Wer ruft wen mit welchem Ergebnis auf? Durch die äußeren Klammern ist das bei Obejctive-C völig eindeutig:
Code:
[[dum di] dum];
Man mag das ja ungewohnt finden. Wenn man objektive :) bleibt, ist es besser, weil klarer.
 

tfc

Ontario
Registriert
21.07.07
Beiträge
348
Ich persönlich habe mit meinen C und C++ Kenntnissen innerhalb von einem Nachmittag die Objective-C-Syntax gelernt und erste Programme geschrieben. Ist überhaupt nicht schwer. Wie meine Vorredner schon sagen: Es ist nur eine Sache der Gewohnheit.

Ansonsten habe ich mit Ruby schon Cocoa-Programme geschrieben, was ebenso wirklich leicht war. Praktisch ist eben, dass man mit jeder Programmiersprache auf die gleichen Objekte zugreift.

Mein Bruder hat seit ein paar Wochen auch einen Mac. Vorher programmierte er hobbymäßig unter Linux 3D-Spiele und -Engines (Was gerade unter Linux extrem erleichtert wird) und plötzlich stand er auch vor dem Problem, vor Dem Du gerade stehst.
Aber man braucht nur ein wenig Objective-C-Wrapper um seinen C++-Code herum und schon geht das wie gehabt.
 

dust123

Luxemburger Triumph
Registriert
13.02.05
Beiträge
498
Kann denn jemand ein richtig gutes Buch zur Mac-Programmierung empfehlen? Also so etwas wo man von den Grundlagen über das Erstellen eines GUI zur fertigen App kommt? Meine eigenen Kenntnisse beschränken sich nämlich auf eingerostete Basic, Pascal und Visual Basic Sachen. C und C++ waren mir immer etwas zu kryptisch und ich habe da das Gefühl das manche Sachen immer so "von hinten durch die Brust ins Auge" sind, wie z.B. mit diesen Zeigern für Variablen usw. Das sollte m.E. die Programmiersprache vom User fern halten und selbst verwalten.

Leider wird in den meisten Büchern zu Objective-C eine solide Grundlage in C/C++ Programmierung vorausgesetzt.
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Kann denn jemand ein richtig gutes Buch zur Mac-Programmierung empfehlen? Also so etwas wo man von den Grundlagen über das Erstellen eines GUI zur fertigen App kommt? Meine eigenen Kenntnisse beschränken sich nämlich auf eingerostete Basic, Pascal und Visual Basic Sachen. C und C++ waren mir immer etwas zu kryptisch und ich habe da das Gefühl das manche Sachen immer so "von hinten durch die Brust ins Auge" sind, wie z.B. mit diesen Zeigern für Variablen usw. Das sollte m.E. die Programmiersprache vom User fern halten und selbst verwalten.

Leider wird in den meisten Büchern zu Objective-C eine solide Grundlage in C/C++ Programmierung vorausgesetzt.

Dann empfehle ich Dir die Bücher von Spiderworks, Learn C on the Macintosh und danach Learn Objective-C on the Macintosh
Kosten als eBook jeweils $14,95, nach aktuellem Kurs sind das weniger als EUR 10.

Danach kannst Du entweder mit Apple Docu, oder mit den bekannten Büchern bequem weitermachen.

Alex
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Kann denn jemand ein richtig gutes Buch zur Mac-Programmierung empfehlen? Also so etwas wo man von den Grundlagen über das Erstellen eines GUI zur fertigen App kommt? Meine eigenen Kenntnisse beschränken sich nämlich auf eingerostete Basic, Pascal und Visual Basic Sachen. C und C++ waren mir immer etwas zu kryptisch und ich habe da das Gefühl das manche Sachen immer so "von hinten durch die Brust ins Auge" sind, wie z.B. mit diesen Zeigern für Variablen usw. Das sollte m.E. die Programmiersprache vom User fern halten und selbst verwalten.

Leider wird in den meisten Büchern zu Objective-C eine solide Grundlage in C/C++ Programmierung vorausgesetzt.

Leider wird da zu viel expliziert. In der nächsten Auflage spreche ich in den drei ersten Kapiteln auch absolute Anfänger an, vor allem in den beiden ersten. Meine Freundin hat das geblickt. Das muss jeder verstehen können. *duck & weg* Nein, ernsthaft: Sie ist nicht einmal versierte Anwenderin gewesen und versteht nun, was man beim Programmieren tut. (Nach 80 Seiten ist sie allerdings auch noch keine Programmiererin.)