Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Unter OS X Entwickeln...was gibt es da?

Unter OS X Entwickeln...was gibt es da?

bluefisch20028.04.0913:56
Hallo,

ich bin nun seid mehreren Jahren Softwareentwickler für Microsoft Windows im Bereich .NET sowie C und Visual Basic...
Nun möchte ich jedoch damit beginnen auch unter OS X Software zu entwickeln.
Nur stehe ich total auf dem Schlauch...was für Technologyen und Sprachen existieren für OS X welche von Beginn an auf jedem System zu finden sind? Also nichts wie Mono...
Was für IDEs gibt es? Irgendwas das an die Einfachheit von Visual Studio ran kommt?

Wie gesagt ich brauche irgendwie ein Sprungbrett in die Materie und stehe momentan vor einer Wand...Google wollte mir nicht helfen...aber möglicherweise auch nicht weil ich wie immer vollkommen falsch suche
0

Kommentare

MacMark
MacMark28.04.0914:01
developer.apple.com
„@macmark_de“
0
Hellokittyhater28.04.0914:13
xcode?
0
bluefisch20028.04.0914:15
Hellokittyhater
xcode?

Sonst gibts nichts? Kann ich nicht glauben

MacMark
Danke, habe ich mich mal angemeldet...muss ich mir am Abend mal genauer anschauen...
0
h@cmac28.04.0914:22
Naja Java, mit allem was dazu gehört
0
jonny91
jonny9128.04.0914:26
Also natürlich gibt es auch Java unter OS X (dort ist es ja schon von Haus aus dabei), aber ich vermute mal, du möchtest etwas vernünftiges lernen.

Also: Die Sprache, die für native OS X Programme eingesetzt wird ist Objective-C, eine objektorientierte Abwandlung von C, die sich aber an Smalltalk orientiert. Man kann auch was mit C++, Ruby und Python machen, aber da bin ich nicht dein Mann. Objective-C ist eine Einarbeitung schon wert und wirklich nicht schwer zu lernen. Kennt man eine Sprache, kennt man sie alle... .

Das API bzw. Framework für moderne OS X Programme heißt Cocoa, früher NeXTStep bzw. OpenStep. Cocoa ist wirklich das Geheimnis der Programmierung für OS X. Objective-C selbst ist nicht sehr mächtig, Cocoa allerdings schon. Unter anderem wird durch Techniken wie das Key-Value-Coding/-Observing das am Mac schon fast berühmte zero-lines-of-code-app möglich.

DIE IDE ist Xcode. Früher gab es da noch eine, die bei vielen sogar beliebter war, aber heute ist Xcode "State of the art". Es verwendet intern GCC als Compiler und GDB als Debugger, bietet aber ein leistungsfähiges GUI dafür, wobei du im Ernstfall immer noch den vollen Zugriff über die Kommandozeile behältst. Außerdem wird Versionierung mittels Subversion unterstützt.

Zum Erstellen von GUIs gibt es den "Interface Builder", ein eigenständiges Programm, das aber eng mit Xcode verwoben ist und meiner Meinung nach einen viel besseren Job macht als herkömmliche GUI-designer, was auch an der genialen Technik dahinter liegt, die zu erklären den Rahmen dieses Postings sprengen würde.

Ich empfehle dir das Buch "Cocoa Programming for Mac OS X" von Aaron Hillegass, der es wirklich versteht in leichtem Englisch sehr prägnant eine Einführung in die Cocoa Programmierung zu geben. Sehr lesenswert.
„How much wood would a woodchuck chuck if a woodchuck could chuck wood?“
0
3d-swiss28.04.0914:27
Ne Alternative um für Mac, Windows und Linux zu entwickeln: Revolution
0
h@cmac28.04.0914:37
Frage weils mich interessiert, wo liegt bei Revolution der Vorteil gegenüber Java? Irgendwelche Erfahrungsberichte?
0
Leonardo_dv28.04.0914:47
jonny91 hat an sich alles Wissenswerte gesagt. Aaron Hillegass kann man im Bereich Cocoa durchaus als Guru bezeichnen. Zusätzlich zum Buch kann ich die Bootcamps der „Big Nerd Ranch“ empfehlen. Aaron ist Gründer und Chef, hält meines Wissens im kommenden Juli auch wieder ein Bootcamp in Deutschland (Rheingau). Näheres unter
0
iCode
iCode28.04.0915:02
Wenn man native Anwendungen entwickeln möchte benutzt man Xcode. Es kostet nichts. Man damit auch in JAVA, Python oder Ruby entwickeln. Und die IDE lässt sich auch für andere Sprachen erweitern. - Wikipedia:

Wenn man in JAVA entwickelt kann man sich natürlich auch Eclipse oder NetBeans installieren.

Man auch gleich RealBasic nennen, wenn schon jemand RunRev sagt.

Aber im Prinzip ist Xcode, Objective-C und Cocoa die erste Wahl.


PS: Eine Übersicht über Objective-C und Cocoa Bücher gibt da.
0
bluefisch20028.04.0915:32
dann werde ich mich mal in XCode einarbeiten, danke euch allen
Habe mich irgendwie immer vor gescheut...weis auch ned wieso...hört sich so unbekannt an
0
sierkb28.04.0915:33
IDEs: Eclipse und NetBeans gibt's auch für den Mac. Inzwischen sogar mit nativen Cocoa Widgets.

Und GCC bzw. die meisten von Linux her bekannten GNU Compiler- und Entwicklungswerkzeuge hat MacOSX auch im Lieferumfang mit drin. XCode macht auch Gebrauch davon. Man MUSS XCode aber nicht verwenden, man darf/kann. Bzw. XCode bietet sich vor allem für reine MacOSX-Anwendungen an, für alles Weitere stehen einem auch andere IDEs wie z.B. Eclipse und NetBeans zur Verfügung.
0
jonny91
jonny9128.04.0915:33
Leonardo_dv Auch wenn die Bootcamps nicht ganz billig sind und für einen Einstieg vielleicht etwas überzogen.
„How much wood would a woodchuck chuck if a woodchuck could chuck wood?“
0
iCode
iCode28.04.0915:57
sierkb
... XCode bietet sich vor allem für reine MacOSX-Anwendungen an, für alles Weitere stehen einem auch andere IDEs wie z.B. Eclipse und NetBeans zur Verfügung.
Genau. Aber auch wenn Du (TEbluefisch200) Dich entscheiden solltest, lieber bspw. in C++ mit NetBeans und dem Qt-Framework zu entwickeln, installiere Dir das Xcode Package. Das enthält neben der IDE, Compiler Suite und den Frameworks auch unzählige nützlich Tools und Helferlein, und noch tonnenweise Dokumentation.
0
sierkb28.04.0916:06
iCode
Aber auch wenn Du (TEbluefisch200) Dich entscheiden solltest, lieber bspw. in C++ mit NetBeans und dem Qt-Framework zu entwickeln, installiere Dir das Xcode Package. Das enthält neben der IDE, Compiler Suite und den Frameworks auch unzählige nützlich Tools und Helferlein, und noch tonnenweise Dokumentation.

Die Installation der XCode Tools von der Installations-DVD ist für einen Entwickler unter MacOSX sowieso Pflichtübung (bzw. sollte es meiner Meinung nach sein), selbst wenn der die XCode IDE und den Interface Builder nicht benötigt. Z.B. der Property-List Editor ist auch unter den nützlichen Tools, die dann mit installiert werden, und der kann/könnte sogar einem Nicht-Entwickler hin und wieder wertvolle Dienste leisten, um Plist-Dateien bequem editieren zu können.
0
Urkman28.04.0916:30
Hallo bluefisch200,

die Frage ist ja, _was_ möchtest du entwickeln:

- Windows Software: nada
- OSX oder iPhone Software: XCode
- Java Software: Eclipse, Netbeans
- Websites( also php, ruby oder so ): Eclipse, Netbeans und zusätzlich MAMP
- Crossplattform: Revolution

So das wäre doch schonmal was...

Urkman
0
sierkb28.04.0916:50
Urkman
und zusätzlich MAMP

Ich zumindest brauche kein MAMP. Apache 2 hat MacOSX von Haus aus an Bord, Perl5, PHP5 und Ruby, FastCGI ebenfalls. MySQL gibt es von mysql.com (sogar als 64Bit-Version) und ist schnell installiert.
Wozu also diese Redundanz?
0
sierkb28.04.0916:52
bluefisch200:

Why developers prefer Macs

Interessant zu lesen.
0
bluefisch20028.04.0921:45
Urkman
Hallo bluefisch200,

die Frage ist ja, _was_ möchtest du entwickeln:

- Windows Software: nada
- OSX oder iPhone Software: XCode
- Java Software: Eclipse, Netbeans
- Websites( also php, ruby oder so ): Eclipse, Netbeans und zusätzlich MAMP
- Crossplattform: Revolution

So das wäre doch schonmal was...

Urkman

Nene...meine Frage war schon richtig
Ich will wissen was sich unter OS X so alles anstellen lässt....:-)
Aber danke für die Liste
sierkb
bluefisch200:

Why developers prefer Macs

Interessant zu lesen.

nanana...ich entscheide immer noch selbst was die beste Entwicklungsumgebung für mich ist...und was einfacheres als Windows und .NET habe ich noch nie gesehen ....aber dafür will ich ja jetzt bei einer anderen Platform einsteigen...:-)

0
sierkb28.04.0921:55
bluefisch200
nanana...ich entscheide immer noch selbst was die beste Entwicklungsumgebung für mich ist...

Diese Entscheidungsfreiheit will Dir hier auch niemand streitig machen, keine Sorge.

Nicht zuletzt deshalb hast Du hier ja auch gefragt. Um möglichst Antworten zu bekommen, die Dir weiterhelfen. Und darum bemühen wir uns. Auch ich.
0
ClausB28.04.0922:16
Moin bluefisch

na von winfuture.de hier her gefunden ?!
0
Leonardo_dv28.04.0922:27
jonny91
Leonardo_dv Auch wenn die Bootcamps nicht ganz billig sind und für einen Einstieg vielleicht etwas überzogen.

Da hast Du natürlich recht Jonny, speziell was den Einstieg angeht. Die Veranstaltungen sind definitiv nicht für Anfänger gedacht. Aber wert sind die Bootcamps den Preis allemal, Unterkunft, Verpflegung, klasse Ambiente (Kloster Eberbach - Name der Rose) ist alles inklusive.
0
iCode
iCode29.04.0909:48
Urkman
die Frage ist ja, _was_ möchtest du entwickeln:
- Windows Software: nada
- Crossplattform: Revolution
Das ist Quark. Natürlich kann man auch für Windows und auch anständig Crossplatform entwickeln.

0
bluefisch20029.04.0910:05
ClausB
Moin bluefisch

na von winfuture.de hier her gefunden ?!

Bin schon relativ lange hier

Als aktiver Windows User tobt man sich noch gerne auf winfuture aus
0
ClausB29.04.0910:58
bluefisch200
ClausB
Moin bluefisch

na von winfuture.de hier her gefunden ?!

Bin schon relativ lange hier

Als aktiver Windows User tobt man sich noch gerne auf winfuture aus

Ich finde das da auch oft Lustig


Aber zum Thema, während der Ausbildung musste ich auch etwas C lernen, während die anderen sich unter XP mit Visual Studio abgequält hatten, denn wirklich Stabil lief das nicht, habe ich das ganze mit XCode auf meinem Laptop gemacht und nicht einen einzigen absturz erlebt.
Auch sagt mir die ganze Oberfläche von Xcode mehr zu als Visual Studio... wobei ich auch froh bin das nicht mehr machen zu müssen ist nicht meine Welt, sonst wäre ich ja vielleicht Anwendungsentwickler geworden und nicht ITSE
0
ExMacRabbitPro29.04.0911:12
Wenn Du gerne sowas wie Visual Basic auf dem Mac möchtest dann gibt es dafür Real Basic: http://www.realsoftware.com/realbasic/
0
Muty29.04.0912:12
jonny91
Also natürlich gibt es auch Java unter OS X (dort ist es ja schon von Haus aus dabei), aber ich vermute mal, du möchtest etwas vernünftiges lernen.

Ohne einen Krieg starten zu wollen: Du behauptest Java wäre nichts vernünftiges? Darf man da vielleicht auch mehr dazu von dir hören?

0
Dirk!29.04.0912:53
Zum Thema: Cross-Plattform könnte ich noch Qt ins Rennen werfen (nicht zu Verwechseln mit QT=QuickTim):

http://www.qtsoftware.com/

Mit Qt geschriebene Programme sehen auf der jeweiligen Platform wenigstens so aus, wie der User es gewohnt ist und fügen sich auch sonst besser ins System ein, als Java etc.
0
ExMacRabbitPro29.04.0913:19
Muty
jonny91
Also natürlich gibt es auch Java unter OS X (dort ist es ja schon von Haus aus dabei), aber ich vermute mal, du möchtest etwas vernünftiges lernen.

Ohne einen Krieg starten zu wollen: Du behauptest Java wäre nichts vernünftiges? Darf man da vielleicht auch mehr dazu von dir hören?

Don't feed the trolls!!!
0
Muty30.04.0912:40
Meinst du jetzt mich oder johnny91? Ich finde meine Frage berechtigt..
0
MacMark
MacMark30.04.0913:09
Java ist ohne Zweifel vernünftig, aber wenn man für OS X programmieren will, ist ganz klar Objective C erste Wahl.
„@macmark_de“
0
Rantanplan
Rantanplan30.04.0913:44
Ich schließe mich MacMark ohne Wenn und Aber an
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
0
Muty30.04.0915:46
OK sorry. Ich verstehe unter "unter OS X entwickeln" nicht gleich "für OS X entwickeln". Aber ihr habt natürlich Recht, für OS X sollte man Objective-C nehmen, solange man nicht für mehrere Plattformen entwickeln will !
0
sierkb30.04.0915:56
Muty
Ich verstehe unter "unter OS X entwickeln" nicht gleich "für OS X entwickeln".

Geht mir genauso, auch ich sehe und mache da Unterschiede zwischen unter und für.
Vergl. auch die Überschrift und Inhalt der Frage bzgl. dieser beiden Worte...
0
Stefab
Stefab03.06.0911:30
Crossplattform ist natürlich auch REALBasic, ist auch ziemlich einfach, aber leider bei weitem nicht gratis.
0
ExMacRabbitPro03.06.0911:55
Stefab
Crossplattform ist natürlich auch REALBasic, ist auch ziemlich einfach, aber leider bei weitem nicht gratis.

Mei - warum hast Du denn den alten Thread noch mal ausgegraben?
0
Stefab
Stefab03.06.0913:06
ExMacRabbitPro: Kenne den alten Thread nicht, aber noch etwas, wie ein Erfahrungsbericht zu RB und VB (gegen Ende 2007)
RB ist IMHO viel strukturierter und praktischer gestaltet als VB. In VB hast du eine ellenlange Codewurst, wo du im Code dann die GUI Elemente ansprechen musst, dir selber die Events schreiben musst und all so einen Kram. Wenn du nen Button in RB hast, klickst du einfach darauf, schreibst den Code dazu in das passende Event, zB. MouseDown, oder sonst was (wobei alle Events schon vorgefertigt da sind, bei VB muss man die Events, soweit ich in Erinnerung habe, selber in die lange Codewurst reinschreiben. Dafür dürfte VB komplexer sein, bzw. war es noch 2007 scheinbar so.
Ich hatte mal angefangen, ein VB (.net Version)-Projekt in RB umzuschreiben, dabei ging mir etwas schwerstens auf die Nerven: In RB konnte man keine Computed Properties als Arrays anlegen (RB Version 2007-5), musste also eigene Methoden dafür schreiben, was mir dann irgendwie zu unsauber war (Computed Properties für Nicht-Arrays und Methoden für Arrays, ein Mischmasch), und ich es dann gelassen habe. Ich hoffe schwer, dass das in der heutigen Version endlich geht.
Früher hat mich das nicht sonderlich gestört, als ich noch mit RB 5.5.5 gearbeitet habe, da kannte ich so etwas, wie computed properties noch gar nicht, und hab das mit eigenen Get und Set-Methoden gemacht (davor überhaupt ohne, da hab ich noch nicht so auf sauberen Code geschaut). Heute könnte ich nur mehr schwer auf so etwas sauberes, wie Computed Properties verzichten. Natürlich konnte man mit RB trotzdem schätzungsweise genauso viel machen, aber Computed Properties, bzw, wie sie auf Deutsch heissen: "Errechnete Eigenschaften" finde ich einfach viel, viel sauberer umgesetzt. Ich hoffe, RB 2009 kann das nun auch mit Arrays, das ist IMHO schon viel wert, vor allem der Übersicht halber.
Btw: Weiß da evt. jemand, ob das mit der aktuellen Version nun geht?
0
ExMacRabbitPro03.06.0913:30
Stefab
ExMacRabbitPro: Kenne den alten Thread nicht, aber noch etwas, wie ein Erfahrungsbericht zu RB und VB (gegen Ende 2007)
RB ist IMHO viel strukturierter und praktischer gestaltet als VB. In VB hast du eine ellenlange Codewurst, wo du im Code dann die GUI Elemente ansprechen musst, dir selber die Events schreiben musst und all so einen Kram. Wenn du nen Button in RB hast, klickst du einfach darauf, schreibst den Code dazu in das passende Event, zB. MouseDown, oder sonst was (wobei alle Events schon vorgefertigt da sind, bei VB muss man die Events, soweit ich in Erinnerung habe, selber in die lange Codewurst reinschreiben. Dafür dürfte VB komplexer sein, bzw. war es noch 2007 scheinbar so.
Ich hatte mal angefangen, ein VB (.net Version)-Projekt in RB umzuschreiben, dabei ging mir etwas schwerstens auf die Nerven: In RB konnte man keine Computed Properties als Arrays anlegen (RB Version 2007-5), musste also eigene Methoden dafür schreiben, was mir dann irgendwie zu unsauber war (Computed Properties für Nicht-Arrays und Methoden für Arrays, ein Mischmasch), und ich es dann gelassen habe. Ich hoffe schwer, dass das in der heutigen Version endlich geht.
Früher hat mich das nicht sonderlich gestört, als ich noch mit RB 5.5.5 gearbeitet habe, da kannte ich so etwas, wie computed properties noch gar nicht, und hab das mit eigenen Get und Set-Methoden gemacht (davor überhaupt ohne, da hab ich noch nicht so auf sauberen Code geschaut). Heute könnte ich nur mehr schwer auf so etwas sauberes, wie Computed Properties verzichten. Natürlich konnte man mit RB trotzdem schätzungsweise genauso viel machen, aber Computed Properties, bzw, wie sie auf Deutsch heissen: "Errechnete Eigenschaften" finde ich einfach viel, viel sauberer umgesetzt. Ich hoffe, RB 2009 kann das nun auch mit Arrays, das ist IMHO schon viel wert, vor allem der Übersicht halber.
Btw: Weiß da evt. jemand, ob das mit der aktuellen Version nun geht?

1. Ich hoffe Du hast dass alles nicht für mich geschrieben - denn mich interessiert weder VB noch RB.

2. Code einfach in die Event-Methoden der UI Elemente hinein zu hacken war/ist eine der größten Unsitten seit der Erfindung des goto und wurde, als VB in das .NET Studio integriert wurde, vom MS in VB Gott sei Dank abgeschafft.
Solche Sauerkrauf-Programme (Applikationslogik in Event-Methoden) killen früher oder später jede Wartbarkeit und treten eine saubere Model-View-Controller Architektur mit Füßen. Also ihr Kinder: Nicht nachmachen!!!
0
Johloemoe
Johloemoe03.06.0914:09
Hmmh, ich dachte das geht immer noch unter .NET? Fenster zusammenklicken, Button einfügen, Doppelklick auf Button und der Codeeditor springt zur Event-Methode, oder? Sowas wie "Button1_Clicked()". Es kommt ja auch drauf an was man da reinschreibt. Wenn da dann ein vernünftiger "Controller.doFancyStuff();" aufruf kommt is wieder alles in Butter...
0
ExMacRabbitPro03.06.0914:17
Johloemoe
Hmmh, ich dachte das geht immer noch unter .NET? Fenster zusammenklicken, Button einfügen, Doppelklick auf Button und der Codeeditor springt zur Event-Methode, oder? Sowas wie "Button1_Clicked()". Es kommt ja auch drauf an was man da reinschreibt. Wenn da dann ein vernünftiger "Controller.doFancyStuff();" aufruf kommt is wieder alles in Butter...

Exakt - so hält man Ordnung!
Aber in den Button-Click einen ganzen Code-Roman hineinmatschen - dass geht gar nicht!
0
jonny91
jonny9103.06.0915:31
Wenn wir schon diesen alten Thread wieder ausgraben, dann will ich auch die Gelegenheit nutzen und die noch ausstehende Frage beantworten.
Muty
jonny91
Also natürlich gibt es auch Java unter OS X (dort ist es ja schon von Haus aus dabei), aber ich vermute mal, du möchtest etwas vernünftiges lernen.

Ohne einen Krieg starten zu wollen: Du behauptest Java wäre nichts vernünftiges? Darf man da vielleicht auch mehr dazu von dir hören?

Ich hab es oben etwas flapsig-provokant formuliert. Natürlich hat auch Java seine Berechtigung. Gerade für den Anfang ist es als objektorientierte Sprache mit schöner Syntax und guter Dokumentation als Einführung gut geeignet und ist deshalb besonders in Schulen und Universitäten so beliebt. Tatsächlich war Java auch meine erste "echte" Programmiersprache (vorher hab ich immer mit Javascript+HTML rumgespielt, weshalb Java auch nahe lag).

Spätestens wenn du dann aber mit GUIs arbeitest flaut die Begeisterung für Java recht schnell ab. Javas großer Vorteil - nämlich die Plattformunabhängigkeit - ist gleichzeitig auch der größte Fluch. Für und wider kann man sicher noch lange abwägen, Fakt bleibt, dass Java nicht nativ ist. Die GUIs sehen alle mehr oder weniger merkwürdig aus, die Vorteile des Betriebssystems bleiben ungenutzt.

Schließlich muss ich dran erinnern, dass im Eingangspost nach der Programmierung unter OS X speziell gefragt war.
„How much wood would a woodchuck chuck if a woodchuck could chuck wood?“
0
Johloemoe
Johloemoe03.06.0919:31
konny91
Hilfe! Bitte tu das NIE wieder!
jonny91
Gerade für den Anfang ist es als objektorientierte Sprache mit schöner Syntax und guter Dokumentation als Einführung gut geeignet und ist deshalb besonders in Schulen und Universitäten so beliebt.
Wenn das so wäre, würden die wohl alle auf .NET umsteigen oder? Dass Java "schön einfach" ist, mag vielleicht dem Laien so erscheinen, wenn man sich aber mal ein bisschen mit dem Enterprise und Business-Markt auseinandersetzt, stellt man fest, dass gerade dort Java sehr beliebt ist, eben wegen seiner Eigenschaften wie Platformunabhängigkeit.
jonny91
vorher hab ich immer mit Javascript+HTML rumgespielt, weshalb Java auch nahe lag
Bete, dass du das NIE zu jemandem sagst der mit Java verwachsen ist. JavaScript IST NICHT Java, nicht mal ansatzweise und hat auch ÜBERHAUPT NICHTS miteinander zu tun.


Java allgemein auf eine "Spielerei" herunterzustufen, so wie du es machst, ist Blödsinn. Java ist für alle (Desktop-)Anwendungen geeignet, die keinen tiefen Hardwarezugriff bzw. maximale Power benötigen. Zudem gibts den ganzen (Web-)Enterprise-Markt sowie Business-Apllikationen, bei denen Java als Sprache sehr beliebt ist.

Abschliessend gebe ich dir aber Recht: Es geht hier um Programmierung für OS X, und wenn man für OS X programmieren will und nicht platformunabhängig entwickeln will, dann gibts nix anderes als Objective-C mit Cocoa und Xcode.
0
sierkb03.06.0919:42
Johloemoe
jonny91
vorher hab ich immer mit Javascript+HTML rumgespielt, weshalb Java auch nahe lag
Bete, dass du das NIE zu jemandem sagst der mit Java verwachsen ist. JavaScript IST NICHT Java, nicht mal ansatzweise und hat auch ÜBERHAUPT NICHTS miteinander zu tun.

Er hat doch nur beschrieben, wie bzw. über welchen Weg er damals zu Java gekommen ist. Nichts weiter. Ich denke schon, dass er mittlerweile (wenn nicht gar schon vorher) die Unterschiede doch schon etwas genauer auseinanderzuhalten weiß...
Abschliessend gebe ich dir aber Recht: Es geht hier um Programmierung für OS X, und wenn man für OS X programmieren will und nicht platformunabhängig entwickeln will, dann gibts nix anderes als Objective-C mit Cocoa und Xcode.

Nein. Es geht, wenn man sich die Überschrift und den Inhalt des Ausgangs-Threads anschaut, um Folgendes:
Unter OS X Entwickeln...was gibt es da?
und
Nun möchte ich jedoch damit beginnen auch unter OS X Software zu entwickeln.

Kein Wort von Für. Oder habe ich da was nicht richtig verstanden?

0
Johloemoe
Johloemoe03.06.0920:54
sierkb
Kein Wort von Für. Oder habe ich da was nicht richtig verstanden?

Hmmh, haste Recht. Ich glaube allerdings zu meinen, dass er FÜR OS X entwickeln will, auch wenn ers nicht geschrieben hat. Zumindest geben mir seine Antworten das Gefühl. Is ja auch egal, denn in meinem Beitrag gings ja mehr um Java
0
Stefab
Stefab04.06.0915:15
ExRabbitPro: Zum Glück sind alle deiner Meinung.

Einfacher und übersichtlicher wie in RB geht es kaum. Da ist der Code immer dort, wo er sein soll, im Objekt, in der Klasse, in der Methode. Man bekommt ja im Beispiel vom Button nun auch alle Events schön sauber aufgelistet und muss nicht erst blöd rumsuchen, welche Events mit diesem Objekt überhaupt möglich sein. Mit RB kann man so leicht und so schnell, so ziemlich alles machen was man will. Und der Code steht immer genau dort, wo er hingehört und nicht in einer langen, unübersichtlichen Wurst. Natürlich kann man auch eine Subklasse von einem Button erstellen, der um eigene Funktionen erweitert wird. (oder anderen GUI-Elementen). Man kann sich dann aussuchen, ob man den Code nun ins MouseDown, MouseUp, Open, MouseOver oder sonst irgendein Event reinschreibt. Normalerweise steht der Hauptcode dann auch nicht direkt im Mousedown, sondern man ruft eher ne Methode daraus auf, aber das kann man ja machen, wie man will. Steht in nem Event Code, dann wird das fett dargestellt, steht kein Code drin, dann normal. Also sieht man auch auf den ersten Blick, wo was drin steht. Und das ist einfach mal SUPER-Objekt-orientiert. Nicht über etwas schimpfen, was man nichtmal richtig kennt.
Größter Kritikpunkt, zumindest noch bei RB2007-5 ist die nervige Tatsache, dass man Computed Properties nicht als Array anlegen kann. Aber abgesehen davon ist RB um ein vielfaches übersichtlicher, als VB, nur eben leider nicht umsonst. Der Dot-Syntax ist übrigens auch sehr fein. Vieles haben VB und RB auch gemeinsam.
Mein damaliger OpenGL-Anfnag: Dazu gibts nen Welt-Editor, gab auch Anfänge von Client und Server, sollte man ein MMORPG werden, wurde aus Zeit und Personalmangel dann aber eingestellt. Die Landschaft wirkt so blockig, weil das unser System war, dem Spieler die Freihheit zu lassen, die Landschaft in beliebigen Maße zu manipulieren. (Bäume fällen, Löcher & Höhlen graben, etc. etc.) War ursprünglich eine 2D-Grafik von isometrischer Ansicht. Die Landschaft besteht aus so genannten Iso-Blocks. Das Jump'n'Run war ein reiner Spaß. Die gleichen Welt-Daten konnte man sowohl im 3D-Client, als auch im 2D-Client nutzen. Glaube aber, das Zeug läuft nicht mehr auf Intel-Macs. Wurde damals auch mit nem OpenGL-PlugIn gemacht, später bin ich auf direktes OpenGL umgestiegen, was aber nie vollständig fertig wurde (aus genanntem Zeitmangel)
0
ExMacRabbitPro04.06.0915:55
Stefab

Immer mit der Ruhe - Du kannst selbstverständlich machen was Du willst.

Mir zu unterstellen ich wüsste nicht von was ich rede ist aber etwas gewagt - Du kennst mich nämlich nicht. Ich habe Dir dass nämlich nicht unterstellt - ich habe nur angemerkt dass es verdammt schlechter Programmierstiel ist, die Event-Methoden von GUI Elementen mit Applicationslogik vollzuschreiben. Die Wiederverwendbarkeit von Business-Funktionen ist so nämlich gleich null und es gibt nichts fataleres, wenn sich zum Schluss die Event-methoden gegenseitig aufrufen (am besten noch gotFocus und lostFocus... ), weil da eine Funktion drin steckt, die man an einer Stelle braucht.

Und "einfach mal SUPER-Objekt-orientiert" ist dass auch nicht - ganz im Gegenteil. Denn das Model-View-Controller Konzept ist nämlich ein Architektur Designpattern aus der Objekt-Orientierung - dass ist nicht aus meinem Mist gewachsen.

Und diese "unübersichtliche Wurst" nennt man Controller.
Übrigens - genau so wie RB (alle Methoden werden angezeigt, gefüllte fett hervorgehoben, etc...) war VB früher mal. Aber dass war möglicherweise vor Deiner Zeit.


In diesem Sinne - happy hacking!
0
Stefab
Stefab04.06.0916:43
ExMacRabbitPro: Sorry, wollte nichts unterstellen.

Was du mit dem zweiten Absatz sagen willst, ist mir nicht wirklich ersichtlich. Es besteht doch für das Ausführen vom Programm kein Unterschied, ob die Event-Methoden in den UI-Elementen drin stehen, oder ob man sie mühevoll selber schreibt. Das Ergebnis ist doch das gleiche, wobei ich eben ersteres wesentlich einfach finde.
Und normalerweise steht in so einem Eventhandler ja nicht viel mehr drin, als eine (oder 2) weitere Methode, die man aufruft (evt. mit gewissen Parametern und evt. einem Return-Type, der vielleicht wieder für ne andere Methode/Eigenschaft oder sonst was da ist).
Ich wüsste nicht, wie man es einfacher oder übersichtlicher für den Programmierer machen kann.

Und VB 6 kannte ich nicht. Habe zwar schon vom C64 über Amiga und Mac alles mögliche ausprobiert, aber am schönsten zum programmieren ist immer noch RB. In Visualbasic .NET hab ich mir gezwungenermaßen eingearbeitet, aber komfortabel ist was anderes.

Natürlich ist nicht alles von RB gut, Compiler ist nicht unbedingt so toll. Ok, wegen Geschwindigkeit vom Ausführen vom Code brauch ich mich nicht beklagen, sonst hätten die vielen Tausenden Vertex-Transformationen jedes Frame auf nem G3 damals wohl auch nicht flüssig funktioniert. Aber die Programme werden riesig, und die Kompatibilität von alten Apps auf neueren Rechnern lässt auch zu wünschen übrig (zumindest am Mac), ebenso wie die Sache, dass neue RB-Versionen immer wieder Änderungen im alten Code wollen.

Aber das Programmieren in der IDE an sich ist auf jeden Fall eine tolle Sache, ich könnte es kaum besser vorstellen. Leider muss ich aber nun versuchen auf XCode umzusteigen, weil RB keine iPhone-Apps erstellen kann. Wird sicher fein, wenn ich da mal vorankomme, ist ja auch gut, um Mac-Apps zu erstellen. Nur Windows und Linux fällt dann raus. Aber falls ich dafür was machen muss, greif ich eben aufs gute, alte RB zurück, ich glaub das ist ähnlich wie Fahrrad-Fahren, man verlernt es nie (im Gegensatz zu OpenGL, wo ich sicher schon die Hälfte vergessen habe, und damals war noch alles ohne Shader).

PS: Bitte nochmals um Erklärung des 2. Absatzes, wenn es nicht zu viel Mühe macht. Verstehe nicht, wieso sich Events gegenseitig aufrufen sollten, und was daran anders sein soll, wenn man die Events in einen langen Code reinschreibt.
0
ExMacRabbitPro04.06.0917:35
Stefab

ok - ich versuche mal besser zu erklären was ich gemeint habe.
Mal sehen ob es mir gelingt mit meinem Geschreibsel hier....

Extrem schlecht ist, wenn in die Event-Methoden der GUI Elemente - also z.B. "Button_click", direkt der gesamte Applikations Code der bei dem Click ausgeführt werden soll, hineincodiert wird. Da habe ich schon Sachen gesehen - dass haut einem um - sogar Connect auf die DB und die SQL Zugriffe werden da manchmal hinein gesteckt.

Verstreut man auf diese Weise seine Applikationslogik über die GUI-Events in den Forms, ist man später auf einer Art "Schnitzeljagt" durch die GUI-Klassen um herauszufinden, was das Programm eigentlich macht. Vor allem, wenn die App wirklich gewartet und weiter Entwickelt wird und mehrere Leute am programmieren sind, bzw. Entwickler das Projekt übernehmen, die gar nicht die initialen Entwickler waren.

Als Krönung kommt dann der Gegenseitige Aufruf von Event-Methoden, weil z.B. in Button2_click etwas gebraucht wird, dass in Button1_click implementiert ist.

Dass sieht dann so aus:

Sub Button2_Click

... Code ...

'hier wird die Funktionalität verwendet die in Button1 implementiert ist
Call Button1_Click

... Code ...

End Sub

Ganz schwierig wird es, wenn man bei diesem Programmierstil irgendwelche Status-Werte pro GUI-Event vernünftig verwalten möchte - wie z.B. der Mauszeiger (Pfeil-Cursor/Sanduhr Cursor) oder das dis/enablen von UI-Elementen.

Denn wenn in jeder Event-Methode z.B. zu Beginn die Maus auf Sanduhr gesetzt wird und am Ende wieder auf den default Zeiger, dann wird durch den Code oben der Sanduhr-Cursor kaputt gemacht. Dass führt dann zu Anwendungen bei denen bei Aktionen die Maus zwischen Pfeil und Sanduhr flackert oder die GUI Elemente flackern. Da weiss man sofort was los ist und dass der Entwickler eine Flasche war. Ich habe auch schon konstrukte gesehen wo sich der durchlauchte Entwickler mit status-flags gemerkt hat, ob er jetzt einen Event aus einem anderen Event aufruft oder nicht, um dann darin verschieden zu reagieren! *schauder*

Ganz anders, wenn es einen zentralen Event-Handler gibt der immer sauber durchlaufen wird, dann ist dass gar kein Problem. Zu Beginn Maus auf Sanduhr - am Ende wieder auf Pfeil - fertig. Dass mit der Maus ist jetzt nur ein simples Beispiel um die Problematik zu verdeutlichen - bei komplexen Applikationen kommen da schnell eine Menge ähnlicher Dinge zusammen wie z.B. Transaktionssteuerung, Statuszeilenmeldungen, Messageboxen, etc...

Daher gefallen mir die Ansätze von Obj-C und Cocoa auch so gut - da geht es gar nicht, Code in die GUI-Elemente zu schreiben sondern man kann lediglich mit dem Interface Builder die Events der GUI Elemente im Nib-File mit den Actions des Controller verbinden. Das zwingt einem dazu, die Architektur sauber zu halten.
Naja, jedenfalls an dieser Stelle, ansonsten kann man natürlich immer noch genug Mist bauen...

Ich hoffe jetzt ist klarer, was ich gemeint habe...
0
Stefab
Stefab05.06.0909:12
ExMacRabbitPro: Kann mir schon vorstellen, was du meinst, aber soweit ich das sehe (und grade irgendwie versucht habe), ist es in RB gar nicht möglich, ein Event im Code aufzurufen. Das kann normal nur der User. Wüsste auch nicht, wie man Kontrolle über den Mauspfeil bekommen kann oder so, um damit auf Koordination X,Y zu klicken.

Hab jetzt nen PushButton1 und PushButton2, in das Action-Event vom 1 hab ich reingeschrieben: MsgBox "Das ist fein!"
Ins Action-Event von Pushbutton2 kann ich aber nicht schreiben, PushButton1.Action, kann ich schon, nur startet das Programm dann nicht, mit der Fehlermeldung "Diese Methode oder Eigenschaft existiert nicht.", dabei ist der falsche Code gelb markiert.

Und die Call Funktion gibt es zwar, aber die ist nur dafür da, wenn man Methoden aufruft, aber ein Objekt, welches diese zurückgibt, verweigern will. (hab ich eben nachgesehen)

Also, um jetzt in beiden Buttons den gleichen Code aufzurufen, gibt es nur die Mögichkeit, eine Methode zu erstellen, und aus beiden Buttons im Action-Event die Methode aufzurufen, zB. eben: Nachricht schreib ich in diese Methode dann rein: msgbox "Das ist fein!", kann ich ins Action-Event von beiden Buttons eben Nachricht schreiben. (viel anders gehts nicht, ausser natürlich, dass die Methoden wo anders liegen können)
Ich weiß nicht, vielleicht gibt es irgendeinen Trick, aber ich kenn ihn nicht.
0
Stefab
Stefab05.06.0909:23
PS: Obwohl, was auch geht: Ich kann eine Klasse erstellen, die als Super "PushButton" hat. Dort kann ich dann ins Action Event Code reinschreiben.
Dann setz ich normale PushButtons irgendwo ins Fenster und ändere deren Super von PushButton in meinen eigenen Klassennamen. Dann wird immer bei allen Buttons dieses Action-Event aufgerufen. Allerdings hat der Button dann kein weiteres Action-Event mehr, weil das schon im Super vergeben ist.
Man könnte auch noch ein Array an PushButtons anlegen, die teilen sich ja auch alle das gleiche Action-Event. (nur mit nem anderen Index)
Fazit: Event ≠ Methode
0
ExMacRabbitPro05.06.0909:47
Stefab

Ich habe mit RB noch nie etwas gemacht. Aber ich habe mir gerade mal die Demo geladen und ein paar Minuten damit herum gespielt.
Das kuriose ist, dass ich mit PushButton2_Action() die Action-Methode des Button2 von extern aufrufen kann. Dies ist in RB aber scheinbar wirklich nicht vorgesehen denn innerhalb der IDE läuft er in dieser Zeile immer auf einen Haltepunkt?!
Compiliert man dass Programm, läuft es aber. Oh weh, oh weh....

In VB war/ist es aber problemlos möglich die Event-Methoden der GUI Elemente aufzurufen da sie aus Sicht des Systems gewöhnliche Subs sind.
Aber der Punkt auf den ich hinaus wollte ist sowieso ein anderer und hat der konkreten Implentierungsmöglichkeit in verschienden Programmiersprachen nix zu tun sondern ist allgemeingütig. Der Punkt war nämlich: Komplexe GUI Apps bleicen zur wartbar, wenn in einer Model-View-Controller Architektur gearbeitet wird und diese verbietet in die Event-Methoden der GUI-Elemente mehr wie "Call Controller.doSomething()" hinein zu schreiben (wie von Johloemoe weiter Oben bereits korrekt geschrieben).
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.