Die Welt außerhalb des eigenen Tellers ist immer interessant und über Programmiersprachen diskutieren ebenfalls... ;) Ein paar Kommentare zu dem bisherigen Thread...
Wenn es darum geht, Konzepte von Programmiersprachen zu studieren, würde ich besondere Programmiersprachen auswählen.
Boo würde ich nicht wählen, da dieses zu nah an Python und VisualBasic liegt. Vielleicht habe ich die Sprache nicht genug studiert, aber das einzige, was anders als bei Python ist, ist das optionale statische Typsystem - und das ist mit dem von VisualBasic vergleichbar. Auf mich wirkt es zudem, dass die Aufgabe, ein korrektes & vollständiges Typsystem zu entwickeln, unterschätzt und etwa naiv angegangen wird. Das macht mich misstrauisch. Zudem wird das Typsystem mit dem IMHO falschen Grund motiviert. Sie sagen, statische Programme sind schneller. Das ist so pauschal falsch. Sie sind nur einfacher schneller auszuführen, will sagen, man braucht einen nicht so schlauen Compiler. Wie auch immer, ein besserer Grund wäre die bessere Dokumentation von Schnittstellen, Interaktion mit .NET oder IDE-Unterstützung (in dieser Reihenfolge).
SharpDevelop ist glaube ich die Windows-Version, aber ihre Schwester, MonoDevelop, integriert nicht nur Boo, sondern auch Nermele. Dies ist eine objekt-funktionale Programmiersprache in der Tradition von O'Caml aus Polen. IMHO deutlich interessanter als Boo, wenn es um die Konzepte geht. Die Syntax ist aber - da absichtlich C#-ähnlich - ausgesucht häßlich.
Es wurde Objective-C erwähnt: Ich würde lieber vorschlagen, das Original, Smalltalk, zu studieren. Schließlich ist Objective-C der (gelungene) Versuch gewesen, die Konzepte von Smalltalk in C zu integrieren. Gerade für Ruby-Kenner sollte Smalltalk sehr vertraut wirken (jedenfalls wenn man sich an die Syntax gewöhnt hat), da Ruby fast als Smalltalk mit anderer Syntax angesehen werden kann.
Daher ist Smalltalk vielleicht nicht so spannend, wenn man etwas anderes kennenlernen möchte. Self ist eine aus Smalltalk abgeleitete OO-Sprache ohne Klassen, die ich persönlich als ein Highlight ansehe. NewtonScript, das Konzept von Self mit Pascal-Syntax kennt wahrscheinlich niemand, aber JavaScript sollte dem einen oder anderen bekannt vorkommen. Self war auch hier Vorbild. Die Sprache Io von Steve Dekorte ist eine moderne Version einer prototyp-basierten Sprache. Self mit Multimethoden gekreuzt ist Cecil, ein weitere interessante Sprache.
Multimethoden sind ein interessantes Konzept. CommonLisp hat sie, aber auch Dylan. Cecil und Goo sind zwei unbekannte Sprachen, die Self bzw. Scheme mit Multimethoden mischen - beide sind prototypbasiert.
Vielleicht lohnt auch ein Blick auf Guy Steeles neue Sprache: Fortress. Meines Wissens gibt es noch keinen Compiler dafür und nur eine halbfertige Sprachspezifikation. Doch es ist interessant, wie er sich das Fortran des dritten Jahrtausend (meine Worte, nicht seine) vorstellt. Es hat z.B. traits, eine weitere Erfindung von Self. Scheme, ein einfaches Lisp von Steele und Susmann ist eigentlich Pflicht zu kennen.
Oder wenigstens ML als einfache funktionale Sprache. O'Caml ist eine relativ (ist nicht alles relativ) beliebte objektorientiere Variante von Standard-ML. Noch spannender ist aber vielleicht Alice. Nicht nur der Name - und der offensichtliche Bezug zum Wunderland - ist bemerkenswert, sondern auch deren Möglichkeiten nebenläufiger Programmierung. Ansonsten ist sicherlich Haskell als Sprache mit träger Auswertung (auch call by need genannt) etwas, das bemerkenswert und untersuchenswert ist.
Nein, alle diese Sprachen haben keine wirkliche praktische Bedeutung neben Java, C#, usw. aber darum ging es doch nicht, oder?
Daher: Wer's wirklich exotisch haben will, und APL oder J, K und wie dessen Varianten noch heißen für zu gewöhnlich hält (diese Sprachen haben alle als Besonderheit Vektoroperationen) der schaue sich mal Joy an. Das ist ein funktionales Forth. Bemerkenswert ist nicht nur die Rekursionstheorie dazu, sondern auch das - wenn ich richtig informiert bin - der Author vorher die anderen Sprachen nicht kannte. Ähnlich wie bei Forth - wo Moore auch nichts von dem bisherigen Stand der Technik wusste und einfach nur ein Radioteleskop steuern wollte - ist das so ein neue Blick auf alte Themen. Cat ist eine andere funktionale Stack-Sprache, die von Joy inspiriert wurde und "zufällig" recht gut auf die .NET-VM abbildbar ist.
Das erwähnte Groovy finde ich wieder recht unspannend, da dies einfach ein Ruby-Bastard mit wenig neuen Ideen ist. Okay, Ruby hat eigentlich auch keine (oder wenige) neue Ideen, doch irgendwie finde ich Ruby elegant und Groovy, nun, dass kann sich nicht entscheiden, ob es aussehen will wie Java oder doch wie Ruby oder lieber etwas ganz anderes.
Was mich bei Boo wundert ist, dass map keine Methode des []-Array ist. Ist die Sprache eher funktional bzw. prozedural statt objektorientiert?
Dem Scheme-Beispiel kann ich ja noch eine Variante in Haskell beifügen, die noch etwas kürzer ist, weil man die anonyme Funktion nicht explizit hinschreiben muss
Wenn's um funktionale Sprachen speziell für die JVM oder .NET geht, sind F# und Scala noch erwähnenswert. Letztere gibt es für beide Plattformen und es ist eine elegante (die Syntax ist ein bisschen wie Python und Ruby) objekt-funktionale Compilersprache mit statischem Typsystem, der die gesamte Java- bzw. .NET-Bibliothek offen steht. C# 3.0 wird in dieser Beziehung aber auch recht gut sein.
Oh, noch ein paar kommerzielle Exoten gefällig: REBOL ist eine prefix-Sprache (genau wie Lisp aber ohne Klammern, also wie Logo) und hat einige interessante Konzepte übernommen - etwa das Code = Data ist. Curl ist eine aus T, einem Scheme-Dialekt entstandene Sprache, die versucht hat, HTML, CSS, usw. neu zu erfinden und eine einheitliche Syntax für Server und Client zu definieren. Eigentlich die richtige Idee, aber IMHO zu spät und eben kommerziell gewesen.
Schließlich fällt mir noch E ein, eine Sprache, die capability-basierte Sicherheitskonzepte integriert. IMHO sehr interessant, aber deren Webseite ist unaufgeräumt und wirkt überholt wenn nicht veraltet. Die Konzepte sind nichts desto trotz sehr interessant und selbst ohne das ist die Sprache eine nette aussehende funktionale Sprache, wo ich sympatisch finde, dass neue Methoden genau wie bei Logo mit "to" definiert werden.
Ich erwähnte schon nebenläufiges Programmieren: Erlang (eine funktionale Sprache mit Prolog-Syntax) ist hier ein Meilenstein. Es gibt auch einen Scheme-Dialekt namens Termite, der die selben Konzepte umsetzt. Ach, und Prolog ist natürlich auch durchaus studierenswert. Allerdings kann man das meist zusammen mit einer anderen Sprache wie Lisp, Scheme oder Smalltalk erledigen, da es eine gute Übung ist, einen Prolog-Interpreter in diesen Sprachen zu bauen.
Auch interessant sein soll Mozart/OS, doch das kenne ich (noch) nicht. Wer bei Haskell Monaden verstanden hat, kann sich ansonsten dort noch mal den Arrows widmen, ebenfalls ein Thema, zu dem ich leider nichts sagen kann.
Ansonsten: Zu einfachen prozeduralen Sprachen habe ich jetzt nichts weiter gesagt, weil hier eigentlich seit Algol-60 (das nach dem Erscheinungsjahr benannt ist) und Pascal (ca. 1972) nichts weiter zu vermelden ist.
Wer also auch dem Pragmatic Programmers Motto "lerne jedes Jahr eine neue Sprache" folgt, dem habe ich hier vielleicht einige Anregungen gegeben.
Stefan