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

Hummel Hummel!

Momentan beherrsche ich nur die Programmiersprache Python. Eine hervorragende Programmiersprache wie ihr alle sicherlich bereits wisst.

Ich würd jetzt also gerne wissen welche Sprache nach Python interessant oder eine sinnvolle Ergänzung wäre. Perl, Tcl. Lua und Ruby wären zB nicht sinnvoll, da zu ähnliche Stärken wie Python.

Ich hab mich etwas informiert und folgende Sprachen momentan in der Auswahl. Ich bitte darum etwas zu den Sprachen zu sagen die ihr davon kennt und ob was ich, nach derzeitigen Erkenntnisstand, dazu geschrieben habe so stimmt:

funktionale Sprachen:

1. Haskell - rein funktional. Soll daher sehr gut sein um eine komplett neue, "erleuchtende", Sichtweise aufs Programmieren zu bekommen.

2. Common Lisp - ähnlich Haskell jedoch multiparadigmisch. Enorme Flexibilität.

3. Scheme - wie Common Lisp so weit ich weiss. Wo ist der Unterschied?

4. Ocaml - kann funktional. Dazu noch bei Geschwindigkeit auf Augenhöhe mit C++.

Sonstige:

5. Snobol4 / Spitbol - Das beste zum Thema Pattern Matching. Deutlich überlegen gegenüber Perl+RegEx.

6. Smalltalk - rein Objektorientiert. Deutlich besser als Java, C++ für OO.

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.

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?

9. J - ein modernes APL.

10. Prolog - Soll ja ziemlich anders sein aber wozu ist das?

11. Forth - Ebefalls sehr flexible Sprache. Scheinbar gibt es nur Leute die Forth über alles lieben oder hassen. Dazweischen hab ich noch nichts gesehen.

12. Ada - Soll ja ebenfalls ein Konkurent zu C++ sein.

13. Assembler, Hex, Bin, Lötkolben - ? :lol: ?

Fällt euch was zu einigen der oberen Sprachen ein? Welche würdet ihr als Zweitsprache nach Python empfehlen?

Für die Frage nach meinem Einsatzzweck: Den habe ich nicht. In erster Linie möchte ich einfach nur eine zweite Sprache erlernen. Ich mache das nicht beruflich sondern nur als Hobby. Eine interessante und/oder sinnvoll ergänzende Sprache wäre daher toll.

Danke im voraus für eure Mühe!
Benutzeravatar
Klip
User
Beiträge: 98
Registriert: Donnerstag 10. August 2006, 20:39

Schau dir alle an und überlege dir welche dir davon am meisten gefällt ;)
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

Ich würde dir C empfehlen. Auch wenn die Motivation (wenn man von Python kommt) dafür manchmal schwierig ist, lernt man doch eine ganze Menge. Beispielweise über Datenstrukturen (die man in schnell Python als gottgegeben wahrnimmt) und die interne Funktionsweise des Rechners. C ist eine interessante minimale Sprache, sie wird nur allzu oft über ihre eigentlichen Anwendungsgebiete hinaus beansprucht. Zudem bringt es IMO wenig eine Sprache zu lernen die du dann doch nie einsetzen wirst, da sich viele Prinzipien erst mit der intensiveren Nutzung erschließen.

MFG HerrHagen
problembär

Wenn Du Deine Programmierprobleme in Python lösen kannst, brauchst Du keine andere Sprache.

Wenn Du was Schnelleres brauchst oder nur was Neues lernen willst, würde ich mir erstmal C (und dann auch C++) angucken.

IMHO weiß man danach Python tatsächlich mehr zu schätzen.

Gruß
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

problembär hat geschrieben:Wenn Du Deine Programmierprobleme in Python lösen kannst, brauchst Du keine andere Sprache.
Gewagte These :shock:

Schließe mich der Hagenschen Argumentation an.

Gruß,
Christian

PS Willkommen im Forum, herakles.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

herakles hat geschrieben:10. Prolog - Soll ja ziemlich anders sein aber wozu ist das?
Wird hauptsächlich im Bereich KI eingesetzt. Falls du mal richtig Rekursionen lernen willst, kann ich dir das empfehlen ;)
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

problembär hat geschrieben:Wenn Du was Schnelleres brauchst [...] würde ich mir erstmal C (und dann auch C++) angucken.
Vielleicht bin ich der Einzige dem das so geht, aber für wirklich ALLE Geschwindigkeitsproblemen, die ich bisher hatte, gab es lediglich 2 Ursachen: Miserable Algorithmen in der "Hauptsprache" und inneffiziente Anfragen an die DB (in SQL oder einer Abstraktion in der Hauptsprache).

Mag sein, dass das an meinem Umfeld liegt (viel webkrams, nix hardwarenahes), aber irgendwie hab ich den Eindruck, dass dieses "C ist schnell"-Ding hauptsächlich daher kommt, weil so gut wie jeder Programmierer mal versucht hat, ein Spiel zu programmieren, und es ihm in dieser Zeit eingeprügelt wurde.

Um mal eine weitere Sprache einzuwerfen: Erlang. Funktional, Nebenläufig und wird tatsächlich Praktisch eingesetzt (Nokia, afaik).
lunar

Es liegt an deinem Umfeld ... für numerisches Programmieren, Simulationen, Echtzeitberechnungen, etc. ist Python selbst viel zu langsam. Bei Webanwendungen fällt die Langsamkeit von Python nur deswegen nicht auf, weil die Leitung meist noch langsamer ist :)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Oh klasse, ein Sprachen-Post! Und du hast echt bunt durch die Paradigmen gewühlt :)
herakles hat geschrieben:1. Haskell - rein funktional. Soll daher sehr gut sein um eine komplett neue, "erleuchtende", Sichtweise aufs Programmieren zu bekommen.
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.
herakles hat geschrieben:2. Common Lisp - ähnlich Haskell jedoch multiparadigmisch. Enorme Flexibilität.
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.
herakles hat geschrieben:3. Scheme - wie Common Lisp so weit ich weiss. Wo ist der Unterschied?
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.
herakles hat geschrieben:4. Ocaml - kann funktional. Dazu noch bei Geschwindigkeit auf Augenhöhe mit C++.
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.
herakles hat geschrieben:6. Smalltalk - rein Objektorientiert. Deutlich besser als Java, C++ für OO.
Ja und es gibt relativ viele Ressourcen dazu. Habe mich aber nicht sonderlich damit beschäftigt, da es seinerzeit keine überzeugenden freien Implementationen gab.
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.
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.
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?
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).
herakles hat geschrieben:10. Prolog - Soll ja ziemlich anders sein aber wozu ist das?
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.
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.
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.
herakles hat geschrieben:13. Assembler, Hex, Bin, Lötkolben
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.

Falls du Fragen hast: nur her damit!
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Karl
User
Beiträge: 252
Registriert: Freitag 29. Juni 2007, 17:49

Leonidas hat geschrieben:
herakles hat geschrieben:1. Haskell - rein funktional. Soll daher sehr gut sein um eine komplett neue, "erleuchtende", Sichtweise aufs Programmieren zu bekommen.
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.
Kann man damit dann wirklich nichts als 2.Sprache anfangen?
Es soll doch durch das funktionale Konzept einiges leichter sein (zB Rekursion oder sowas).
Da könnte man diese Sprache doch für mathmatische Zwecke anwenden. zB auf Seiten wie project-euler. Aber ich habe keine Ahnung von der Sprache, das meiste hab ich nur aufgeschnappt.
Leonidas hat geschrieben:
herakles hat geschrieben:10. Prolog - Soll ja ziemlich anders sein aber wozu ist das?
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.
Ich find Prolog (nach lesen des Wikipediaartikels) irgendwie cool.
Ich werd mir das demnächst mal anschaun. Es ist schon cool, wenn man einfach das Problem eingibt und der Computer das dann löst.
Aber das sieht auch eher nach "Spielerei" aus als nach wirklichem Nutzen.
Aber es wird wohl nicht schaden, sich Prolog und Haskell mal anzugucken, allein um zu sehen, was es alles für verschiedene Sprachen gibt :)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

herakles hat geschrieben:In erster Linie möchte ich einfach nur eine zweite Sprache erlernen. Ich mache das nicht beruflich sondern nur als Hobby.
So ähnlich (mit einiger Unschärfe) ist das bei mir auch, gemeinsam ist uns auf jeden Fall, dass es in meinem Leben bisher auch keine Notwendigkeit gab, C/C++ zu lernen (das wird auch so bleiben), ich allerdings beim Versuch, die ein oder andere Aufgabe bei SPOJ zu lösen, an die Geschwindigkeitsgrenzen von Python gestoßen bin (aber die Fälle konnte ich bisher an einer Hand abzählen).

Ich habe mir darauf hin die Sprache D angesehen, die gedacht ist (wie der Name schon sagt) als Weiterentwicklung von C/C++. Inwieweit das gelungen ist, weiß ich nicht (weil ich ja weder C noch C++ beherrsche). Ich meine mich zu erinnern, dass es vor einiger Zeit hier im Forum mal jemanden gab, der sich für D erwärmen konnte.

Nett ist es auf jeden Fall, allerdings weiß man dann auch, was man an Python hat. Es gibt ein dt. Buch, das die Grundlagen behandelt, ansonsten sieht es mit Doku (auch engl.) nicht so gut aus. Auf Grund der Nähe zu C und der Möglichkeit, C-Bibliotheken einzubinden, ist es von Vorteil, wenn man C schon beherrscht.

Für die Urlaubszeit habe ich mir mal Haskell vorgenommen. Was mir persönlich daran gefällt - abgesehen von dem Reiz der funktionalen Sprache und der ganz anderen Denkweise - ist wie bei Python ein interaktiver Interpreter (neben dem Compiler) und die Möglichkeit mit beliebig großen Ganzzahlen rechnen zu können.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Karl hat geschrieben:Kann man damit dann wirklich nichts als 2.Sprache anfangen?
Es soll doch durch das funktionale Konzept einiges leichter sein (zB Rekursion oder sowas).
Ich habe nicht gesagt, dass man mit Haskell nichts anfangen kann, nur scheint es mir als zweite Sprache für Alltagsaufgaben zu kompliziert. Naja, immerhin gibt es Hackage

Übrigens: *Die* Sprache der Rekursion ist ja traditionell eher Scheme, schließlich wurde "The Little Schemer", das kanonische Rekursionslehrbuch, genau dafür geschrieben :D
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
herakles
User
Beiträge: 5
Registriert: Mittwoch 8. Juli 2009, 15:08

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.
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

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.
Das halt ich ich für ein Gerücht...
Und die Kombo Python+C deckt auch >95% der Problemstellungen ab die man normalerweise antrifft.
Wohl eher 99,9%.
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?
So schwierig ist C nicht. C ist eine minimalistische Sprache. Die Lernkurve hat bloß einen großen Srpung in der Mitte. Wenn man einmal das Konzept von Pointern und der statischen Typisierung verstanden hat, ist eigentlich alles recht einfach.
Zudem ist die C-Syntax nun mal der Standard (ob einen das nun gefällt oder nicht (mir sicher nicht)). Und bevor man sich mit irgendwelchen Exoten (APL, Forth) beschäftigt, sollte man sich erstmal den Basics zuwenden. Und wenn es nur ist um zu verstehen warum Software auch heute noch so oft abstürzt.

MFG HerrHagen
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

herakles hat geschrieben: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?
Du hast nicht genau gesagt, was du damit machen willst. Je nachdem was du vorhast kann die Antwort irgendwo zwischen "Nein, ganz sicher nicht" und "Ja, umbedingt" rangieren.
herakles hat geschrieben:Es gibt aber doch Menschen die es für praktische Tätigkeiten einsetzen:

http://araujoluis.blogspot.com/2007/04/ ... aming.html
Das habe ich nicht bestritten. Nur vermute ich, dass Kosten/Nutzen für praktische Sachen bei ganz vielen Sachen sich nicht rentieren. Wobei es natürlich schwer ist, bei Kosten/Nutzen in irgendeiner Sprache im vergleich zu Python zu Punkten.
herakles hat geschrieben:Empfehle allen Freunden des funktionalen und von Python folgende Seite durchzulesen:
Kann da nicht zustimmen. Er jammert das C# keine funktionale Sprache ist und die Frameworks nicht funktional sind. Das ist so als würde er bei Haskell-Libraries jammern, dass sie nicht objektorientiert sind.
herakles hat geschrieben: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.
Eher Haskell.
herakles hat geschrieben:Auch eine viel diskutierte schwierige Entscheidung. Scheme ist tatsächlich "reiner". Dafür ist cLisp für den praktischen Eisatz deutlich besser geeignet.
Du scheinst hier "just for fun" mit "enlightenment" mit "practical use" zu mischen. Für den praktischen Einsatz ist Scheme auch brauchbar, das einzige Problem ist halt, dass es weniger Libraries gibt (dafür bringen die Implementationen oftmals mehr mit, als die CL-Implementationen). Naja, wie man halt brauchbar definiert. Ich habe 2 Tage für ein (funktionales) Scheme-Programm gebraucht, was in Python imperativ nach 30 Minuten fertig wäre. Mit CL wäre das imperativ vielleicht 1,5 Tage gewesen.
herakles hat geschrieben: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?
Wenn du einen Ersatz für C++ suchst, dann ist D wohl interessanter.
herakles hat geschrieben: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.
Wenn du komische Zeichen im Quellcode magst - Fortress unterstützt auch so etwas.
herakles hat geschrieben: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?
Anwendungsgebiete: Hacken aus Spaß und Freude. Oder wie Zed Shaw es sagte: "Factor ist cool, weil es nie, unter keinen Umständen Enterprise werden wird". Stärken sind wohl die wahnsinnig reguläre Syntax, Schwächen sind die IMHO relativ geringe Abstraktion. Das man bei Funktionsaufrufen schauen muss dass die Parameter richtig auf dem Stack liegen und dass dann die Funktion nicht irgendeinen Blödsinn mit dem Stack anstellt ist nicht ganz so übersichtlich. Auch kommen mir stackbasierte Programme "rückwärts" vor.
herakles hat geschrieben:uC-Programmierung, OS-Programmierung wären Bereiche.
Nein und nein. Wir programmieren unseren Atmega8515 mit C und würden nie im Leben auf die Idee kommen dort Assembler rauszupacken. Auch in einem OS ist der Assembler-Anteil sehr überschaubar.
herakles hat geschrieben:Aber wenn schon Assembler, dann bräuchte man doch erstmal C-Kenntnisse oder nicht?
Nein, wie kommst du darauf?
herakles hat geschrieben: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.
Ja, kommt alle paar Monate auf TheDailyWTF.
herakles hat geschrieben: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.
Neben MLdonkey für OCaml und Unison sowie darcs für Haskell gibt es nichts bekanntes.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Ich glaube das Thema alternative Sprachen wurde hier schon einige male diskutiert. Dennoch..

Ich halte C/C++ eigentlich für ein MUSS. Es ist speziell in der Industrie noch immer der Standard. Auch wenn zumindest C etwas ärmlich an Funktion daherkommt. C++ hat mit der STL schon einiges zu bieten.

Haskell gehört ebenso zu meinen Favoriten. Bedarf aber immer einem Stück Motivation und vor allen Dingen Durchhaltevermögen. Z. Bsp. die Tatsache das es keine Schleifen gibt ist für mich immer wieder eine Challenge. Ohne Übung lässt sich bei weitem nicht so intuitiv ein Problem lösen.

Selbst bin ich auch an OCaml interessiert. Vielversprechend.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Wenn es einem um "Erleuchtung" und das Erweitern des eigenen Horizonts geht, würde ich extreme Sprachen vorschlagen, die sich auf ein Paradigma konzentrieren. Pragmatischer sind Multiparadigmen-Sprachen, wo die einzelnen Paradigmen dann natürlich schwerer zu erlernen sind, weil sie zu vermischt sind.

Für rein funktionale Programmierung mit statisches Typsystem bietet sich ML (moderne Variante mit ein bisschen Objektorientierung ist OCaml) an. Für funktionale Programmierung mit dynamischem Typsystem würde ich Scheme empfehlen. Scheme ist zudem ideal, wenn man Metazirkularität und Homoikonizität kennenlernen möchte. Siehe auch http://www.python-forum.de/post-83870.html#83870

Haskell ist rein funktional, statisch getypt und träge in der Auswertung, was der Sprache einen ganz eigenen Twist gibt. Wer in die Welt der Monaden und Arrows vordringen will, ist hier richtig.

Für echte Objektorientierung führt ein Weg an Smalltalk vorbei, schon weil das Smalltalk-System historisch nicht nur wichtig als Programmiersprache ist, sondern auch für Maus, GUIs und Entwurfsmuster wie MVC und MVP. Für den Extrakick an Strangeness lohnt ein Blick auf Self, Io oder, zusammen mit den beiden oben genannten Schlagworten auf Ola Binis Ioke.

Stackbasierte Programmiersprachen wie Forth sind einfach anders und erlauben sowohl maschinennahe Programmierung als auch starke Abstraktionen. Factor ist eine moderne Implementierung. Wer eine Sun Sparc, einen PowerPC-Mac oder sonst ein Gerät mit OpenBoot BIOS hat, kann dort übrigens direkt Forth benutzen, es ist eingebaut. Ist es nicht cool, dass die nakte Maschine Fibonacci-Zahlen berechnen kann: `: fib dup 2 < if drop 1 else dup 1- fib 2- fib + then ; 10 fib`. Siehe auch http://www.python-forum.de/post-122068.html#122068

Prolog kann man machen, bringt einem aber IMHO nicht so viel. Selbst Syntax, aber funktional und nebenläufig ist Erlang. Kann man auch machen.

Ada, C, usw. finde ich zu gewöhnlich. Assembler bringt außer Schmerzen glaube ich auch nicht viel. Ich habe nach Basic zwar Z80 (teilweise sogar im Hexcode) erlernt, aber ich denke nicht, dass man heutzutage noch diesen Weg gehen muss.

Wichtig ist eigentlich nur eins: Wenn man eine neue Sprache erlernen will, darf man nicht einfach die bekannte Sprache in einer Syntax einzusetzen versuchen, sondern muss sich auf die neue Sprache auch wirklich einlassen.

Stefan
Panke
User
Beiträge: 185
Registriert: Sonntag 18. März 2007, 19:26

Es gab mal einen Ego-Shooter in Haskell.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

herakles hat geschrieben:Ü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?
Was meinst du in diesem Zusammenhand mit „Skalierbarkeit“?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Für Smalltalk-80 wurde Anfang der 90er noch bevor es Java gab der JIT-Compiler erfunden. Es hat Jahre gedauert, bis Java aufholen konnte und jetzt mit Hotspot die selbe VM-Technologie benutzt und weiter entwickelt hat, wie sie für Smalltalk (genauer Self) entwickelt wurde. Googles V8 JavaScript-Engine benutzt den selben Ansatz und ist daher mit Abstand die schnellste Implementierung. Prinzipiell kann die Performance daher vergleichbar mit Java und C++ sein. Viele existierende Systeme sind aber irgendwo auf dem Weg zu diesem Ziel bei "gut genug" stehen geblieben bzw. hatten wie CPython nie ein JIT-Compiler.

Squeak-Smalltak ist ein reiner Interpreter und von der Performance gleichauf mit CPython - jedenfalls was einen kurzer Test für Fibonacci-Zahlen angeht. 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.

Was mit Skalierbarkeit gemeint ist, kann ich auch nur raten.

Wie bei CPython haben alle mir bekannten Smalltalk-Systeme ein Problem mit Mehrkernsystemen, da die Klassenbibliothek nicht für mehrere Threads ausgelegt ist. Das schränkt die Skalierbarkeit ein, denn man muss jetzt über Betriebssystemprozesse skalieren und jeder Prozess will ein komplettes Smalltalk-System mit eigenen Objekte und 10+ MB Hauptspeicher oder so haben. Die selbe Einschränkung hält aber auch Ruby-on-Rails-basierte Systeme davon ab, beliebt zu sein. Dort geht man von 50+ MB pro Prozess aus. Man müsste es JRuby nachmachen und ein JSmalltalk basierend auf der JVM entwickeln. Dabei hätte man natürlich die selben Probleme wie JRuby, auf einer eigentlich zu statischen Plattform laufen zu müssen, könnte aber die selbe Performance erreichen.

Ein Nachteil ist IMHO eher, dass die Entwicklungsumgebungen, auch wenn sie in den 80er und 90er Jahren führend waren, irgendwie in die Jahre gekommen sind. Squeak-Smalltalk wirkt so einfach fremdartig. Das Pharo-Projekt, auf dem jetzt Seaside aufbaut, bemüht sich allerdings, dies ein bisschen abzumildern. Es gibt da jetzt z.B. neuerdings moderne Truetype-Fonts mit Antialiasing, so wie das native UIs schon seit 10 Jahren oder so haben. Squeak zeichnet, das sollte man erwähnen, wie das Original-Smalltalk-80 von dem es geklont ist, sein UI bis zum letzten Pixel komplett selbst. Es lebt in einem Image, einem Speicherdump aller Objekte und man kann eigentlich sagen, dass das Original-Smalltalk seit es irgendwann im Jahre 1978 gestartet wurde, seit dem nie wieder beendet wurde. Es wird zum Speichern einfach nur angehalten und eingefroren.

Stefan
Antworten