Ich höre dieses Wort oft in Sätzen wie "Javascript ist eine sehr ausdrucksstarke Sprache". Bedeutet es nur, dass es nicht viele Regeln gibt, oder hat "ausdrucksstark" eine spezifischere Bedeutung?
Antworten
Zu viele Anzeigen?Ausdrucksstark" bedeutet, dass es einfach ist, Code zu schreiben, der sowohl für den Compiler als auch für einen menschlichen Leser leicht zu verstehen ist.
Zwei Faktoren, die für die Aussagekraft sorgen:
- intuitiv lesbare Konstrukte
- Fehlen von "Boilerplate"-Code
Vergleichen Sie dieses ausdrucksstarke Groovy mit dem weniger ausdrucksstarken Java-Äquivalent:
3.times {
println 'Hip hip hooray'
}
gegen
for(int i=0; i<3; i++) {
System.out.println("Hip hip hooray");
}
Manchmal tauscht man Präzision gegen Ausdruckskraft - das Groovy-Beispiel funktioniert, weil es Dinge voraussetzt, die man in Java explizit angeben muss.
Ich verstehe das so, dass es in der Lage ist zum Ausdruck bringen. Ideen/Algorithmen/Aufgaben in einer leicht lesbaren und prägnanten Form.
Normalerweise verbinde ich die Ausdruckskraft einer Sprache mit syntaktischem Zucker, obwohl das nicht immer der Fall ist. Beispiele in C# für eine ausdrucksstarke Sprache wären:
foreach
(anstatt die Iteration explizit zu schreiben)- die
using
Anweisung (anstatt die try/finally-Anweisung explizit zu schreiben) - Abfrageausdrücke (einfachere Syntax zum Schreiben von LINQ-Abfragen)
- Erweiterungsmethoden (ermöglichen die Verkettung von Methodenaufrufen, wiederum hauptsächlich für LINQ)
- anonyme Methoden und Lambda-Ausdrücke (was die Konstruktion von Delegaten und Ausdrucksbäumen erleichtert)
Ein anderes Beispiel wären Generika: Bevor C# Generika bekam, konnte man die Idee von "an" nicht ausdrücken. ArrayList
die nur Zeichenketten enthalten" im Code. (Sie können das natürlich dokumentieren oder Ihren eigenen Code schreiben. StringList
Typ, aber das ist nicht ganz dasselbe.)
Neal Grafter hat einen Blog mit einem guten Zitat daraus zu diesem Thema...
Meiner Meinung nach ist ein Sprachkonstrukt aussagekräftig, wenn man damit schreiben kann (und die Verwendung) einer API ermöglicht, die ohne das Konstrukt nicht geschrieben (und verwendet) werden kann.
Ich würde sagen, dass es bedeutet, dass Sie Ihre Gedanken natürlicher in Code ausdrücken können.
Das ist eine schwierige Frage.
Für mich hat es etwas mit der Leichtigkeit zu tun, mit der man seine Absichten zum Ausdruck bringen kann. Das ist in den verschiedenen Sprachen unterschiedlich und hängt auch stark davon ab, was man erreichen will. Es ist natürlich auch subjektiv und persönlich.
Es ist leicht zu glauben, dass eine höhere Sprache immer ausdrucksstärker ist, aber ich glaube nicht, dass das stimmt. Es kommt darauf an, was man ausdrücken will, d. h. auf den Problembereich.
Wenn Sie die Fließkommazahl mit dem binären Muster ausgeben möchten 0xdeadbeef
Das ist in C viel einfacher zu bewerkstelligen als z. B. in Bash. Dabei ist Bash im Vergleich zu C eine Ultra-Hochsprache. Wenn Sie andererseits ein Programm ausführen und dessen Ausgabe in einer Textdatei sammeln wollen, ist das so einfach, dass es in der Bash fast unsichtbar ist, in C jedoch mindestens eine Seite Code erfordern würde (unter der Annahme einer POSIX-Umgebung).
Hier ein sehr kontroverser Vergleich:
http://redmonk.com/dberkholz/2013/03/25/programming-languages-ranked-by-expressiveness/
Welches sind nun die besten Sprachen nach diesen Maßstäben?
Wenn Sie die Top 10 auf der Grundlage der Rangfolge nach Median und nach IQR auswählen, dann die Schnittmenge der beiden, bleibt folgendes übrig. Der Median und der IQR sind unmittelbar nach den Namen aufgeführt:
Augeas (48, 28): Eine domänenspezifische Sprache für Konfigurationsdateien
Marionette (52, 65): Eine weitere DSL für die Konfiguration REBOL (57, 47): Eine Sprache für die verteilte Datenverarbeitung
eC (75, 75): Ecere C, ein C-Derivat mit Objektorientierung
CoffeeScript (100, 23): Eine höhere Sprache, die in JavaScript transkompiliert werden kann
Clojure (101,51): Ein Lisp-Dialekt für funktionale, nebenläufige Programmierung
Vala (123, 61): Eine objektorientierte Sprache, die von GNOME verwendet wird
Haskell (127, 71): Eine rein funktionale, kompilierte Sprache mit starker statischer Typisierung
- See previous answers
- Weitere Antworten anzeigen