Gute/moderne Programmiersprachen

Jan-Michael

Jan-Michael

Aktives Mitglied
Thread Starter
Dabei seit
28.02.2005
Beiträge
397
Reaktionspunkte
0
Hallo Leute,

mich würde einfach mal interessieren, welche Programmiersprachen ihr bevorzugt und warum. Vorausgegangen ist diesem Thread ein Geschspräch mit einem guten Freund über eben das obige Thema. Jedoch ist mir aufgefallen, dass jede "halbwegs" moderne Sprache, die uns eingefallen ist, mehr oder minder starke Schwächen aufweist.

Java ist zwar ganz ok, aber die VM ist einfach unglaublich langsam. Darüber hinaus ist die Dokumentation der Sprache vielfach mehr fahrlässig, als Intuitiv. Gerade bei Swing scheint SUN doch eher getreu dem Motto: "It's a feature not a bug" zu arbeiten. Ausgangspunkt für diese Feststellung war ein Bug im GridBagLayout, der zwar schon seit Jahren bekannt ist, von SUN aber inzwischen als gegeben hingenommen wird. Die offizielle Diskussionsseite von SUN ist inzwischen als "closed" markiert mit dem Hinweis: "not a bug".

C++ besitzt zwar eine gute Standardbibliothek, die auch ausreichend gut dokumentiert ist, schade ist jedoch, dass die Sprache keine standardisierte Grafikbibliothek mitbringt. Wenn man seine Programme portieren möchte existiert zwar QT, aber wer will schon seinen standard-c++ code mit Signals und Slots versauen. Zumindest finde ich dies sehr ärgerlich und ich bin mit meiner Meinung nicht der Einzigste in meinem Bekanntenkreis.

Objective-C - ich bin zwar ein Fan der Sprache, aber wenn man seine Programme portieren möchte ist es vllt. doch nicht die richtige Wahl. Diese Eigenschaft fanden wir jedoch relativ wichtig.

Deshalb wüsste ich gerne von euch, welche Programmiersprachen sich wirklich zu lernen lohnen. Für mich ist es vor allem wichtig das eine Programmiersprache portierbar oder vllt. sogar Plattformunabhänghig ist. Es ist zwar schön, auf einem Mac zu entwickeln, aber mein Code sollte auch auf anderen Plattformen (im wesentlichen Windows und Linux) ausführbar sein.
 
Deshalb wüsste ich gerne von euch, welche Programmiersprachen sich wirklich zu lernen lohnen. Für mich ist es vor allem wichtig das eine Programmiersprache portierbar oder vllt. sogar Plattformunabhänghig ist.

Was sich für Dich lohnt kann ich Dir nicht sagen. Aber Java ist doch etwas, was behauptet, genau das zu können, was Du suchst.

Es gibt natürlich jede Menge andere Sprachen, aber die wenigsten davon haben wirklich portable GUI Bibliotheken.

Alex
 
"Wirklich zu lernen lohnt", für was? Beruflich, oder Hobby-mäßig?

Beruflich sind umfassende Java-Kenntnisse garantiert nicht verkehrt (da recht viel von Java abgeguckt wird, Konzepte, etc.). Und das "Java ist langsam" ist auch schon ein ziemlich ausgelutschter Spruch, der schon lange nicht mehr stimmt (im x86-Bereich). Statte eine C++-Umgebung mit den Features von Java aus und die hast die gleiche oder schlechtere Performance... ;)

Wenn du nur Hobbymäßig programmieren willst, ist doch im Endeffekt alles egal. Nimm irgendetwas. Eine Anwendung portabel halten ist so ziemlich das ekligste was du dir vornehmen kannst. Besonders bei kompilierten Sprachen. Da kommst du aus dem heulen nicht mehr raus.
Bei Bytecode-Sprachen wie Java oder Mono ist es schon leichter, wobei Java da immer noch im Vorsprung ist (Bug-bezogen).
Ansonsten bleiben nur Skriptsprachen, aber wenn dir Java schon zu langsam ist... nunja ;)
 
Wenn du "binär portierbar" sein willst, kommst du um eine VM kaum drumherum. Das geht natürlich auf das Laufzeitverhalten. Aber das wird ja zunehmend besser. Insofern wäre Java vielleicht genau das Richtige für dich.

Wenn du "sourcecode-portierbar" sein willst, reicht eine Sprache aus, für die es auf allen Plattformen Compiler gibt (das gilt sogar für Obejctive-C) und ein passendes Framework. Und im zweiten Teil wird es schwierig. Die Betriebssysteme sind sehr unterschiedlich, so dass diese einheitlichen Frameworks eben nie das wirklich native Gefühl aufkommen lassen. Maccies wirst du damit nicht begeistern können …

Von der konzeptionellen Modernität kannst du dir alles anschauen, was auf Smalltalk-80 basiert oder noch neuer prototypen-basierte Programmiersprachen.
 
Hallo Leute,

also ich habe bisher mit Java gerade in Bezug auf die Performance eher schlechtere Erfahrungen gemacht. Aber es scheint sich wohl wirklich zu bessern. Eclipse ist ja schließlich auch in Java geschrieben und trotz der relativ vielen Features (Code-Korrektur, etc.) entsprechend flott.

Der Satz mit dem "... sich zu lernen lohnt." ist vllt. wirklich nicht sehr konkret formuliert. Gerade weil man sich fragen kann "wofür". Im Prinzip gilt dies fürs erste eher dem hobbymäßigen Programmieren, da wir an der Uni (wenn es denn mal ums Programmieren geht) eher mit Java, C oder Matlab arbeiten.

Also, ... ich suche im Wesentlichen für private Projekte eine Sprache die interessant ist, ggf. neue Eigenschaften mitbringt die ich bei Java, C++, Objective-C noch nicht kennengelernt habe und die eben portierbar/plattformübergreifend ist. Die letzte Eigenschaft ist mir wichtig, weil ich viel Code mit Freunden/andern Menschen tausche und klarerweise nicht jeder einen Mac zu Hause stehen hat. Von daher ist es für mich auch nicht erheblich, ob ich mit einer Skriptsprache programmiere oder mit einer Sprache, deren Quellcode erst in ein Zwischenprodukt übersetzt wird.

Um es kurz und bündig zu machen: "Es interessiert mich jede Sprache, die die obigen Eigenschaften zumindest ansatzweise Erfüllt.". Wenn ihr meint, dass diese gut ist, wäre ich euch dankbar wenn ihr einen Link/den Sprachnamen posten, damit ich mir diese mal anschauen kann.
 
Dann probiere es doch einmal mit Smalltalk oder SELF. Aber verlange von der Performance nicht zu viel.
 
Da es dir ja anscheinend doch nicht so auf die Geschwindigkeit ankommt, könntest du dir auch mal Python anschauen. Die Portierbarkeit wäre auf jeden Fall gegeben. Aber für die portable GUI müsstest du wohl wieder auf wxWidgets oder Qt zurückgreifen. Da wäre Java wohl wirklich die beste Lösung.
 
Aber für die portable GUI müsstest du wohl wieder auf wxWidgets oder Qt zurückgreifen.

Und beides ist vielleicht für manche Dinge zu gebrauchen, aber postivere Beschreibungen fallen mir zu beiden Toolkits nicht ein. Mit "Gut" oder "Modern" würde ich beide nicht belegen.

Für GUI bleibt wirklich nur Java. Ohne GUI: Smalltalk

Alex
 
Damit eine Programmiersprache Plattformunabhängig ist gibt es ein paar Punkte die gegeben sein müssten. Der wohl wichtigste ist die Typsicherheit. Es muss sichergestellt sein, daß der Quellcode der auf einer Maschine Compiliert wird und läuft, auch auf der anderen Mashine compiliert werden kann und natürlich läuft.

Alle C (das sind auch C++ und Objective C) haben das nicht. Die Definition für C-Datentypen sagt nicht, wie viele Bytes und (ganz wichtig) in welcher Reihenfolge sie für die Datentypen zu sein haben.
http://en.wikipedia.org/wiki/C_variable_types_and_declarations#Size
Bei C-Programmen ist es immer abhängig vom Prozessor für den das Programm Compiliert wird.

Stichworte sind hier Little- und Big Endian.
http://de.wikipedia.org/wiki/Little_endian#Little
http://de.wikipedia.org/wiki/Little_endian#Big

Die Bytereihenfolge ist auch der Grund, warum es Universal Binaries gibt. Intel ist Little Endian, Motorola ist Big Endian.

Eine populäre Programmiersprache die so eine Typsicherheit, bietet ist z. B. Pascal bzw. Delphi.

Etwas problematisch bei Pascal ist allerdings das Dateimanagement. Da Windows ja komplett andere Pfadangaben benutzt als man es von Linux oder OS X her kennt, ist es dem Programmierer überlassen sicher zu stellen, daß das Programm auf allen Plattformen auch mit Dateien umgehen kann. Ist aber kein Ding wenn man mit Compilerdirektiven arbeitet.

Hier ein paar Links:
OpenSource Pascal Compiler:
http://www.freepascal.org/

GUI-Builder für FreePascal auf Grundlage von GTK. GUIs werden wie in Delphi oder Visual Studio konstruiert:
http://www.lazarus.freepascal.org/

Noch was am Rande: Pascal kann mit allen C-Bibliotheken arbeiten. Man muss sich allerdings das Headerfile selber schreiben (falls es nicht schon jemand anderes getan hat) und für jede Funktion aus der C-DLL angeben, daß diese auch eine C-Funktion ist.
Parameter werden in Pascal nämlich im Gegensatz zu C in umgekehrter Reihenfolge auf den Stack gepusht.

Gruß Fabian
 
Ich betrachte vieles unter dem Aspeckt der Sicherheit. Von daher würde ich sagen, dass man schon einen sehr guten Grund bruacht um in Java und oder C zu programmieren. Ich beforzuge von daher Python. Hiermit lässt sich schnell einigermaßen sicherer Code erstellen. Klar dies ist auch unter C etc. möglich, doch sehr viel schwiriger. AUßerdem lässt es Python absulut offen ob man Strukturiert-, Fuktional- oder Objectorientiert programmiert. Die Sprache wird ähnlich wie Java in einen Zwischencode übersetzt und dann Interpretiert. Pythopn wird auch durchaus für größere Projeckte eingesetzt z.B. Google setzt viel auf Python und Youtube besteht, soweit ich weiss, fast nur aus Python.
 
Also ich habe mit Java angefangen und bin immer noch am Lernen, da hat man ja unendlich viele Möglichkeiten.

Ich denke aber auch, wie schon so manche Vorredner, dass es immer darauf ankommt was genau man machen möchte. Was mich jetzt zum Beispiel reizen würde ist Ruby on Rails, das finde ich recht interessant, ist aber zur Webentwicklung und nicht für Desktop-Applikationen gedacht. Ruby an sich scheint auch interessant zu sein, aber wohl eher richtig bekannt geworden jetzt durch Ruby on Rails (bitte nicht steinigen, aber mir ist Ruby erst so richtig ein Begriff, seit es on Rails gibt).

Python finde ich auch interessant, würde mich vor allem wegen der Entwicklung für und unter Linux reizen, ist dort doch schon sehr verbreitet.

Um mich kurz zu fassen, mit Java kannst bestimmt nicht viel falsch machen und die Performance ist inzwischen auch gut.

st3-f
 
mich würde einfach mal interessieren, welche Programmiersprachen ihr bevorzugt und warum.

Aufgrund von Kernel Entwicklung vorwiegend C , C++, Assembler
und neuerdings auch D. Die Sprachen sind da das Mittel der Wahl.

Also, ... ich suche im Wesentlichen für private Projekte eine Sprache die interessant ist, ggf. neue Eigenschaften mitbringt die ich bei Java, C++, Objective-C noch nicht kennengelernt habe und die eben portierbar/plattformübergreifend ist.

Objektorientierte imperative Sprachen sind sich irgendwo alle sehr aehnlich.
Wenn du mal was anderes sehen willst dann kannst du dir ja funktionale
Sprachen wie Haskell oder OCaml anschauen. Vieleicht auch LISP (od.
Scheme) oder eine Stack orientierte Sprache wie Forth.

below schrieb:
Für GUI bleibt wirklich nur Java. Ohne GUI: Smalltalk

Also im Fall von Smalltalk ist Squeak (http://www.squeak.org/) eine
ziemlich gute Umgebung die quasi ueberall laeuft und natuerlich auch
eine GUI mitbringt.
 
Ich betrachte vieles unter dem Aspeckt der Sicherheit.

Und wie kriegst du in Java "unsicheren" Code zustande?

Zum Thema:

Mit deinen Anforderungen einfach nur Java. Mehr bleibt da nicht. Es gibt sonst keine Sprache in die so umfassend Arbeit in die Plattformunabhängigkeit gesteckt wurde.

Klar kann man hier jetzt noch ein paar Sondersachen raus suchen, aber Java ist gut dokumentiert, hat wahnsinnig gute IDEs (SEHR wichtig) und SEHR viele Frameworks...
 
@-Nuke-
Is schon recht im gegensatzt zu C++ ist die Zeigerarithmetik bei Java nicht mehr vorhanden... aber durch die Runtime Enviroment ergeben sich eineige Lücken.. und es lassen sich in Python nicht so leicht Buffer Owerflows zustande bringen. Wie das nun genau geht würde das Thema sprengen...
 
Dann schreibs mir per PM ;) Eine Runtime Environment hat Python auch. Wird ja interpretiert ;)
 
Interessiert mich aber auch.

Alex
 
Jup. Würde mich nämlich wundern, da Java-Anwendungen normal in einer Sandbox laufen. Ein Buffer-Overflow (was normalerweise eine Exception auslöst und das Programm abbricht) würde dort auch absolut nichts bringen.
 
Bei einem Stack Overflow schon... aber bei nem Heap Overflow .... ka wie sich das da verhällt *überfragt*
 
Zurück
Oben Unten