BlackJack hat geschrieben:@sma: Man sieht ja wie sich Lisp und Forth durchgesetzt haben.
Als ich das abgeschickt hatte, wusste ich, dass dieses Argument kommen würde und bereute schon den Beitrag :) Zu Lisp kann ich nur sagen: Warten wir mal ab, ob auch noch über Java und C# in 50 Jahren gesprochen wird. Es ist da ja nicht die Erweiterbarkeit das Problem, sondern die "ungewöhnliche" Syntax. In beiden Sprachen muss sich der Mensch in der Syntax dem Computer unterwerfen, damit dieser es einfacher hat, die Sprache zu verarbeiten. So etwas sollte heutzutage nicht mehr notwendig sein.
BlackJack hat geschrieben:kommt dann noch dazu, dass man nicht in einer Standarddoku nachsehen kann, sondern auf die jeweiligen Syntaxerweiterungen eingehen muss.
Der Überganz von Syntax zu Funktionen einer Standardbibliothek ist fließend und die Grenze beliebig. Ich muss auch nachgucken, was "kz4xx()" bedeutet, wenn dies keine von den von mir auswendig gelernten Standardfunktionen ist. In beiden Fällen sollte das "principle of least surprise" gelten und die Syntax (also die Funktionsnamen) möglichst gut zum Problem passen.
Manchmal will man aber nicht nur Funktionen passend benennen, sondern auch Schleifen oder Bedingungen und hier ist es dann sinnvoll, wenn man auch die Struktur des Programms anpassen kann. C# führt extra properties und events in der Sprache ein, um besser UIs programmieren zu können. Die führen eine SQL-artige Syntax ein, um besser (relationale) Datenbankabfragen integrieren zu können. Sie führen alle Arten von Annotationen ein, um dem Compiler besondere Dinge zu zeigen und bestimmte Metadaten für z.B. den UI-Builder erzeugen zu lassen.
Stefan