Welche andere Sprache?

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Bernhard
User
Beiträge: 136
Registriert: Sonntag 15. Januar 2006, 20:31
Wohnort: Greifswald
Kontaktdaten:

Sorry, meine Frage ist offensichtlich off topic in diesem Forum, aber in diesem Forum hat sie angefangen: Hier habe ich vor langem mal den Tipp gelesen, man solle zum Programmieren lernen immer mal wieder eine andere Sprache lernen. Nicht um sie produktiv zu nutzen sondern um sein Verständnis mit neuen Konzepten zu erweitern.
Daraufhin habe ich mich daran gemacht Haskell zu lernen. Das war eine total spannende Erfahrung die mich auch in Python weiter gebracht hat. Jetzt wäre ich so weit, mich mit einer nächsten Sprache zu beschäftigen. Möglichst lehrreich, spannend und nicht zu komplex, weil ich mach das ja nur im Hobby.

Überlegt habe ich mir Lisp und Smalltalk. Gibt es Meinungen dazu, welche Sprache sich für mich mehr lohnt? Und wenn ja, welche Umsetzung? Nach kurzer(!) Recherche scheint mir Squeak die ausgewachsenste freie Smalltalk-Variante zu sein. Stimmt das? Bei Lisp hatte ich an Clojure gedacht - von wegen aktiver Community und leichtem Zugang zu großen Java Libraries. Kommt das so hin?

Bin für guten Rat immer zu haben.

Lieben Gruß,
Bernhard
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Musst du dich jetzt wirklich zwischen den beiden entscheiden? Deine Wahl ist durchaus gut und beide Sprachen folgen ganz anderen Paradigmen, von daher macht es durchaus Sinn beide zu lernen. Lisp vorallem wegen der Ausdruckstärke und Macros, Smalltalk um ein besseres Verständnis von OOP zu bekommen.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ich teile die Einschätzung, dass Clojure ein guter Einstieg in die Welt der Lisp-Dialekte ist. Diese würde ich ansonsten in CommonLisp, Scheme und Dylan einteilen, wobei letzteres kaum einer kennt und ich auch nicht die Dylan-Version meine, die so einen imperativen Pascal-artigen Sprachüberzug bekommen hat, sondern das ursprüngliche Dylan (vom dem Python 2.x die Vererbungsstrategie hat). Scheme ist eine der reinsten Sprachen, die minimale Konzepte mit maximaler Ausdruckskraft. Für jemanden, der Haskell kennt, ist da aber wenig neues. CommonLisp halte ich ehrlich gesagt nicht mehr für zeitgemäß. Für beide Sprachvarianten gäbe es es auch für die JVM, z.B. ArmedBear CommonLisp oder SISC. Wie auch immer, Clojure ist glaube ich die pragmatischere Wahl und hat als einziger Lisp-Dialekt für die JVM auch eine signifikante Community.

Smalltalk ist immer eine Reise wert. Ich würde Pharo statt dem urspünglichen Squeak empfehlen. Das ist eine Variante von einer Handvoll Leute, denen das Hin- und Her mit Squeak zu viel wurde und die ein brauchbares Smalltalk für Software-Entwickler statt einer chaotischen Bastelwerkstatt (ich überspitze das hier) haben wollten. Wenn dich Web-Entwicklung interessiert, würde ich empfehlen, Smalltalk an Hand von Seaside zu lernen. Eine Alternative zu Pharo ist VisualWorks Non Commercial, das ist ein professionelles Smalltalk und IMHO immer noch das beste und vor allen Dingen schnellste System. Mit dem habe ich vor 15 Jahren (wie die Zeit vergeht) jahrelang gearbeitet. Wirklich viel hat sich in der Zeit aber leider auch nicht geändert, seufz. Oh, und vielleicht ist statt Smalltak auch Self eine interessante Alternative. Produktiveinsatz garantiert unmöglich ;) Self ist eine geniale Vereinfachung von Smalltalk und Vorbild für das Objektsystem von JavaScript (und NewtonScript) und die Self-VM war Basis für Suns Hotspot-VM.

Wenn's gerne noch etwas exotischer sein darf, würde ich einen Blick auf Factor empfehlen (ich habe dazu hier mal ein Tutorial geschrieben, wie man einen Interpreter für ein winziges Subset von Factor in Python bauen kann). Auch Io ist eine interessante Sprache, eigentlich ein Self mit etwas anderer Syntax. Interessanter finde ich da von den Konzepten aber Ioke von Ola Bini, der allerdings gerade angekündigt hat, nach Ioke, was eher ein Experiment war, eine neue Sprache Seph zu entwerfen, die dann auch praxistauglich sein soll. Ioke hat viel von Io mit einer Prise Ruby und Lisp. Seph wird davon das beste übernehmen, ist allerdings stärker von Clojure und Erlang beeinflusst. Beide seine Sprachen laufen auf der JVM.

Stefan
Bernhard
User
Beiträge: 136
Registriert: Sonntag 15. Januar 2006, 20:31
Wohnort: Greifswald
Kontaktdaten:

DasIch hat geschrieben:Musst du dich jetzt wirklich zwischen den beiden entscheiden?
Um beide gleichzeitig zu lernen ist mein Gehirn zu klein und meine Zeit zu knapp bemessen. Also werde ich erstmal eine lernen und vielleicht in zwei Jahren die andere. Oder lief der Vorschlag darauf hinaus beide "ein bisschen" zu lernen und sich dann zu entscheiden in welche man einsteigt?
sma hat geschrieben:Smalltalk ist immer eine Reise wert. Ich würde Pharo statt dem urspünglichen Squeak empfehlen.
Von Pharo war ich zurück geschreckt weil da gerade erst Version 1.0 veröffentlicht wurde. Ist diese Version 1.0 so ausgereift, dass man sie dem Anfänger empfehlen kann?

Eine für den Produktiveinsatz garantiert unmögliche Sprache will ich nicht wirklich lernen. Ich kann nicht behaupten, Haskell wirklich zu können, aber mein Lernprojekt hat durchaus Bekanntschaft erreicht und wird von Leuten produktiv eingesetzt. Gut nur, dass die alle nicht sehen wie schrecklich der Source-Code teilweise aussieht und wie man an der Qualität des Codes sehen kann, welche Funktionen ich früh und welche ich spät geschrieben habe. ... Das ist jetzt free software aber nicht open source - aber so hatte es einen doppelten Nutzen :wink:
sma hat geschrieben:Wenn's gerne noch etwas exotischer sein darf,...
Nee, danke, noch exotischer brauche ich nicht. Ich brauche etwas wo es mindestens zwei brauchbare Tutorials und eine Mailing-List mit mehr als drei Teilnehmern gibt :lol:

Danke bis dahin,
ich bin weiter an allen Meinungen interessiert,
Bernhard
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Bernhard hat geschrieben:
sma hat geschrieben:Smalltalk ist immer eine Reise wert. Ich würde Pharo statt dem urspünglichen Squeak empfehlen.
Von Pharo war ich zurück geschreckt weil da gerade erst Version 1.0 veröffentlicht wurde. Ist diese Version 1.0 so ausgereift, dass man sie dem Anfänger empfehlen kann?
Ja. Pharo setzt auch auf Squeak auf. Im Unterschied zu Squeak wurde gehörig aufgeräumt und jede Menge Unittests implementiert. „1.0“ bedeutet bei vielen Open-Source Projekten meist auch das sie stabil sind. Übrigens wurde vor kurzem schon die Version 1.1 von Pharo veröffentlicht. Wenn du noch mißtrauisch bist, kannst dir ja mal die Changelogs von 1.0 und 1.1 durchlesen.

Das schöne an Smalltalk ist, dass fast alles in Smalltalk selbst implementiert wurde und nicht wie in Python in C. Man kann also leichter mal nachgucken wie irgendwas genau funktioniert. Smalltalk ist definitiv zu empfehlen.
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Kannst Du Haskell schon so gut, daß Du es beiseite legen kannst? Übung macht den Meister. Ich glaube das gilt gerade für Haskell.
Auf Lisp, Scheme, Clojure hätte ich überhaupt keinen Bock. Die Klammern nerven einfach. Auch Factor ist nichts für den Alltag. Für Taschenrechner fand ich UPN ok, aber sonst große Grütze.
Testen würde und werde ich mal Go.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

hendrikS hat geschrieben:Testen würde und werde ich mal Go.
Im Gegensatz zu den anderen Sprachen von denen du anscheinend keine Ahnung hast ist dies die einzige mit der er sicher nichts neues lernt. Go als Sprache hat keine neuen interessanten Features, als Sprache ist sie langweilig und als modern würde ich sie auch nicht bezeichnen.
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

DasIch hat geschrieben:Go als Sprache hat keine neuen interessanten Features, als Sprache ist sie langweilig und als modern würde ich sie auch nicht bezeichnen.
Nun, wer weiß. Kommt auf einen Verusch an. Modern ist doch eher ein subjektiver Begriff.
Bernhard
User
Beiträge: 136
Registriert: Sonntag 15. Januar 2006, 20:31
Wohnort: Greifswald
Kontaktdaten:

hendrikS hat geschrieben:Kannst Du Haskell schon so gut, daß Du es beiseite legen kannst?
Hallo Hendrik,

ich glaube wenn ich danach gehe muss ich den Rest meines Lebens mit Haskell verbringen. Je mehr ich davon verstehe umso mehr erkenne ich, was ich alles noch nicht begriffen habe.
Für den Moment bin ich stolz, dass ich auch in Python und in R mit map und apply auskomme. Insgesamt finde ich Haskell toll und bin nicht "fertig" damit.
Als nächstes versuche ich jetzt mein Verständnis von Objektorientierung zu vertiefen und danach werde ich ausprobieren, wie ich so mit runden Klammern zurecht komme. Als erstes habe ich mir heute mal das Pharo-Buch bestellt.

Was Go angeht - ich habe keine Ahnung davon, aber ich will mich derzeit lieber mit Sprachen beschäftigen die den Test der Zeit bestanden haben und die wirklich schlaue Menschen auch nach vielen Jahren immer noch gut finden.

Vielen Dank an alle für Ihre Beiträge,
Lieben Gruß,
Bernhard
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Freie Software setzt Zugang zum Quelltext voraus.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

mkesper hat geschrieben:Freie Software setzt Zugang zum Quelltext voraus.
Das hat jetzt Bezug zu was?
Bernhard
User
Beiträge: 136
Registriert: Sonntag 15. Januar 2006, 20:31
Wohnort: Greifswald
Kontaktdaten:

Ich hatte geschrieben, dass ich um Haskell zu lernen ein produktiv einsetzbares Programm geschrieben habe das frei aber nicht open source sei. mkesper hat mich berichtigt, dass mein Programm zwar kostenlos aber nicht frei ist, solange ich den Sourcecode nicht veröffentlicht habe.
Ich nehme es gerne zur Kenntnis - auch menschliche Sprache sollte -wenn möglich- exakt sein.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Bernhard hat geschrieben:Ich nehme es gerne zur Kenntnis - auch menschliche Sprache sollte -wenn möglich- exakt sein.
Naja, GNU und die FSFE haben zum Glück nicht die Definitionshoheit von „frei“. ;) Aber das ist ein anderes Thema… :)
BlackJack

Also ist Freeware in der Regel nicht frei!? Das ist dummdreiste GNU und FSF Gehirnwäsche… :twisted:
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Free as in Free Speech, not as in Free Beer
:roll:

Ich finde btw dass "kostenlos" Freeware weit besser beschreibt als "frei", letzteres sehe ich idR nicht als verschlissenes "kostenfrei" an.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Bernhard hat geschrieben:Überlegt habe ich mir Lisp und Smalltalk. Gibt es Meinungen dazu, welche Sprache sich für mich mehr lohnt? Und wenn ja, welche Umsetzung? Nach kurzer(!) Recherche scheint mir Squeak die ausgewachsenste freie Smalltalk-Variante zu sein. Stimmt das? Bei Lisp hatte ich an Clojure gedacht - von wegen aktiver Community und leichtem Zugang zu großen Java Libraries. Kommt das so hin?
Kurze frage: geht es um das Lernen von Sprachen oder das Implementieren von irgendwelcher "nützlichen" Software? Weil in ersterem Fall der Zugang zu Java-Libraries eher untergeordnete Rolle spielt, zudem das Interfacen mit OOP-Java-Libraries auch nicht umbedingt Lisp-typisch ist, es wirkt auf mich einfach fremd. Daher würde ich als Lisp Scheme vorschlagen:
  • Viele Implementationen verfügbar, auf welche auf der JVM wenn man unbedingt will
  • Richtige TCO, nicht dieses recur-Zeug was Clojure macht
  • Hygienische Makros. Makros empfinde ich als Kernkonzept von Lisp und da ist Scheme den anderen Dialekten mit seinm Makrosystem meiner Meinung nach weit vorraus. Sowohl den unhygienischen CL-Makros als auch dem was Clojure da macht, was auf mich auch wie ein Rückschritt aussieht.
  • Continuations. Man sollte das mal gesehen haben, ebenso wie den Continuation-Passing-Style.
Was den Rest zu Smalltalk, Ioke & Co. angeht würde ich sma's Wort dafür nehmen. Allerdings muss ich sagen dass mich Smalltalk nicht sonderlich anspricht, vielleicht auch eben wegen der traurigen Squeak/Pharo-Situation. Vielleicht wird GNU Smalltalk ja irgendwann mal erwachsen.
hendrikS hat geschrieben:Kannst Du Haskell schon so gut, daß Du es beiseite legen kannst? Übung macht den Meister. Ich glaube das gilt gerade für Haskell.
Auf Lisp, Scheme, Clojure hätte ich überhaupt keinen Bock. Die Klammern nerven einfach. Auch Factor ist nichts für den Alltag. Für Taschenrechner fand ich UPN ok, aber sonst große Grütze.
Testen würde und werde ich mal Go.
Wie so oft stimme ich DasIch zu, von den genannten Sprachen ist Go so ziemlich die langweiligste. Man kann damit zwar paar Sachen implementieren, aber die praxisrelevant ist nicht so hoch dass es sich für den Alltag sonderlich qualifizieren würde und der Lerneeffekt ist nicht groß genug als dass man sie für die persönliche Erleuchtung lernen müsste.

Und hendrikS, deine Argumente gegen Lisp und Factor sind ziemlich lasch. Die Klammern sind aus gutem Grund so und mit einem anständigen Editor ist das Bearbeiten von Lisp-Code sehr angenehm. Ich habe mir in OCaml immer eine Syntax gewünscht die nicht so viele syntaktische Sonderfälle und komische Präzedenzen hat. Und UPN ist nur dann Grütze wenn man noch nie gesehen hat wie mächtig und elegant Kombinatoren sind (ich glaub die Inspiration für Kombinatoren kam ursprünglich von Joy). Natürlich, das ist ein Konzept das man erstmal verstehen muss, aber ich glaub in diesem Thread ging es auch ums lernen.

Achja, hier meine Lieblingsbilder zur Lisp-Klammerdebatte:

Bild

Bild
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Bernhard
User
Beiträge: 136
Registriert: Sonntag 15. Januar 2006, 20:31
Wohnort: Greifswald
Kontaktdaten:

Hallo Leonidas,

es geht mir primär ums Lernen; wenn dabei auch was "nützliches" entstehen könnte wäre das ein netter Bonus, ist aber nachrangig. Deine Argumentation für Scheme ist für mich noch nicht verständlich, aber das würde im Verlauf der Beschäftigung damit sicher noch kommen.

Wenn ich Deinen Beitrag in zwei Sätzen zusammenfassen müsste käme heraus:
1. Smalltalk ist nicht Deine Sprache und ich soll auf sma hören (was ich mit der Pharo-Buchbestellung quasi begonnen habe)
2. Die Idee ein Lisp als zweites auf die Liste zu setzen ist gut und aus methodischen Gründen fändest Du Scheme besser als Clojure.

Kannst Du mir in Bezug auf Scheme eine bestimmte Implementierung empfehlen oder nehme ich anfangs einfach was ich den Ubuntu-Repositories finde? Wichtiger, kannst Du ein spezielles Tutorial/Lehrbuch/... empfehlen? In Gegensatz zu Pharo gibt es zu Scheme unüberschaubare Mengen an Implementierungen und Lehrtexten.

Lieben Gruß,
Bernhard
BlackJack

@Leonidas: Die Lisp-Bilder sind witzig. Wenn signifikanter "whitespace" "sichtbarer" wäre, könnte man da was ähnliches für Python (und Haskell, und CoffeeScript) machen. ;-)

Was meinst Du mit der "Squeak/Pharo-Situation"? Ich habe mir Pharo gestern mal angeschaut und finde das eigentlich ganz nett. Bei Squeak hat mich dieses bunte, "hässliche" Aussehen immer gestört. Ich weiss das ist etwas subjektiv, aber ich könnte mir halt nicht vorstellen ein ernsthaftes Programm in dieser Kinder-Optik an den Mann zu bringen. Pharo kann sich da eher sehen lassen.

@Bernhard: "Die" Website für Scheme: http://schemers.org/

Ein gutes Buch, was es auch Online gibt: "Structure and Interpretation of Computer Programs": http://mitpress.mit.edu/sicp/

Das haben sie am MIT verwendet um Informatikern programmieren beizubringen. Bis sie dann von Scheme auf Python umgestiegen sind. :-)
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Leonidas hat geschrieben:Die Klammern sind aus gutem Grund so
Welcher denn?
BlackJack

@hendrikS: Sehr einfache, reguläre Syntax für Programm und Daten, wobei Programme hier auch problemlos als Daten aufgefasst werden können und wie "normale" Daten manipuliert werden können.
Antworten