Welche andere Sprache?

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich habe Pharo auch kurz laufen gelassen und das hat auf mich den Eindruck eines Squeaks gemacht, dass einfach nur ein Mac-OS X Theme hat, aber immer noch genauso "opak" ist wie Squeak. Nur halt nicht ganz so hässlich, aber um ehrlich zu sein ist die Pseudo OS X optik auf einem GTK+ Desktop ähnlich deplaziert.
hendrikS hat geschrieben:
Leonidas hat geschrieben:Die Klammern sind aus gutem Grund so
Welcher denn?
Das du den Code als Daten auffassen kannst, nämlich Listen. Wenn du anfängst mit Makros zu basteln stellst du fest, dass es kaum bequemere Möglichkeiten gibt, Code zu verarbeiten als eben den AST, den die Listenstruktur darstellt.

@Bernhard
Neben dem von BlackJack angesprochenen SICP gibt es auch noch "How to Design Programs" (HtDP), was auch ggf. interessant sein konnte. SICP finde ich zum Lernen der Programmiersprache eher weniger geeignet, denn es ist eigentlich kein Scheme-Lehrbuch. Was vielleicht für dich interessant sein könnte wäre "The Scheme Programming Language", welches wohl *das* Buch zu Scheme als Sprache ist.

Als Implementation wäre wohl die erste Anlaufstelle Racket, DrRacket als Editor hilft einem Lisp-Code effizient zu bearbeiten und hat von Haus aus brauchbares Klammern-Matching. Der Scheme-Interpreter selbst überzeugt mich persönlich nicht mehr so sehr, aber für den Anfang kann man den sicher auch hernehmen. Ein Argument was ziemlich für Racket spricht ist, dass es eine aktive Community auf der Racket-Mailingliste hat.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Leonidas hat geschrieben:Ich habe Pharo auch kurz laufen gelassen und das hat auf mich den Eindruck eines Squeaks gemacht, dass einfach nur ein Mac-OS X Theme hat, aber immer noch genauso "opak" ist wie Squeak. Nur halt nicht ganz so hässlich, aber um ehrlich zu sein ist die Pseudo OS X optik auf einem GTK+ Desktop ähnlich deplaziert.
Keine Sorge, gibt noch nen Vista und ein Win2k-Theme ;)
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Leonidas hat geschrieben:Ich habe Pharo auch kurz laufen gelassen und das hat auf mich den Eindruck eines Squeaks gemacht, dass einfach nur ein Mac-OS X Theme hat, aber immer noch genauso "opak" ist wie Squeak. Nur halt nicht ganz so hässlich, aber um ehrlich zu sein ist die Pseudo OS X optik auf einem GTK+ Desktop ähnlich deplaziert.
Das Schöne an Squeak und Pharo ist ja, dass alles selbst gezeichnet wird, sodass man mit wenig Mühe das UI komplett ändern könnte. Macht nur offenbar keiner – jedenfalls keiner, der ein bisschen Gespür für UIs hat. Leider.

Doch das macht Smalltalk jetzt nicht weniger interessant.

Vor 10 Jahren, noch vor Morphic, als Squeak noch das ursprüngliche MVC-UI hatte, hat your's truly mit ein bisschen Aufwand folgendes gebastelt, weil mir schon da diese quietschbunten Fenster auf den Senkel gingen:
Bild
Bild

Und nur 3 Jahre zuvor war es schon ein Novum, dass das UI überhaupt farbig war. Smalltalk-80 war schwarzweiß und konnte nur mit passenden Mustern so etwas wie grau darstellen. Das wiederum ging auch bereits 1976 schon, 4 Jahre bevor ein IBM PC 80x25 Zeichen darstellen konnte und ein Homecomputer gerade mal 40x25 Zeichen als Fernsehbild.

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

Mein Pharo-Buch ist noch in der Post - schwer zu verstehen, dass es zwar eine deutschsprachige Website des Book-on-demand-Verlages gibt aber keine Druckerei in Deutschland. Die nötigen Geräte gibt es doch in Deutschland - wohl nur noch keinen der die entsprechende Infrastruktur geschaffen hat.

Nur locker zum Thema des Threads gehörend aber vielleicht doch interessant: Ich habe ein noch nicht erschienenes Buch bei Amazon gefunden für Leute wie mich:

Bruce A. Tate:
Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages
300 pages; Pragmatic Bookshelf; 1 edition (September 25, 2010)
ISBN-13: 978-1934356593

Aus der Beschreibung: "Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell. With Seven Languages in Seven Weeks, by Bruce A. Tate, you'll go beyond the syntax-and beyond the 20-minute tutorial you'll find someplace online. This book has an audacious goal: to present a meaningful exploration of seven languages within a single book. ..."

Gruß,
Bernhard
BlackJack

@Bernhard: Da bin ich ja irgendwie skeptisch. Das macht eine Woche pro Sprache. Wenn es so organisiert ist, dass man Gemeinsamkeiten der Sprachen zusammenfasst und dann später nur noch die Abweichungen und Zusätze davon pro Sprache lernt, ist es vielleicht etwas mehr Zeit. Da muss ich jetzt aber ganz spontan an Peter Norvig's Artikel Teach Yourself Programming in Ten Years denken. Gibt auch eine deutsche Übersetzung.

Interessant und hier nicht unpassend ist der letzte Absatz im Anhang über die Wahl der (ersten) Programmiersprache:
Teach Yourself Programming in Ten Years -- Appendix: Language Choice hat geschrieben:Given these criteria, my recommendations for a first programming language would be Python or Scheme. But your circumstances may vary, and there are other good choices. If your age is a single-digit, you might prefer Alice or Squeak (older learners might also enjoy these). The important thing is that you choose and get started.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich glaube es geht da nur um die Vorstellung von 7 verschiedenen Sprachen denn Scala ist sicher genug Thema für nen Monat intensives lernen, Clojure als Lisp zwingt einen Syntaktisch zum umdenken und Prolog und Haskell zwingen auch schon semantisch zum umdenken ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten