• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Welche Programmiersprache?

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Hallo,

ich würde gerne in die Programmierung des Macs einsteigen. Nun frage ich mich, welche Programmiersprache wohl geeignet ist. Am PC mache ich viel mit AutoHotkey (ähnlich wie AutoIt), welche hautpsächlich dazu gedacht ist, Aufgaben zu automatisieren. Zudem haben ich Erfahrung mit Javascript und PHP. In Delphi/Pascal hatte ich auch schon mal reingeschnuppert.

Ich möchte z.B. recht schnell eine grafische Oberfläche gestalten können und auch sollte die Lernkurve nicht zu hoch sein. In AppleScript habe ich schon mal reingeschnuppert, doch die Syntax will mir nicht so recht gefallen, wirkt alles recht unlogisch. Zudem habe ich das Gefühl, dass AppleScript für größere Projekte zu langsam ist, aber das ist eben nur ein Gefühl. Ist AppleScript eine reine Interpreter-Sprache oder wird es vor der Ausführung noch irgendwie kompiliert (wie bei AutoHotkey)?

Mit RealBasic kann man ja einfach plattformunabhängige Anwendungen erstellen, was sicher auch sehr reizvoll sein kann. Ich befürchte aber, dass es durch die plattformunabhängigkeit recht beschränkt ist. Beim Namen Basic denke ich auch nicht gerade an Tempo.

Dann gäbe es da noch Java, doch das soll ja am Mac nicht so flott sein. Bei Windows ist die Optik bei Java-Anwendungen meist zum Kotzen und wenn's am Mac noch langsamer als unter Windows ist, dann kann man's gleich vergessen.

Von C++ habe ich keinen blassen Schimmer, ich weiß nur, dass es die ideale Sprache wäre, weil da alles Möglich ist und keine Grenzen bestehen. Jedoch soll C++ nicht mal an einem Abend gelernt sein.

Gibt's noch andere Hochsprachen für den Mac, welche eine vernünftige GUI ermöglichen?

Achja, eine Aufgabe sollte die Programmiersprache beherrschen:
* Ich möchte Fenster von anderen Anwendungen manipulieren, also verschieben und vergrößern etc.

Ich hoffe ihr könnt mir hier weiterhelfen.
 

Demo

Süssreinette (Aargauer Herrenapfel)
Registriert
02.04.04
Beiträge
411
Tekl schrieb:
Dann gäbe es da noch Java, doch das soll ja am Mac nicht so flott sein. Bei Windows ist die Optik bei Java-Anwendungen meist zum Kotzen und wenn's am Mac noch langsamer als unter Windows ist, dann kann man's gleich vergessen.

Java + SWT statt Swing und schon ist die Welt (halbwegs) in Ordnung. *mein*
 

Dadelu

Reinette Coulon
Registriert
06.07.05
Beiträge
939
Neeeee das mit der Grafik kannst du so nicht sagen! Klar wenn du die Container bei Java so lässt, wie du sie eingibst (keine Extra Look angibst) siehts halt scheisse aus.. Aber für das kann man ja den Container den Look von Windows verpassen, dann merkst du kein unterschied.. UND langsam ist Java allemal nicht..
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Also, fast alles was ich an Java-Anwendungen in den Fingern hatte ist langsam im Vergleich zu nativen Anwendungen. Eclipse (bis jetzt nur am PC gesehen), Komodo (ebenso nur PC), CyberDuck (am Mac) diverse Java-Filesharing-Clients (überall lahm).
 

Dadelu

Reinette Coulon
Registriert
06.07.05
Beiträge
939
Tekl schrieb:
Also, fast alles was ich an Java-Anwendungen in den Fingern hatte ist langsam im Vergleich zu nativen Anwendungen.
Da geb ich dir absolut Recht.. Jedoch ist der Grund dafür, dass JAVA eigentlich eine OO Programmiersprache ist.. Daher kannst du sie nicht mit nativ-anwendungen in einem Satz nennen.. :D Sonst ist es logisch, dass es lahm ist :D
 

commander

Baldwins roter Pepping
Unvergessen
Registriert
25.02.04
Beiträge
3.206
Das liegt an den jeweiligen Implementierungen: java wird dann angewandt, wenn komplexe Applikationen (z.B. IDEs) gestrikt werden sollen, da java sehr gut wartbar ist. Ich kann nur sagen: IntelliJ als meine LieblingsIDE ist unglaublich schnell, wenn man bedenkt, wieviel Daten da verwaltet werden müssen.

Wenn jemand aber seine Applikation nicht swinggerecht strickt (und da gibt es einiges zu beachten), dann hängt die Oberfläche oft, das macht einen sehr lahmen Eindruck - ein Manko von Swing. Wenn man die Kniffe kennt, lässt sich das aber vollkommen umgehen.

Fazit: Ich empfehle wie immer Java, weil es wirklich unglaublich viele freie Libraries geht und java eine sehr reine Sprache ist. Du kannst am Mac natürlich auch ObjectiveC (mit Cocoa) programmieren, das ist zwar eine Nische und gibts nur am Mac, ist aber auch eine schöne Sprache und die Developertools liegen jedem Mac bei.

Gruß,

.commander
 

mullzk

Linsenhofener Sämling
Registriert
04.01.04
Beiträge
2.529
ich habe java sehr gerne und würde commanders aussage unterstreichen, dass java durchaus sehr schnell sein kann - mit einer ausnahme allerdings: ich habe bis dato noch nie ein schnelles swing-interface auf os x gesehen. java-guis sind zwar auf os x schöner als auf windows, aber fast durchs band langsamer (und dies obwohl sie meist schon auf windows nicht speziell performant sind...).

von c++ würde ich die hände lassen, das ist nun wahrhaft eine hässliche sprache.

objective-c ist wie c++ eine erweiterung von c um objekt-orientierte mechanismen und ist darin sehr stark. in vielerlei hinsicht ist es sehr ähnlich wie java, ausser dass der syntax anders aufgebaut und die sprache wesentlich dynamischer ist sowie dem umstand, dass obj-c keine garbage-collection hat, was mich nur nervt....
sehr viele programme unter os x sind auf obj-c geschrieben, das cocoa-framework von apple ist schlicht nur geil, xcode+interface builder sind auch sehr stark (auch wenn xcode fürs refactoring nur ungenügende noten kriegt).
der grosse nachteil von obj-c: du programmierst mehr oder weniger nur für os x, portieren wird recht aufwändig. und die lernkurve ist ziemlich steil.

ansonsten kommt es sehr darauf an, was du genau machen willst - für kleine, applikationsnahe sachen kann appleskript ganz cool sein, für server/client-sachen ist java IMHO vom besten überhaupt, für kleine apps ist obj-c eine der geilsten sprachen überhaupt, wenn man die grundlegenden sachen mal kennt, ist das bauen einer vollwertigen klein-applikation so schnell wie sonst nirgends (weil cocoa unzählige sachen automatisch mit sich bringt)
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Hi,

ich habe mir mal den Artikel zu Objective-C bei Wikipedia durchgelesen und bin geschockt. Sieht alles verdammt kompliziert und kryptisch aus und gefällt mir gar nicht. Ist Java auch so kryptisch und unleserlich? Was ist von PyObjC zu halten. Lässt sich damit was realisieren, ohne dass z.B. Python extra installiert werden muss? Wo hat AppleScript seine Grenzen? Eigentlich hört es sich ja an, als sei Java die beste Lösung, aber ich will z.B. für die Ausgabe ein Bildschirmmeldung nicht zig Befehle verwenden, sondern sowas wie:

msgbox, Alles in Ordnung!
oder
alert ("Alles in Ordnung!");

Sorry, ich weiß auch nicht wo ich nachforschen kann. Gibt's irgendwo einen Vergleich von Programmiersprachen mit Codebeispielen?
 

Demo

Süssreinette (Aargauer Herrenapfel)
Registriert
02.04.04
Beiträge
411
Tekl schrieb:
Komodo (ebenso nur PC).

Soweit mir bekannt,ist Komodo doch eine XUL Anwendung.(?). Und warum die Applikationen vorallem aufm Mac so langsam sind, weiss der Geier.

Wenn Du oefter entwicklungstechnisch die Plattform wechselst, duerfte wie gesagt Java fuer Dich erste Wahl sein. Oder Python, fuer das es eine Cocoa Anbindung gibt.
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Danke mullzk,

verstehe ich das richtig, eine schnelle GUI ist mit Java nicht möglich? Gibt's vielleicht noch was schnelleres als Swing? Was nutzt den Eclipse und jEdit? Ist das Buch Java für Mac OS X eigentlich empfehlenswert? Ein Grundlagen-Buch zu Java habe ich irgendwo noch.

Gibt's zu ObjC gute Bücher oder Seiten im Netz? Bei Amazon habe ich nur englische gefunden.

Zu AppleScript gibt's scheinbar auch nichts aktuelles in Deutsch.

Ich möchte z.B. alle Dateien eines Verzeichnisses durchsuchen und das Ergebnis grafisch ausgeben. Mit PHP oder AutoHotkey geht das mit ca. 10 Zeilen Programmcode.
 

commander

Baldwins roter Pepping
Unvergessen
Registriert
25.02.04
Beiträge
3.206
Tekl schrieb:
(...)
Ich möchte z.B. alle Dateien eines Verzeichnisses durchsuchen und das Ergebnis grafisch ausgeben. Mit PHP oder AutoHotkey geht das mit ca. 10 Zeilen Programmcode.

Das geht mit keiner Hochsprache, zumindest nicht direkt, da musst Du Dir halt die Kapslungen einmal selber schreiben.

Ausserdem schau mal hier , JFace vereinfacht vieles schon deutlich.

Ausserdem bringt jede IDE einen GUI-Builder mit, wers mag....

Gruß,

.commander
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Danke,

> Das geht mit keiner Hochsprache, zumindest nicht direkt,
> da musst Du Dir halt die Kapslungen einmal selber schreiben.

Was gibt es denn für Nicht-Hochsprachen neben AppleScript noch so am Mac die auch Systemnah arbeiten?

> Ausserdem schau mal hier , JFace vereinfacht vieles schon deutlich.

Danke, interessanter Artikel. Ich wollte aber keinen Explorer nachbauen, sondern einfach ein Verzeichnis nach bestimmten Dateien durchsuchen und in Textform in einem Dialog ausgeben. Mit AppleScript scheint das möglich zu sein, mit RealBasic wahrscheinlich auch.

Sind eigentlich aufwändigere Anwendungen mit AppleScript möglich? Z.B. sowas wie das Beispiel mit JFace, oder wird's dann alles zu langsam?
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.059
Tekl schrieb:
Eigentlich hört es sich ja an, als sei Java die beste Lösung, aber ich will z.B. für die Ausgabe ein Bildschirmmeldung nicht zig Befehle verwenden, sondern sowas wie:

msgbox, Alles in Ordnung!
oder
alert ("Alles in Ordnung!");
Schlechte Programmiersprachen zeichnen sich dadurch aus, daß sie den Sprachkern mit überflüssigen Sprachkonstrukten verwässern (genau das was Du willst). Eine gute Programmiersprache ermöglicht es mit dem Sprachkern Bibliotheken/Frameworks zu formulieren, so daß man Funktionen aus diesen nutzen kann, um zum gewünschten Ziel zu kommen.

Bei Deinem Wissensstand wäre zwecklos Dir erklären zu wollen, warum dieses Vorgehen im Detail besser ist. Kurz und knapp angerissen: Programmiersprachen, die eine klare Trennung erlauben, ermöglichen eine bessere Softwarewartung, und ermöglichen es die Software schneller zu schreiben. Desweiteren gibt es weniger Coderedumdanz.

Sorry, ich weiß auch nicht wo ich nachforschen kann. Gibt's irgendwo einen Vergleich von Programmiersprachen mit Codebeispielen?
Das bringt nichts, weil Mini-Beispiele keinerlei Informationsgehalt haben. Programmiersprache für größere Projekte erscheinen in diesen simple Beispielen überaus kompliziert, was dann den Anschein erweckt Programmiersprachen für einfache Projekte seien besser. Der Vorteil einer Programmiersprache für größere Projekte erschließt sich einem nur, wenn man ein großes Projekt zu realisieren hat, oder man bereit ist, die notwendige Zeit zum Erlernen der Konzepte auch für einfache Programme aufzubringen.

Wenn Du zur Zeit keinerlei Motivation aufbringst, Dich mit einer Programmiersprache, den Grundkonzepten von objektorientierter Programmierung und Aspekten von Softwaredesign auseinanderzusetzen, dann solltest Du eine Programmiersprache wählen, die Dir den schnellen "Erfolg" garantiert. Aber erwarte nicht, daß so eine Sprache auf Dauer eine gute Wahl ist.

Programmiersprachen wie C++, Java, Objective-C erfordern eine längere Zeit des Lernens. Objective-C ist eine relativ einfache Sprache, aber dafür braucht man bei Cocoa viel Zeit die Konzepte des Frameworks zu verstehen. Diese Entwurfsmuster tauchen auch in C++ oder Java Frameworks auf, so daß man davon profitiert, wenn man Entwurfsmuster versteht und in der Lage ist die Entwurfsmuster von einer Programmiersprache auf die andere zu transferieren.

Früher oder später muß man sich also mit Entwurfsmuster befassen, ihren sprachneutralen Kern erkennen und wissen, wann man welches Entwurfsmuster für welche Problemlösung verwendet.

Die GUI-Programmierung egal in welcher OO-Sprache profitiert enorm von MVC-Entwurfsmuster (Model-View-Controller Design Pattern). Das wird unter anderem in diesem Buch erklärt http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0471958697.html
 
  • Like
Reaktionen: michast

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Danke tjp,

mir soll mein Computer eigentlich Arbeit abnehmen, dewegen will ich gerne viel vorgekautes haben. Wenn ich für die Ausgabe einer Ja/Nein-Abfrage mehr als 3 Zeilen Code brauche, dann lass ich es lieber. Ich will kein richtiger Programmierer werden, dazu habe ich auch zu wenig Freizeit. Ich will einfach einige Sachen automatisieren und damit auch andere was davon haben ggf. eine nette GUI dazu machen. Käme ich denn mit Java oder ObjC mit entsprechenden Frameworks dem Ziel nahe? Vieles scheint ja auch mit AppleScript zu gehen, doch weiß ich nicht, wo es seine Grenzen hat.

Ist ja nicht so, dass ich keine Motivation hätte z.B. ObjC order Java zu lernen, doch mein Zeitrahmen lässt es nicht zu, da ich in der Woche vielleicht 5 Stunden habe. Bei AutoHotkey am PC brauchte ich 10 Minuten um das Konzept zu verstehen und alles andere steht in der Hilfe, also welche Befehle es gibt und was man damit machen kann. Ähnlich ist da PHP oder JavaScript, da erschließt sich das meißte auf den ersten Blick und man hat eine zentrale Dokumentation, wo man alle Befehle nachschlagen kann. Sowas habe ich zu AppleScript noch nicht entdeckt, evtl. bin ich auch blind. Zumindest gibt es bei fischer-bayern.de eine nette Einführung.

Bei Wikipedia wird AppleScript mit C++ verglichen. Dort steht ein für mich deutlich klareres (im Gegensatz zu AppleScript) C++-Beispiel:

getTIFF("my bitmap")->getRow(3)->getPixel(7)

Gilt das auch so für ObjC? Lässt sich da auch so leicht ein Pixel aus einem Bild auslesen? Wahrscheinlich braucht man dafür auch Bibliotheken oder Frameworks. Sind die schon alle dabei? Wäre das bei Java auch so einfach?
 

michast

Stahls Winterprinz
Registriert
13.09.04
Beiträge
5.136
Hi Tekl, irgendwie bekomme ich durch die ganzen Postings den Eindruck, dass Du zwar nach einer Programmiersprache suchst, aber eigentlich nur Skripten willst. Ich finde, tjp, .commander, mullzk und all die anderen haben ganz toll versucht, Dir die Problematik einigermaßen verständlich zu machen. Dennoch kommt dann wieder die Aussage "ich will für eine ja/nein-Abfrage nicht mehr als 3 Zeilen". Um ein kurzes "hallo Welt" auf den Bildschirm zu zaubern, bedarf es aber bei den beschriebenen Programmiersprachen eben mehr, als nur 3 Zeilen (ich kenn nur Java und C#, da sind es 'n paar mehr, 1 oder 2 ;) ), aber darum geht es ja auch nicht. Dafür lassen sich mit diesen Sprachen komplexe Projekte verwirklichen, was mit Deiner 3-Zeilen Sprache nicht möglich ist.

Ich glaube, das beste für Dich ist nicht das Erlernen einer Programmiersprache, Du setzt Dich am besten einfach nur mit Apple-Script auseinander. Da kannst Du dann mit wenigen Zeilen Dinge ausführen und sogar komplexere Sachen sind unter Umständen möglich. Und, was noch viel besser ist, viele Dinge sind bereits realisiert und stehen zur freien Verfügung ;).

Gruß,
Michael
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Sorry Leute,

mir war wohl nicht klar, dass meine Frage nach einer Programmiersprache mehr eine Frage nach einer Skriptsprache war. Ich bin davon ausgegangen, dass Sprachen, womit man programmiert auch Programmiersprachen genannt werden. Ich werde mich also erstmal in AppleScript versuchen, da es ja am naheliegensten ist. Zwar mag ich die Syntax nicht, aber eine Alternative scheint es ja nicht zu geben.
 

michast

Stahls Winterprinz
Registriert
13.09.04
Beiträge
5.136
Tekl schrieb:
Sorry Leute,

mir war wohl nicht klar, dass meine Frage nach einer Programmiersprache mehr eine Frage nach einer Skriptsprache war. Ich bin davon ausgegangen, dass Sprachen, womit man programmiert auch Programmiersprachen genannt werden. Ich werde mich also erstmal in AppleScript versuchen, da es ja am naheliegensten ist. Zwar mag ich die Syntax nicht, aber eine Alternative scheint es ja nicht zu geben.
Ist doch kein Problem ;). Nur, es gibt natürlich durchaus einen Unterschied zwischen einem Programm und einem Skript. Für Deine Erfordernisse wird wohl eine Skript-Sprache die bessere Wahl sein.

Gruß,
Michael
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.059
Tekl schrieb:
Käme ich denn mit Java oder ObjC mit entsprechenden Frameworks dem Ziel nahe?
Absolut, nur mußt Du am Anfang mehr Zeit zum Lernen investieren. Aber anschließend bist Du in der Lage schneller saubere Programme zu schreiben. Bei wenigen kleinen Programmen mag sich das nicht lohnen. Wenn es aber viele kleine Programme oder wenige große sind lohnt sich dieses Vorgehen definitiv.

Sind die schon alle dabei? Wäre das bei Java auch so einfach?
Programme für MacOS X die man in Objective-C schreibt, schreibt man für das Cocoa FrameWork. Die Dokumentation für Cocoa ist beim Developer Paket dabei. Bei Java ist auch eine ganze Menge an Frameworks vorhanden. C++ hingegen kommt von Haus aus ohne bestimmtes FrameWork, da hängt es davon ab für welche Computer Plattform man Programme schreiben will und benutzt dann das entsprechende Framework (QT, MFC, ...)

Man kommt aber meiner Meinung nach weder bei Objective-C/Cocoa noch einer anderen Sprache/Framework ohne zusätzliche Literatur aus, insbesondere als blutiger Anfänger.

Die eigentliche Herausforderung ist es nicht so sehr die Sprache selbst zu lernen (C++ ist auf Grund seines Multiparadigmenansatzes sehr mächtig und dementsprechend kompliziert. Aber unterschätze den Aufwand bei den anderen Sprachen für einen Anfänger nicht!) sondern die Frameworks und die in ihnen benutzen Konzepte (Entwurfsmuster) zu verstehen.

Hinzu kommt, daß Du als erstes lernen solltest was OO Programmierung ist, falls Du Dich für eine der OO Sprachen entscheiden solltest. Mir ist das in den vielen Jahren so in Fleisch und Blut übergegangen, daß ich da gar nicht mehr darüber nachdenken muß.
 

osfreak

Zuccalmaglios Renette
Registriert
19.12.04
Beiträge
262
Tekl schrieb:
In Delphi/Pascal hatte ich auch schon mal reingeschnuppert.

Hallo,

dann nimm doch weiter Pascal. Unter

www.freepascal.org und
www.microbizz.nl

sind zwei Pascal-Compiler aus der Open-Source die sich beide in XCode integrieren und Delphi-kompatibel sind. Und bei

http://pascal-central.com

sind dann auch Diskussionsgruppen und Beispiele zu finden. Beide Systeme versprechen auch einen einfachen Übergang zu Mactel.

Thomas
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Hi,

danke für die vielen Antworten. Ich habe mich jetzt einfach mal für den Anfang für AppleScript entschieden. Die Anleitung von Ficher-Bayern ist sehr gut und ich denke AppleScript ist ein guter Einstieg, zumal man damit ja recht schnell einfache Sachen automatisieren kann und es mehr oder weniger systemnah arbeitet. Ich kann z.B. Fenster verschieben, was mir sehr wichtig ist.

Vielen Dank für die vielen ausführlichen Antworten und die kleinen Belehrungen. Ich werde sie im Hinterkopf behalten, falls mit AppleScript dann nicht mehr reicht. Dann werde ich aber wohl ObjC oder Java verwenden, je nachdem, wieviel ich noch mit Windows zu tun haben werde.