Seite 2 von 2
Verfasst: Mittwoch 15. Juli 2009, 15:03
von herakles
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.
Verfasst: Mittwoch 15. Juli 2009, 17:46
von Leonidas
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.
Wenn man bedenkt, dass Funktionsaufrufe in Forth nahezu nichts kosten da man schlichtweg keine Stackframes hat, koennte das zumindest fuer einige Codes zutreffen.
Verfasst: Mittwoch 15. Juli 2009, 19:01
von sma
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
Verfasst: Mittwoch 15. Juli 2009, 21:50
von Darii
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.
Verfasst: Freitag 17. Juli 2009, 13:33
von sma
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
Verfasst: Mittwoch 29. Juli 2009, 00:36
von hendrikS
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.
Verfasst: Mittwoch 29. Juli 2009, 10:33
von INFACT
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;
}
Verfasst: Mittwoch 29. Juli 2009, 10:41
von 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

Verfasst: Mittwoch 29. Juli 2009, 11:15
von Leonidas
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

Verfasst: Mittwoch 29. Juli 2009, 20:49
von birkenfeld
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...
Verfasst: Donnerstag 30. Juli 2009, 03:41
von stuhlbein
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.
Ich werd mich jetzt weiter dem
Kaya-tutorial widmen

Re: Interessante / sinnvolle Programmiersprache nach Python
Verfasst: Montag 13. Dezember 2010, 19:43
von PyByte
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
Doch genau wie Assemblersprachen heute nicht ausgestorben sind (man denke an Cracking, Software Analyse...) wird auch C/C++ für bestimmte Zwecke überleben.
Re: Interessante / sinnvolle Programmiersprache nach Python
Verfasst: Montag 13. Dezember 2010, 20:11
von Hyperion
Hui... Leichenfledderei

Re: Interessante / sinnvolle Programmiersprache nach Python
Verfasst: Montag 13. Dezember 2010, 20:59
von noisefloor
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

).
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
Re: Interessante / sinnvolle Programmiersprache nach Python
Verfasst: Montag 13. Dezember 2010, 21:45
von 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.
Re: Interessante / sinnvolle Programmiersprache nach Python
Verfasst: Montag 13. Dezember 2010, 22:04
von PyByte
Hyperion hat geschrieben:Hui... Leichenfledderei

Huch, das hab ich nicht gemerkt, war doch noch auf der ersten Seite
