OS X Programmentwicklung - welche Sprache?

yiiit

Aktives Mitglied
Thread Starter
Dabei seit
14.01.2007
Beiträge
1.943
Reaktionspunkte
90
Moin alle zusammen,


angenommen ihr wollt eine individuelle Software für Euer Unternehmen entwickeln lassen. Würdet ihr dem Entwickler eine Vorgabe bzgl. der Sprache geben?

Ich höre und lese immer wieder von Cocoa. Einige bekannte Entwicklungen werden auch explizit damit beworben "Von Grund auf neu geschrieben in Cocoa". Beispeil: das neue MS Office-Paket für den Mac.

Aber was ist so besonders an Cocoa? Besonders schlanke Codestruktur? Schneller als andere Sprachen?

Ich habe leider gar keine Ahnung in Sachen nativer Apps, möchte mich aber auch nicht übers Ohr hauen lassen.

Danke für Eure Hilfe!
 
anders gefragt:

Wenn Du gar keine Ahnung von Autos hast, würdest Du dann einem Mechaniker die Werkzeuge zur Reparatur vorschreiben!?

Sprachen sind Werkzeuge und je nach Umgebung, Einsatzzweck u.s.w. sind sie geeignet zu wählen (Nur ein schlechter Mechaniker würde versuchen mit einer Säge eine Schraube festzuziehen).
Cocoa ist keine Sprache sondern ein Framework das Sinn macht wenn die Zielplattform ausschließlich Apple-Computer sein sollen.
 
Cocoa ist mehr eine API (Programmierschnittstelle) für grafische Benutzeroberflächen als eine Programmiersprache. Programmiert wird dann in der Regel in Objective-C. Für graphische Programme würde ich Cocoa empfehlen und ich denke, Apple tut das auch ;-). Damit lassen sich die meisten Funktionen von Mac OS X, insbesondere Snow Leopard, nutzen wie z.B. 64-Bit-Programmierung.
 
Cocoa ist ein "bisschen" mehr als nur eine GUI-API: click :)
 
Aha - dann weiß ich jetzt etwas mehr :). Klar möchte ich dem Programmierer seine Werkzeuge nicht vorschreiben, aber wenn ich mir mal die Apps angucke, die uns MS für teueres Geld verkauft und mit den Apps vergleiche, Apple uns anbietet - dann fragt man sich ja schon, warum die einen es können und die anderen nicht.

Bzw. was die "Könner" richtig machen und die anderen falsch.

Was aber ist mit "in der Regel in Objective-C" gemeint? Was wären die Alternativen? Und in welchen Bereichen setzt man welche Alternativen ein, um maximale Performance zu erreichen?
 
Aha - dann weiß ich jetzt etwas mehr :). Klar möchte ich dem Programmierer seine Werkzeuge nicht vorschreiben, aber wenn ich mir mal die Apps angucke, die uns MS für teueres Geld verkauft und mit den Apps vergleiche, Apple uns anbietet - dann fragt man sich ja schon, warum die einen es können und die anderen nicht.
was willst du damit sagen? Wer "kann es" und "wer nicht"?
Kommt wohl etwas auf den Einsatzbereich an: Pages ist nett, aber für den professionellen Gebrauch eher ungeeignet. Numbers ist übersichtlich, aber vom Funktionsumfang her kaum mit Excel vergleichbar. Windows 7 ist ein richtig feines Stück Software. :noplan:
 
was willst du damit sagen? Wer "kann es" und "wer nicht"?
Kommt wohl etwas auf den Einsatzbereich an: Pages ist nett, aber für den professionellen Gebrauch eher ungeeignet. Numbers ist übersichtlich, aber vom Funktionsumfang her kaum mit Excel vergleichbar. Windows 7 ist ein richtig feines Stück Software. :noplan:

Du willst darauf andeuten, dass das MS Office-Paket für den Mac richtig toll ist? Ich muss (leider) täglich mit MS Office arbeiten und wenn ich ganz ehrlich bin und kein Blatt vor den Mund nehme: Dieses 500 EUR teuere Stück Code von MS ist eine Frechheit.

Warum? Weil Word & Co. die mit Abstand langsamsten Programme auf unseren Macs sind, andauernd abstürzen und auch einfach dumm umgesetzt sind. Da kann man auch nicht über Geschmack streiten - deswegen würde ich schon sagen, dass MS zu denjenigen gehört, die es "nicht können".

Sogar das alte CS2 läuft schneller als das Office-Paket.
 
ein Könner kann auch mit einem schlechten Instrument traumhafte Musik machen. Umgekehrt macht eine Stradivari aus einem Diletanten noch lange keinen Ausnahmegeiger! Soviel auch zu Deiner fixen Idee das Problem über die Werkzeuge angehen zu können. Du brauchst gute Beratung der Du vertraust! Keine 2-3 Meinungen aus einem Webforum, vor allem wirst Du hier nicht in einem Thread genug lernen um plötzlich ds beurteilen zu können nach dem Du suchst!
 
angenommen ihr wollt eine individuelle Software für Euer Unternehmen entwickeln lassen. Würdet ihr dem Entwickler eine Vorgabe bzgl. der Sprache geben?

(Moderne) Unternehmenssoftware wird meistens in Java geschrieben. Es liegt daran, dass der Java-Code im allgemeinen einfacher zu schreiben und zu unterhalten ist. Das macht das ganze billiger. Ausserdem ist man mit Java Plattform unabhängig und die ganzen WebService Unterstützung und Application Servers für Java macht das ganze speziell für Unternehmen sinnvoll. Aber eben hängt es von der Software ab die man entwickeln will, welche Sprache man benutzt. Ganz dumm kommt es, wenn jemand der nicht Software Engineering studiert hat, die Programmiersprache vorgibt ;-)
 
ein Könner kann auch mit einem schlechten Instrument traumhafte Musik machen. Umgekehrt macht eine Stradivari aus einem Diletanten noch lange keinen Ausnahmegeiger! Soviel auch zu Deiner fixen Idee das Problem über die Werkzeuge angehen zu können. Du brauchst gute Beratung der Du vertraust! Keine 2-3 Meinungen aus einem Webforum, vor allem wirst Du hier nicht in einem Thread genug lernen um plötzlich ds beurteilen zu können nach dem Du suchst!

Das sehe ich anders. Mit Vertrauen alleine lassen sich keine Entscheidungen treffen. Verstehen ist da viel wichtiger und sei es nur im Groben. Und die Meinungseinholung hier Forum ist natürlich nur ein erster Schritt. Ich habe halt schlechte Erfahrung damit gemacht, mein Vertrauen einem/mehreren zu schenken, indem ich mich nur auf die Referenzen verlasse. Ich will zumindest minimal wissen und verstehen, was mit welcher Sprache warum üblicherweise gemacht wird.

(Moderne) Unternehmenssoftware wird meistens in Java geschrieben. Es liegt daran, dass der Java-Code im allgemeinen einfacher zu schreiben und zu unterhalten ist. Das macht das ganze billiger. Ausserdem ist man mit Java Plattform unabhängig und die ganzen WebService Unterstützung und Application Servers für Java macht das ganze speziell für Unternehmen sinnvoll. Aber eben hängt es von der Software ab die man entwickeln will, welche Sprache man benutzt. Ganz dumm kommt es, wenn jemand der nicht Software Engineering studiert hat, die Programmiersprache vorgibt ;-)

Vielen Dank - ich dachte immer Java sei eine veraltete Architektur und wenn ich mein Gehirn ganz intensiv anstrenge, erinnere ich mich an katastrophale Java-Apps auf meinem Nokia-Handy.

Hmm...Programme wie Revolver, Things, Bank X, Billings, on the job oder iCal sind doch keine Java-Apps, oder? Das wäre nämlich so die Richtung, in die es bei uns gehen würde.
 
Wirklich sauber native Anwendungen kann man für den Mac (für kein System…) nicht mit Java schreiben. Die wirken immer wie Fremdkörper. Das geht nur mit Objective-C oder C++, da man mit diesen auf Cocoa zugreifen kann.
 
Ich finde, dass es langsam interessant wird :). Mit was oder welcher Kombi sind denn z.B.

Revolver, Things, Bank X, Billings, on the job oder iCal

geschrieben? Oder meinetwegen auch die non-business Apps wie Tweety, iFlicks usw?

Die wirken auf mich alle wie 'vom gleichen (guten) Eisen' (obwohl Revolver da ein bisschen rausällt).
 
Das Problem an C# oder c++ ist das diese stark Plattform abhängig sind. Das heist wenn du ein Programm für Mac OS schreibst kannst du es nicht (so einfach) auf Windows überspielen.
VB ist zb nur auf Windows lauffähig - zumindest ist mir nichts anderes bekannt.
 
Prioritäten

Hi,

die Sprache ist (meist) zweitrangig bzw. ergibt sich automatisch aus der Problemstellung. Viel wichtiger ist es einen wirklich kompetenten Entwickler zu finden. Damit meine ich nicht, dass die Person besonders (!) "fit" in einer Programmiersprache/Plattform sein muss, sondern zuallererst das Problem versteht, mit denkt und sich an bestimmte Vorgaben hält. Wenn man so jemanden gefunden hat (schwieriger als man glauben möchte...), dann kann man die Wahl der Sprache getrost hinten an stellen. Hier bleibt nur Mund zu Mund Propaganda, Erfahrungsaustausch und Glück.

Soll eine Applikation Mac-only sein, dann wird der Entwickler fast automatisch Objective-C oder C++ verwenden. Ist die Anforderung sehr nah am Kernel, dann wird dieser auch zu C greifen. Plattformunabhängige Entwicklungen und wenig Zeit drängen Java in den Vordergrund. Wenn plattformübergreifend nah an der Hardware programmiert werden muss, dann wirds wahrscheinlich wieder C++ oder C.

Entwicklungen fürs Web werden mit ganz anderen Sprachen gemacht: PHP, Python, Perl, Ruby, JavaScript, Java, etc.

Kommen (Relationale) Datenbanken ins Spiel, dann ist meist auch irgendwo SQL-Code zu finden, mindestens für die Abfragen.

Allerdings ist die Frage nach der Sprache IMHO nicht ganz unberechtigt. Ich durfte schon erleben, dass gewiefte Freiberufler die merkwürdigsten/totesten Sprachen und Frameworks aus dem Hut zogen. Mit der sicheren Gewissheit, dass man so schnell niemand anderen finden würde der den Code an Stelle ihrer pflegen kann.

Servus

kg
 
Zuletzt bearbeitet:
Das Problem an C# oder c++ ist das diese stark Plattform abhängig sind. Das heist wenn du ein Programm für Mac OS schreibst kannst du es nicht (so einfach) auf Windows überspielen.
VB ist zb nur auf Windows lauffähig - zumindest ist mir nichts anderes bekannt.

Da greifst du dir aber gerade zwei Sprachen heraus, die sich - mit den richtigen Bibliotheken verpaart - durchaus dafür eignen, plattformübergreifend zu programmieren. Man nehme zB QT von Trolltech und halte sich an einige Konventionen und schon kann sein Programm sowohl auf Windows als auch auf MacOS als auch unter Linux übersetzt werden. C# (so habe ich gerade die Woche gelernt) läßt sich auch sehr schön gegen Cocoa linken, auch wenn das Binding noch nicht vollständig ist.

Was meint dieser geneigte Schreiber? Es ist nicht die Sprache, die die Mächtigkeit ausmacht, sondern die Bibliotheken und da ganz besonders die Standard-Laufzeitbibliothek! Das ist übrigens auch ein Grund, warum Java im Unternehmensbereich immernoch so beliebt ist, auch wenn sie sich gerade im Begriff ist, sich selbst zu überholen (Stichwort Jython, Skala, Go). Die Laufzeitbibliothek von Java ist eine der größten und Mächtigsten, die mit einer Sprache bzw deren Laufzeitumgebung ausgeliefert wird.

Zum Thema selbst. Ich würde mich nicht allgemein auf eine Sprache festnageln lassen. Ist die Anwendung die ich schreibe, ausschließlich für MacOS bestimmt, geht die Wahl ganz klar zu Gunsten von Obj-C aus. Allerdings ist es nicht die Sprache sondern wie oben schon erläutert die Laufzeitbibliothek (Cocoa/Carbon/..) die mich zu dieser Wahl fast zwingt. Möchte ich performante Einzelplatzanwendungen programmieren, die sich leicht installieren und ausführen lassen, geht meine Wahl klar richtung C++. C# ist noch nicht ganz so weit, wobei die Entwickler von Mono in letzter Zeit erstaunliches vollbracht haben. Möchte ich ein Kompilat auf mehrere Plattformen verteilen und auf eine solide Entwicklergemeinschaft aufbauen, nehme ich Java. Möchte ich in dem Bereich ein wenig experimentieren, fällt meine Wahl eher auf Skala. Mit beiden Sprachen kann ich auf die potente Java-VM mit ihrer umfangreichen RT-Lib aufsetzen. Jython ist in meinen Augen auch ein schönes Spielzeug. Allerdings würde ich dann schon gleich Python nutzen. Hm, soll ich weiter machen? Ok, einen noch. Habe ich zum Beispiel ein Problem zu lösen, dass Nachrichtenbasiert ist, würde wahrscheinlich meine Wahl auf Erlang fallen.

Meine Sentenz: Sprachkriege bringen nichts. Wegus deutete es schon an: Es gibt für alles ein passendes Werkzeug. Man kann aber auch mit einem Vorschlaghammer eine Reißzwecke in ein Korkbrett hämmern ;)
 
Der von Apple vorgesehene Weg für gute OSX-Apps ist Objective-C / Cocoa und das natürlich in Xcode für die aktuelle OSX-Version. Allerdings sind die Programme dann natürlich Mac-only und können nur mit sehr großem Aufwand zu anderen Plattformen portiert werden. Sind die Programme dann mal erstellt, sollten sie auch regelmäßig gewartet werden, da sonst OS-Updates (gerade bei Apple) zu mittleren Katastrophen werden können.
 
@_ebm_ Danke, für deine Ausführliche Erklärung.
Bin selbst noch Programmieranfänger, und da his es halt mal so über c++:eek:
Im Beruf brauch ich auch fast nur VBA eine Abwandlung von VB für Excel.
Pivat hab ich mich schon in Java und PHP(5) sowie c++ versucht.
 
Java ist als Sprache schon toll, nur die Programme, die hinten herauskommen, sind immer wie Fremdkörper. Die ganzen Anwendungen unter OS X sollten eigentlich mit Obj-C geschrieben werden.

Wenn du einen kompetenten Entwickler an der Hand hast, sollte die Anforderung "Integration in OS X" das bringen, was du haben möchtest.
 
Das Problem an C# oder c++ ist das diese stark Plattform abhängig sind. Das heist wenn du ein Programm für Mac OS schreibst kannst du es nicht (so einfach) auf Windows überspielen.
VB ist zb nur auf Windows lauffähig - zumindest ist mir nichts anderes bekannt.

Windows ist uninteressant für uns und wird es auch bleiben.

Hi,

die Sprache ist (meist) zweitrangig bzw. ergibt sich automatisch aus der Problemstellung. Viel wichtiger ist es einen wirklich kompetenten Entwickler zu finden. Damit meine ich nicht, dass die Person besonders (!) "fit" in einer Programmiersprache/Plattform sein muss, sondern zuallererst das Problem versteht, mit denkt und sich an bestimmte Vorgaben hält. Wenn man so jemanden gefunden hat (schwieriger als man glauben möchte...), dann kann man die Wahl der Sprache getrost hinten an stellen. Hier bleibt nur Mund zu Mund Propaganda, Erfahrungsaustausch und Glück.

Soll eine Applikation Mac-only sein, dann wird der Entwickler fast automatisch Objective-C oder C++ verwenden. Ist die Anforderung sehr nah am Kernel, dann wird dieser auch zu C greifen. Plattformunabhängige Entwicklungen und wenig Zeit drängen Java in den Vordergrund. Wenn plattformübergreifend nah an der Hardware programmiert werden muss, dann wirds wahrscheinlich wieder C++ oder C.

Entwicklungen fürs Web werden mit ganz anderen Sprachen gemacht: PHP, Python, Perl, Ruby, JavaScript, Java, etc.

Kommen (Relationale) Datenbanken ins Spiel, dann ist meist auch irgendwo SQL-Code zu finden, mindestens für die Abfragen.

Allerdings ist die Frage nach der Sprache IMHO nicht ganz unberechtigt. Ich durfte schon erleben, dass gewiefte Freiberufler die merkwürdigsten/totesten Sprachen und Frameworks aus dem Hut zogen. Mit der sicheren Gewissheit, dass man so schnell niemand anderen finden würde der den Code an Stelle ihrer pflegen kann.

Servus

kg

Sehr wichtiger Hinweis. Aus Erfahrungen im Webbereich weiß ich, wie schwer es tatsächlich ist gute Leute zu finden.


@_ebm: Danke für Deinen langen Beitrag. Sehr aufschlussreich.
 
Zuletzt bearbeitet:
Zurück
Oben Unten