HerrHagen und problembär:
Mir ist die nützlichkeit von C durchaus bewusst. Immerhin ist Python selbst ja auch in C implementiert. Und die Kombo Python+C deckt auch >95% der Problemstellungen ab die man normalerweise antrifft.
C für Geschwindigkeit. Python für den Rest.
Ich hab hier sogar ein recht gutes C-Buch rumstehen: "C Programmieren von Anfang an" von Helmut Erlenkötter. Es gibt nur 2 Probleme bei C:
1. mach ich Programmierung nicht beruflich und programmiere auch keine Hardwaretreiber oder Spiele. Ob es da dann lohnt sich Wochen bis Monate in C einzuarbeiten?
2. Es gibt so einige Sprachen die deutlich interessanter sind. ZB so ziemlich alle in meiner o.a. Liste.
keppla:
Erlang hab ich auch schon gehört. Ebenso gibt es auch noch Icon, Mercury, Clean, Eiffel, Dylan, dass bereits erwähnte Factor und einige interessante mehr. Aber ich wollte meine Liste etwas übersichtlich halten.
herakles hat geschrieben:1. Haskell - rein funktional. Soll daher sehr gut sein um eine komplett neue, "erleuchtende", Sichtweise aufs Programmieren zu bekommen.
Leonidas hat geschrieben:Ja, und es hat einige ziemlich gute Online-Ressourcen, ist sehr hip und die Community soll ganz toll sein. Außerdem sehr populär zurzeit, GHC wird immer besser und eine Menge Libraries sind im entstehen. Für "erleuchtung" sehr fein, als Zweitsprache für irgendwelche Aufgaben kann ich es mir weniger vorstellen.
Es gibt aber doch Menschen die es für praktische Tätigkeiten einsetzen:
http://araujoluis.blogspot.com/2007/04/ ... aming.html
Empfehle allen Freunden des funktionalen und von Python folgende Seite durchzulesen:
http://lukeplant.me.uk/blog.php?id=1107301645
"I've found, contrary to what you sometimes read, that learning Python and Haskell has not improved my programming using other languages."
...
"I find I think in Python, and even in Haskell to some extent, even though I have used Haskell very little. I constantly find myself wanting to use idioms from these languages, or noticing how much less code I'd be able to write if I was using one of these languages (which, although very different from each other, are both much more powerful than the language I use at work, C#). It's very common for me to notice that using either of these languages I could decrease a chunk of code by a factor of 2-5, and not rare to see a factor of 10-20 in certain parts of the code base."
...
"When I get frustrated with the C# code I write, I then go and write it again in Haskell and Python, to demonstrate to myself how much better they are, which is a pointless exercise that only demotivates me further."
herakles hat geschrieben:2. Common Lisp - ähnlich Haskell jedoch multiparadigmisch. Enorme Flexibilität.
Leonidas hat geschrieben:Nein, eigentlich gar nicht wie Haskell. Dynamisch typisiert, wenig funktional, weniger Syntax. Dafür mehr Metaprogrammierung mit Makros. CL ist im Vergleich zu Scheme IMHO die hässlichere Sprache, gerade wenn man auf "Erleuchtung" aus ist, aber das Objektsystem CLOS (von dem es massig Kopien in der Scheme-Welt gibt) ist sicher etwas recht eigenes.
Ja. Lisp ist schon sehr interessant. Dass die Sprache sich selbst zur Laufzeit programmieren kann ist beeindruckend. Eine der schwierigsten Entscheidungen ist wohl Lisp oder Haskell wenn man in die funktionale Welt will.
herakles hat geschrieben:3. Scheme - wie Common Lisp so weit ich weiss. Wo ist der Unterschied?
Leonidas hat geschrieben:Eine meiner Lieblingssprachen: ein Lisp-1 (mit nur einem Namespace, nicht so wie CL mit mehreren), funktional, hübsche Makros, gute Implementationen. Habe mal gehört jemand nannte Haskell die pythonischste Sprache neben Python; aber für mich ist das Scheme.
In diesem Umfeld ist vielleicht auch Clojure als ein Lisp auf der JVM erwähnenswert, also zumindest wenn du damit auch wirklich was anfangen willst. Für "Erleuchtungszwecke" würde ich eher auf Scheme zurückgreifen, wenn es denn schon Lisp sein soll.
Auch eine viel diskutierte schwierige Entscheidung. Scheme ist tatsächlich "reiner". Dafür ist cLisp für den praktischen Eisatz deutlich besser geeignet.
herakles hat geschrieben:4. Ocaml - kann funktional. Dazu noch bei Geschwindigkeit auf Augenhöhe mit C++.
Leonidas hat geschrieben:Kann nicht nur funktional, bevorzugt dies auch. Der O-Bestandteil ist eher eine nette Dreingabe. Metaprogrammierung via camlp4 und camlp5 möglich, wohl die nächste funktionale Sprache auf meiner Todo-Liste.
Ocaml ist sehr interessant. Besonders, dass die Geschwindigkeit auf Augenhöhe mit C++ ist, ist beeindruckend.
Eine Frage: Kann man Ocaml als ernsthaften Ersatz für C++ sehen? Wie verhällt sich Ocaml gegenüber C++ für mittlere bis größere Projekte?
herakles hat geschrieben:6. Smalltalk - rein Objektorientiert. Deutlich besser als Java, C++ für OO.
Leonidas hat geschrieben:Ja und es gibt relativ viele Ressourcen dazu. Habe mich aber nicht sonderlich damit beschäftigt, da es seinerzeit keine überzeugenden freien Implementationen gab.
Über Smalltalk hört man ja auch nur gutes. Auch hier würde mich der Vergleich zu C++ interessieren. Also Geschwindigkeitsnachteile ist klar. Aber wie siehts mit der skalierbarkeit aus?
herakles hat geschrieben:7. C - eigentlich Standardwissen und sehr sinnvoll im zusammenhang mit Python. Aber ob ich so lust aufs manuelle Speichermanagement habe? Naja. Vielleicht weiss man dann Python noch mehr zu schätzen.
Leonidas hat geschrieben:Ja, das ist echt eine gute Idee und als Zweitsprache wohl am empfehlenswertesten.Ich fluche immer ganz fürchterlich über die Datentypen die sich nicht automatisch vergrößern, dagegen ist manuelle Speicherverwaltung ja kein Problem. Und wenn dann gibt es zur Not auch Boehm-GC.
ja, allerdings s.o.
herakles hat geschrieben:8. APL - hab irgendwo mal positives darüber gelesen. Kann auch sein, dass das ein ein Artikel aus lang vergessenen Zeiten war. In jedem Fall interessant was für Hieroglyphen dort verwendet werden und dass man wohl sogar ne extra Tastatur braucht. Aber wozu ist diese Sprache denn gut?
Leonidas hat geschrieben:Ich habe hier mal ein APL-Buch gehabt und bin zum Entschluss gekommen, dass es für die Tonne ist. Inzwischen bräuchte man keine eigene Tastatur mehr, das könnte man sicher irgendwie mappen aber im Vergleich zu den anderen Sprachen war es mir doch zu uninteressant und freie Implementationen gab es damals keine (hat sich inzwischen geändert, aber ich habe kein Interesse an APL mehr).
Trotzdem weckt APL u.a. aufgrund seiner exotik mein Interesse. Wohl auch weil ich aus der Mathe-Ecke komme. Weiss aber immer noch nicht wie APL im Vergleich zu anderen Sprachen steht.
herakles hat geschrieben:10. Prolog - Soll ja ziemlich anders sein aber wozu ist das?
Leonidas hat geschrieben:Für Logik. Du deklarierst damit wissen und er deduziert dann aus diesem Wissen fakten. Fast wie ein CAS, das Gleichungen löst. Ein Buch dazu steht bei mir im Regal, aber Logik ist momentan für mich das am wenigsten interessante Paradigma. Sinnvolle Anwendungen für den Normalsterblichen: eher kaum.
Wenns nur für Logik ist, dann ists nichts für mich. Außer es gibt noch andere Anwendungsbereiche. Aber im Vergleich zu anderen hier aufgeführten Sprachen ist Prolog eher weniger sinnvoll.
herakles hat geschrieben:11. Forth - Ebefalls sehr flexible Sprache. Scheinbar gibt es nur Leute die Forth über alles lieben oder hassen. Dazweischen hab ich noch nichts gesehen.
Leonidas hat geschrieben:Ich finde andere stackbasierte Sprachen interessanter. Letztens habe ich relativ viel PostScript gemacht und da man damit direkt auf ein Canvas zeichnen kann super für den Einstieg gedacht (und es gibt dafür auch klasse Literatur). Außerdem gibt es Factor: Meine erste Factor-Session war die spannendste Hacking-Session die ich jemals hatte, ich habe (durch den guten interaktiven Modus den es früher mal hatte) eine Menge gelernt. Hat auch eine ganze Menge Tools dabei, die es halbwegs für die reale Welt brauchbar machen.
Mich würde jetzt noch interessieren wo denn genau die Anwendungsgebiete für Forth und Factor liegen. Welche Stäken und Schwächen hast du festgestellt?
herakles hat geschrieben:13. Assembler, Hex, Bin, Lötkolben
Leonidas hat geschrieben:Eher nicht. Assembler gibt es ja so viele wie es Prozessorfamilien gibt und ich muss auch sagen dass die Sprache weder interessant sind, noch übermäßig lehrreich. Reicht also sich die Assembler-Konzepte anzuschauen, richtig Assembler-Code zu schreiben finde ich unnötig.
Kommt natürlich auch wieder auf den Anwendungsbereich an. Disassembler, OllyDBG, uC-Programmierung, OS-Programmierung wären Bereiche. Aber wenn schon Assembler, dann bräuchte man doch erstmal C-Kenntnisse oder nicht?
Hab übrigens auch schon gesehen, dass Leute tatsächlich Binärcode und Hexcode nutzen, also 100101 01110 und 000EFD6C6 etc. Einmal wars glaub ich so ne nottfalllösung wo kein C-Compiler und auch nicht Assembler vorhanden war. Lediglich ein Editor.
Leonidas hat geschrieben:Falls du Fragen hast: nur her damit!
Schon geschehen. Danke allen für die Antworten.
PS: Könnt ihr mal für jede der angegebenen Sprachen einige Referenzprogramme verlinken? Würd gern mal sehen was so geschrieben werden kann. Konnte selbst leider nicht allzuviel bekanntes finden.
Für Ocaml hab ich rausgefunden, dass die P2P-Software MLDonkey darin geschrieben wurde:
http://www.linux-user.de/ausgabe/2003/0 ... donkey.png
Nicht schlecht.