Welche Programmiersprache?

Im Web 2.0 Fieber :
Eclipse + Web Tools Platform Project
MySQL/hSQLDB mit als Datenbank
Java als Sprache als Background API (Application Programming Interface(http://en.wikipedia.org/wiki/Api)) mit diversen Bibliotheken wie iBatis, Hibernate, org.apache.commons etc
Frontend Adobe Flex / FlexBuilder
oder Adobe AIR (ehemals Apollo)
Links :
http://www.eclipse.org
http://www.adobe.com/go/flex
http://labs.adobe.com
http://www.apache.org
http://ibatis.apache.org
http://commons.apache.org/

Viel Spass beim lernen und erforschen.
Wenn Du fragen haben solltest, oder jemand anders.
PMs sind immer gerne gesehen.

Zu deinen Fragen : Photoshop und Konsorten sind in C++ oder nachfolger geschrieben.
Eclipse aber ist in Java geschrieben. Und es ist genauso schnell.
Der unterschied ist: Ein in C gschriebenes Programm muss auf der jeweiligen Platform uebersetzt werden fuer die Du es verwenden willst.
Fuer Linux den gcc (C Compiler) fuer Linux, fuer Windows den Windows Compiler und fuer MacOSX den MacOSX Compiler. Das entspricht dann 3 Vorgaengen.
In Java ist das etwas anders. Hier wird ein sogenannter ByteCode erzeugt. Dieser ByteCode ist Platformunabhaengig. Die Java VM (Virtual Machine), die es ja fuer alle gaengigen Betriebsystem gibt, uebersetzt dann diesen ByteCode und fuehrt ihn aus.
Es wird so einfach einen Applikation zu verteilen. Der weitere Vorteil von Java liegt noch darin, das, wenn du einen Oberflaeche mit SWING erstellst, SWING ist die GUI Komponenten von Java, ehemals AWT (AbstractWindowToolkit), und dieses dann auf dem Windows PC erstellst und ausfuehrst, sieht es so wie ein Windows Programm aus. (<< Schwerer Satz) Fuehrst Du nun dieses JavaProgramm auf dem Mac aus sieht es wie ein MacOS Programm aus.

Intel C Compiler (http://en.wikipedia.org/wiki/Intel_C++_Compiler)
... Compilers are available for Linux, Microsoft Windows and Mac OS X. ...

Eclipse gibt es nur einmal. Herunterladen - entpacken - starten. Unter Windows mit Eclipse.exe unter MacOSX/Linux mit Eclipse.sh oder Eclipse.app.
Die Dateien zum starten sind unterschiedlich, aber machen alles das gleiche: ssie fuehren einen java Befehl mit parametern aus.

Hoffe konnte dir etwas helfen.

mfg carsten
 
Zuletzt bearbeitet:
Den Schnelligkeitsunterschied wirst du am Anfang nicht bemerken. Das kommt erst wenn man komplexere Sachen schreibt :)
 
Java ist langsamer, das ist richtig. Das liegt einfach daran, dass Java in der Virtuellen Maschine läuft und zur Laufzeit interpretiert werden muss, was der Hauptunterschied zu klassischen Compilersprachen ist.
Das ganze hat sich allerdings mit der Zeit sehr stark verbessert. Es kommt nicht an nativen Code ran, das ist klar, aber von langsam kann man auch nicht unbedingt sprechen.
Was Java den Ruf eingebracht hat ist eigentlich Swing. Das ganze war eine lange Zeit sehr träge, hat sich aber auch stark verbessert und sollte für die meisten Anwendungsgebieten schon lange kein K.O. Kriterium mehr sein.
Wer heute bei ganz normalen Apps noch schreit Swing sei langsam, der macht es einfach falsch. Z.B. irgendwelche intensiven Operationen auf dem EDT, welcher dann natürlich die GUI freezen lässt, etc.

Würde mich dem dem langsamkeits Argument also nicht weiter aufhalten ersteinmal.

Photoshop ist mit C++ geschrieben und benutzt auf dem Mac soweit ich weiß die Carbon Libraries. iLife und iWork sind (auch soweit ich das weiß :D) in Objective-C geschrieben und benutzen größtenteils das Cocoa Framework, mit der Ausnahme iTunes, welches eine Carbon App ist.
 
Den Schnelligkeitsunterschied wirst du am Anfang nicht bemerken. Das kommt erst wenn man komplexere Sachen schreibt :)

Würde ich nicht so pauschal sagen, es kommt drauf an was man macht.
 
Ich gehe dabei davon aus das man ein wenig weiss was man tut, jedes, auch einfache Programme, kann man so schreiben dass es langsamer läuft ;)
 
Zuletzt bearbeitet:
Hehe, das stimmt allerdings... :D
 
Photoshop ist mit C++ geschrieben und benutzt auf dem Mac soweit ich weiß die Carbon Libraries. iLife und iWork sind (auch soweit ich das weiß ) in Objective-C geschrieben und benutzen größtenteils das Cocoa Framework, mit der Ausnahme iTunes, welches eine Carbon App ist.

Soweit ich das gelesen habe, macht Adobe auch viel mit dem Qt-Framework.
Mit Qt kann man C++ Programme für Windows, Linux und Mac OS in einem
Rutsch schreiben, muss sie dann nur jeweils auf der entsprechenden Plattform kompilieren (wobei m.e. Qt nur unter Windows und Linux einigermaßen zu gebrauchen ist).

C++, C, Objective-C und Cocoa solltest Du am Anfang vielleicht noch nicht machen. Das ist eher heftig zu erlernen.
Ich persönlich denke auch das Java als Einstieg ganz nett ist.
Ist nicht schwer zu verstehen, man lernt Objektorientierung und kann sich mit den verschiedenen IDE´s fix Oberflächen zusammen klicken.
Ausserdem bekommt man tonnenweise Tutorials und Bücher für Java.
 
und zur Laufzeit interpretiert werden muss

Nunja. Dank HotSpot-Compiler wird da nicht allzu viel interpretiert, das meiste ist nativer Code dann. ;)

Meine Meinung zum Thema:
Nimm dir einen Zettel, schreibe alle hier genannten Programmiersprachen drauf, hänge das Blatt an die Wand und schmeiße einen Stift gegen. Dann nimmst du die, die du getroffen hast. ;)

Es ist imo vollkommen egal mit was du anfängst. Eine Programmiersprache ist nur ein Werkzeug. Programmieren ist das was du lernen musst.
 
Wie ein Professor von uns stets zu sagen meint: A fool with a tool, is just a faster fool. Und wie -Nuke- sagt, die Programmiersprache hier ist das Tool :)
 
Ich hatte eine kleine Applikation auf meinem PC, die Verzeichnisse über das Netzwerk scannt, dort befindliche .rtf öffnet und die Anzahl der Zeichen abfragt. Das Ganze dient dazu, festzustellen, welcher Kollege wie viel geschrieben hat.

Ursprünglich war das Ganze in VBA/Access formuliert. Ich saß daran vllt insgesamt 1, 2 Wochen, weiß nicht mehr genau. Letztlich lief das Ganze so langsam, dass ich abends den Rechner einschaltete, das Scannen startete und am nächsten Morgen terminierte. Dann startete ich am nächsten Abend neu … Natürlich war das Ganze irgendwie nicht richtig funktionsfähig, da sich Word zuweilen über die Dateien beschwerte -- aus völlig unbekannten Gründen. Dann war eben eine Nacht für den Arsch.

Der Rechner ist weg. Es war aber wieder an der Zeit. Also habe ich das Ganze in Objective-C und Cocoa unter Einsatz von Core Data neu programmiert. Ich saß etwa 6 h daran. Das Ergebnis war allerdings, dass das Laden des CD-Dokumentes zu lange dauerte (etwa 2, 3 Minuten). Also habe ich mich gestern Abend um 19.30 Uhr erneut daran gesetzt und das Ganze ohne CD noch einmal programmiert.

Ergebnis:
Etwa 21.00 Uhr war ich fertig. Scannen und Laden geht dermaßen schnell, dass man nicht darüber sprechen muss. Mit Bindings habe ich für kost(fast)nix einen Live-Filter implementiert.
NSAttributedStrings versteht gleich rtf, so dass ich mich nicht um das Laden einer externen Applikation kümmern muss.

Noch Fragen?
 
anegmawad schrieb:

Ja: warum erinnert mich Deine Schilderung an eine weitere Variante von "wie fängt ein Informatiker einen Elefanten?" ;)


Zur Eingangsfrage:
Sprachen sind etwas sehr subjektives, das gilt auch für formale Sprachen ( also Programmiersprachen). Mit der Zeit erarbeitet man sich selbst eine gewisse Vorliebe für die eine oder andere Ausprägung. Die Frage welche denn nun die bessere sei ruft dann Evangelisten auf den Plan und man hat einen schönen Religionskrieg!

Beginnen würde ich immer mit einer interpretierten Sprache! Der Grund ist banal: man kann unmittelbarer prüfen was man da gerade lernt und Feedback ist beim lernen wichtig. Compilersprachen schaffen da zusätzliche Probleme das ist IMHO für den Anfang ungeeignet.

Aus einem ähnlichen Grund würde ich mir auch noch gar keine Gedanken um GUIs machen! Viele meinen man könne ein Programm einfach so zusammenclicken und dann sei man Programmierer. Dem ist nicht so. Man muß eine gewisse Planungs- und Denkweise sich selbst zu eigen machen, Lernen was Kontrollstrukturen sind. Verstehen wie imperative Algorithmen funktionieren und was man unter Objekten versteht und warum die ein so viel besserer Ansatz sind Probleme zu lösen. Das ist verdammt viel Stoff, wenn man den am Anfang dann noch mit der Komplexität einer GUI ( und derProgrammierung dafür) belastet ist ein scheitern fast sicher - zumindest bleibt irgendwo Wissen auf der Strecke!

Ich rate also erstmal zu einer Lernsprache. Natürlich sollte man da etwas nehmen, das auch später weiter Verwendung finden kann. Auch wenn man dann für Rich-Client GUI-Apps eher Java, Objective-C oder C++ verwenden wird. Auch wenn es sicher erstmal nur halb soviel Spaß macht Skripte in einem Terminal laufen zu lassen und auf eine Hochglanz GUI zu verzichten.

Welche Skriptsprache man lernen sollte, ja das ist wieder eine Glaubensfrage. Wenn Dir der Smalltalk-Ansatz zusagt dann wäre Ruby was für Dich. Python verfolgt einen leicht anderen Ansatz und hat vor allem eine wesentlich einfachere Syntax und ist somti leichter zu erlernen, also auch eine Alternative.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: scalar
Ich hatte eine kleine Applikation auf meinem PC, die Verzeichnisse über das Netzwerk scannt, dort befindliche .rtf öffnet und die Anzahl der Zeichen abfragt. Das Ganze dient dazu, festzustellen, welcher Kollege wie viel geschrieben hat.
Noch Fragen?
Ja. Werden die Kollegen nach Zeichen bezahlt? ;)


topic: Ich beschäftige mich gerade mit ruby und hab Spaß mit! :)
Der ruby Interpreter ist bei OSX mit installiert, per dltk (0.9) lässt sich mit Eclipse (ab 3.3) arbeiten. Macht Laune.
 
Ja genau, Ruby und Python sind bei Mac OS mit dabei! Im Web gibt es aber oftmals aktuellere Versionen der jeweiligen Interpreter! Für Python findet man Mac-Pakete auf www.python.org. Für Ruby müßte Wille nochmal aushelfen!
 
Für Ruby gibt es ganz Mac-like einen one-click installer. :) Aktuell ist Version 1.8.6.

Und hier steht, wie man dltk (dynamic language toolkit) in Eclipse 3.3 einbindet.
 
Die Frage ist doch, nach welchen Kriterien man eine Programmiersprache zum Lernen auswählt. Sie sollte

1.) einigermaßen leicht zu erlernen sein

2.) einer Philosophie entsprechen, die einem allgemeinere Einblicke in die Softwareentwicklung ermöglicht

3.) geeignet sein, damit auch wirklich etwas anzufangen.

Punkte 2 und 3 sprechen aus meiner Sicht gegen Basic, da fehlt mir zum einen das saubere Konzept, und zum anderen ist es wirklich nichts, was man unbedingt in eine Bewerbung schreiben möchte.

Punkt 2 spricht für mich gegen Skriptsprachen wie Python o.ä. Ohne ihren Wert schmälern zu wollen, finde ich es wesentlich einfacher, vom Allgemeinen (z.B. C oder Java) zum Speziellen (also Python) zu kommen als umgekehrt.

Wenn ich einen Programmierlehrgang halten sollte, würde ich am liebsten auch heute noch die ersten Einheiten in Pascal halten. Anweisungen, Variablen, Schleifen. Und dann würde ich mit den objektorientierten Themen bei Java weitermachen.

Um Java habe ich mich lange Zeit gedrückt, habe ich ganzen Kritiken gelesen und wollte es gern doof finden, weil das als "ernsthafter" Programmierer halt in war. Dann habe ich mich beruflich damit auseinandersetzen müssen, und was soll ich sagen... Ich mag es.

Das einzige, was aus meiner Sicht gegen Java als Einsteigersprache spricht, ist, dass man eigentlich schon für das erste Hello-World- oder Primzahlprogramm Klassenkonzepte u.ä. verstanden haben muss. (Oder man merkt sich einfach, wie das Gerüst aussehen muss, damit etwas geht.) Meiner Meinung nach gehören Klassen dorthin, wo man sonst mit Datenstrukturen anfangen würde -- also relativ an den Anfang, aber eben nicht ganz.

Wenn dort aber erstmal angelangt ist und sich mit der starken syntaktischen Anlehnung an C anfreunden kann, ist Java für mich die Lehrsprache der Wahl.

Und schließlich würde ich auch keinem Schüler zumuten wollen, für die erste Woche Pascal zu machen, um dann auf Java umzusteigen. Also müssen sie durch die Anfangsschwierigkeiten eben einfach durch.
 
MacGeb schrieb:
Punkt 2 spricht für mich gegen Skriptsprachen wie Python o.ä. Ohne ihren Wert schmälern zu wollen, finde ich es wesentlich einfacher, vom Allgemeinen (z.B. C oder Java) zum Speziellen (also Python) zu kommen als umgekehrt.

Den Punkt verstehe ich nicht!


Ob man mit OO anfängt oder nicht ist fast eine Glaubensfrage. Ich finde auch das mit dem OO Overhead zuviele elementare dinge verdeckt werden. Ein Hardcore-Smalltalker wird das anders sehen und z.B. Python allein deswegen ablehnen weil man es auch im non OOP-Stil nutzen kann ( und Ruby den Vorzug geben).
 
Gerade für einen Anfänger finde ich die »Skriptsprachen« besser. Die Ergebnisse sind sofort sichtbar, man verzichtet auf große Entwicklungsumgebungen etc.

Bei Ruby z.B. kann man einfach über den vorinstallierten Interpreter (im terminal einfach irb eingeben) gleich loslegen, ohne sich große Gedanken machen zu müssen.

Je nach Ernsthaftigkeit ergibt sich alles andere eh von allein. ;)
 
Zurück
Oben Unten