Interessante / sinnvolle Programmiersprache nach Python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
herakles
User
Beiträge: 5
Registriert: Mittwoch 8. Juli 2009, 15:08

Ich bedanke mich bei allen für die Antworten. Sehr interessant und erkenntnisreich was hier geschrieben wird.

Übrigens auch sehr interessant wie viele Leute hier, in einem Python-Forum, zahlreiche "exotischere" Programmiersprachen kennen, welche sich im Berufsleben als Programmierer eigentlich nicht auszahlen. Schon klar dass man dadurch automatisch ein besserer Programmierer in einer Industrie-Programiersprache werden kann aber ihr wisst ja wie ichs mein: Es gibt nunmal kaum bis keine Stellenanzeigen für Forth, Lisp, Ocaml, Haskell, Snobol4, Smalltalk usw. - Programmierer.

Zum Thema: Eine eindeutige entscheidung kann ich momentan nicht treffen. Hat halt alles seine vor und Nachteile.

Ein Lisp steht aber ganz oben auf meiner Liste. Vor allem aufgrund der Eigenschaft als "programmierbare Programmiersprache". Dazu würde ich gern wissen ob cLisp/Scheme die einzigen Sprachen sind die dies ermöglichen oder ob es andere abseits der Lisp-Welt gibt. Ist Lisp nicht eigentlich recht nahe an einem Parser? Und zweitens: Welche interessanten Dinge kann man eigentlich mit dieser programmierbarkeit in sich selbst anstellen? Gibt es da konkrete Beispiele?

Zu Forth: Ist Forth tatsächlich schneller als C und benötigt weniger Code so wie es diese Seite behauptet:
http://www.inventio.co.uk/forthvsc.htm

Darii:

Mit skalierbarkeit meinte ich wie Smalltalk gegenüber C++ in Codezeilen, also Programmieraufwand, und Ausführungsgeschwindigkeit des enstandenen Programms, bei größeren und komplexeren Problemen abschneidet.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

herakles hat geschrieben:ihr wisst ja wie ichs mein: Es gibt nunmal kaum bis keine Stellenanzeigen für Forth, Lisp, Ocaml, Haskell, Snobol4, Smalltalk usw. - Programmierer.
Bedenke dass Python-Stellenanzeigen frueher auch sehr selten waren und der Bedarf zurzeit eher zunimmt.
herakles hat geschrieben:Ein Lisp steht aber ganz oben auf meiner Liste. Vor allem aufgrund der Eigenschaft als "programmierbare Programmiersprache". Dazu würde ich gern wissen ob cLisp/Scheme die einzigen Sprachen sind die dies ermöglichen oder ob es andere abseits der Lisp-Welt gibt. Ist Lisp nicht eigentlich recht nahe an einem Parser? Und zweitens: Welche interessanten Dinge kann man eigentlich mit dieser programmierbarkeit in sich selbst anstellen? Gibt es da konkrete Beispiele?
Nein, Factor hat auch Makros (mehr Infos) und ist ebenso wie Lisp eine Sprache mit sehr wenig Syntax. Und Lisp ist nicht nahe an einem Parser sondern eher an einem AST, also einen Quellcode-Baum in Reinform. Dabei sind Makros einfach nur Transformationen auf diesem Baum bevor der transformierte Baum tatsaechlich auch ausgefuehrt wird.

Interessante Dinge die man damit anstellen kann sind etwa die Objektsysteme von denen Scheme allein 15 verschiedene bietet oder dumme Spielereien, die Lisp zu Postfix-Syntax umbauen oder etwas weniger dumme aber ebenfalls sinnlose Spielereien, die die Haskell-Funktions-Semantik nachbauen. Ausserdem besteht die Sprache selbst aus Funktionen, Macros und Special-Forms, als Beispiel fuer ein Makro sei ``let`` gegeben, dass verwendet wird um Werte an Namen zu binden (wie Zuweisungsoperatoren in anderen Sprachen). Ein anderes Makro waere ``or``, dass bei einem Aufruf wie ``(or #f (long-computation))`` das zweite Argument niemals aufruft und dennoch von aussen wie ein normaler Funktionsaufruf ausschaut.
herakles hat geschrieben:Zu Forth: Ist Forth tatsächlich schneller als C und benötigt weniger Code so wie es diese Seite behauptet:
http://www.inventio.co.uk/forthvsc.htm
Wenn man bedenkt, dass Funktionsaufrufe in Forth nahezu nichts kosten da man schlichtweg keine Stackframes hat, koennte das zumindest fuer einige Codes zutreffen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ablaufgeschwindigkeit ist bis auf wenige Spezialfälle das bei weitem unwichtigste Feature einer Programmiersprache. Daher ist es scheißegal, ob nun bestimmte Programme in C oder Forth oder Smalltalk oder C++ schneller sind. Entscheidend ist viel mehr, wie die Sprache hilft, ein Problem zu verstehen und eine Lösung zu erarbeiten und diesen Prozess zu dokumentieren. Der schwierige Teil ist nämlich nicht das Aufschreiben der Lösung sondern das Finden und Verstehen des Problems.

Skalierbarkeit meint übrigens nicht, ob etwas schnell oder langsam ist, sondern, ob es (möglichst mit linearem Aufwand) vervielfältigbar ist. Ein PHP-Programm ist in der Regel skalierbar, wenn es die übliche "share-nothing"-Architektur hat und man einfach beliebig viele PHP-Server parallel schalten kann. Eine Datenbank wie mysql skaliert hingegen nicht so gut und CouchDB würde besser skalieren als mysql, auch wenn ein einzelnes mysql schneller ist als ein einzelner CouchDB-Server.

Smalltalk würde ich wie Lisp zur Gruppe der programmierbaren Programmiersprachen zählen. Forth ebenso. Gleiches gilt für alle Mitglieder der jeweiligen Familien wie Self, Io, Joy, Factor, usw. Dylan wäre z.B. ein Lisp mit Pascal-artiger Notation. IMHO furchtbar, aber das Ur-Dylan kennt glaube ich kaum einer. Da gab es so ein Handbuch von Apple, das man sich bestellen konnte und das ich mir viele Jahre später für viel Geld über ebay ersteigert habe. Hat jemand zufällig noch ein gut erhaltenes Bluebook für einen akzeptablen Preis? Fehlt mir noch in meiner Sammlung. Ach, und kennt jemand Curl? Das war ein Versuch, eine Alternative zu HTML + CSS + JavaScript als Lisp mit curly braces zu etablieren. Interessant, aber die hatten die irrige Annahme, damit richtig viel Geld verdienen zu können und somit war und ist es eine Randnotiz der Geschichte.

BTW, Smalltalks Syntax umfasst neben dem üblichen Zeug wie Zahlen, Zeichenketten, Symbole, Arrays und Blöcke noch das Vereinbaren von lokalen Variablen, Zuweisungen mittels :=, Rückgabe von Objekten mit ^ und Ausdrücken zum Senden von Nachrichten (also dem Aufrufen von Methoden). Das ist es. Im Gegensatz zu Lisp gibt es keine vordefinierten Namen für Bedingungen, Schleifen, usw. Das ist alles Teil der Klassenbibliothek.

Stefan
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

sma hat geschrieben:Auf Grund der einfacheren Objektstruktur und des besseren Garbage-Collectors würde ich sagen, dass andere Benchmarks in Squeak besser abschneiden als sie es in CPython würden.
Ist denke ich unterschiedlich. Ich habe das Gefühl, dass man bei Squeak lieber alles in Smalltalk programmiert als Sachen in C auszulagern, das macht sich bei Methoden wie ByteString(String)>>asInteger natürlich besonders bemerkbar. Das ist verglichen mit Python unglaublich langsam.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Guter Punkt, Darii. Gerade Squeak-Smalltalk folgt der Tradition, alles (auch die virtuelle Maschine) in Smalltalk zu bauen und ist damit eher mit PyPy als mit CPython zu vergleichen. IMHO ist das auch der richtige Weg, denn dann profitiert der gesamte Code von allen Optimierungen, die mit der Zeit in die VM eingebaut werden. Ein JIT-Compiler lässt aber schon Jahre auf sich warten... leider. Andere Smalltalk-Systeme wie VisualWorks haben so etwas schon länger als es den Begriff gibt (der aus der Java-Welt stammt).

Stefan
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

hendrikS hat geschrieben:Selbst bin ich auch an OCaml interessiert. Vielversprechend.
Ich hab' jetzt mal so nebenbei mit Ocaml n'bisschen rumgespielt. Mein aktuelles Fazit: Ist nicht ganz so solide wie Haskell und schon gar nicht so easy wie Python. Alles ein bischen Krampf. Am Ende läuft es zwar, aber der Weg zum Erfolg ist sehr steinig. Nichts für Anfänger.
Ich schätze mal, daß ich ein Problem in Python ca. 10 mal schneller implementiere.
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Ich würde auch C empfehlen, das ist nicht so schwer. Ich habe auch nicht lange gebracht um mein erstes program damit zu schreiben - leider noch keins was mit dem internet zu tun hat, weil windows mir das vergrault hat und ich jetzt seid ca. 1 Woche versuche Linux auf meinen PC zu bekommen. Aber C ist auch - teilweise - platformunabhäning und mansche sachen sind auch so ähnlich wie in python. Man kann sogar hier highligned C Code schreiben:

Code: Alles auswählen

int main(void){
printf("Du willst C nehmen!");
return EXIT_SUCCESS;
}
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
lunar

INFACT hat geschrieben:Ich würde auch C empfehlen, das ist nicht so schwer.
Es wird aber spätestens dann recht schnell recht kompliziert, wenn man komplexere Datenstrukturen und/oder generische Programmierung benötigt.

Die Highlighting-Fähigkeiten von phpbb sind natürlich auch hervorragend zur Beurteilung von Programmiersprache geeignet ;)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

lunar hat geschrieben:Es wird aber spätestens dann recht schnell recht kompliziert, wenn man komplexere Datenstrukturen und/oder generische Programmierung benötigt.
Ja. Da bin ich immer total froh, dass die GLib einiges mitliefert, was C weniger schmerzhaft macht.
lunar hat geschrieben:Die Highlighting-Fähigkeiten von phpbb sind natürlich auch hervorragend zur Beurteilung von Programmiersprache geeignet ;)
Zudem phpBB gar nicht von selbst highlighten kann sondern dies von CodeBB übernommen wird :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

hendrikS hat geschrieben:
hendrikS hat geschrieben:Selbst bin ich auch an OCaml interessiert. Vielversprechend.
Ich hab' jetzt mal so nebenbei mit Ocaml n'bisschen rumgespielt. Mein aktuelles Fazit: Ist nicht ganz so solide wie Haskell und schon gar nicht so easy wie Python. Alles ein bischen Krampf.
Ja, so gings mir auch. Nur schade, dass Ocaml in Sachen Performance Haskell immer wieder Schnippchen schlägt und viele deswegen doch zu Ocaml laufen...
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
stuhlbein
User
Beiträge: 89
Registriert: Freitag 9. Januar 2009, 16:08

Ich hab gestern Kaya gefunden, und fand das bisher relativ angenehm.

Syntaktisch würd ich die sprache zwischen Java und C++ einordnen.. was das Type-system angeht ist die sprache statisch getypt, und lässt sich mit dem mitgeliefertem Compiler in nativen Maschinencode übersetzen (der Compiler selbst ist in Haskell geschrieben).

Zudem bringt Kaya, genau wie Python, auch einen Interpreter mit, was für mich persönlich ein pluspunkt ist. :D

Ich werd mich jetzt weiter dem Kaya-tutorial widmen ;)
PyByte
User
Beiträge: 25
Registriert: Samstag 16. Oktober 2010, 03:32

Das kommt denke ich sehr darauf an was man programmieren möchte bzw. was damit machen. Für Anwendungssoftware würde ich Python nehmen.
Ich persönlich liebe die Freiheit von C++ und die tiefen Einsichten bei Assemblersprache.

Ich denke in Zukunft werden sich Sprachen wie Python immer mehr durchsetzen, es ist einfach einfacher :D

Doch genau wie Assemblersprachen heute nicht ausgestorben sind (man denke an Cracking, Software Analyse...) wird auch C/C++ für bestimmte Zwecke überleben.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Hui... Leichenfledderei :-D
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

IMHO ist ein guter Weg, wie es ziemlich weit vorne steht: nimm' das, was dir am meisten zusagt (aus welchen Gründen auch immer), dann ist wenigstens die Motivation hoch genug, der Lernkurve zu folgen.

Persönlich finde ich Lua interessant, dass ist aber rein subjektiv (nein, ich spiele kein WoW ;-) ).

Zum Thema Geschwindigkeit: Einen IMHO ganz interessanten Benchmark für wirklich viele Programmiersprachen gibt es hier: http://theowoll.netau.net/benchmark.html (immerhin braucht Lua 6x weniger CPU-Zeit als Python 8) ).

Das Englische Wikipedia hat BTW eine ganz nette Übersicht über Programmiersprachen: http://en.wikipedia.org/wiki/Comparison ... _languages

Gruß, noisefloor

EDIT: noch ein Benchmark: http://shootout.alioth.debian.org/u32q/ ... t&lang=all
BlackJack

@noisefloor: Geh mir weg mit Benchmarks und dann auch noch welche, die die Geschwindigkeit von *Sprachen* messen. Vergleich zum Beispiel mal 'ne JavaScript Implementierung von Microsoft mit V8 von Google. Welches von beiden ist jetzt "die Geschwindigkeit von JavaScript"?

Du magst den Benchmark mit dem Apfelmännchen interessant finden, aber das entspricht irgendwie nicht der typischen Anwendung für die *ich* Python einsetze. Das wird sicher nicht nur für mich zutreffen und sicher auch nicht nur für Python.

Ausserdem scheinen die Programme alle syntaktisch möglichst 1:1 die C-Version umzusetzen. Wenn Sprachen zum Beispiel eine Endlosschleife besitzen, wird trotzdem das ``while (1)``-Äquivalent genommen, was einen zusätzlichen unnötigen Test pro Schleifendurchlauf bedeuten kann.
PyByte
User
Beiträge: 25
Registriert: Samstag 16. Oktober 2010, 03:32

Hyperion hat geschrieben:Hui... Leichenfledderei :-D
Huch, das hab ich nicht gemerkt, war doch noch auf der ersten Seite :D
Antworten