Ich höre dieses Wort oft in Sätzen wie "Javascript ist eine sehr ausdrucksstarke Sprache". Bedeutet das nur, dass es nicht viele Regeln gibt, oder hat "expressiv" eine spezifischere Bedeutung?
programming-languages
Morgancodes
quelle
quelle
Antworten:
'Expressiv' 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 Ausdruckskraft sorgen:
Vergleichen Sie diesen ausdrucksstarken Groovy mit dem weniger ausdrucksstarken Java-Äquivalent:
vs.
Manchmal tauschen Sie Präzision gegen Ausdruckskraft - das Groovy-Beispiel funktioniert, weil es Dinge voraussetzt, die Java explizit angeben lässt.
quelle
int
Schleifenvariablen in Java ist ein Artefakt von Java. Sie ist im Wesentlichen bedeutungslos und nicht "präziser" als die von Groovy. Das3.times
ist es also nicht.)expressiveness
. Obwohl ich im Allgemeinen auf die Idee gekommen bin, die sehr intuitiv ist, bin ich wunderbar, ob es eine "formale Definition" der Ausdruckskraft der Sprache gibt, und wenn ja, welche "quantitativen Metriken" zur Messung der Ausdruckskraft?Ich verstehe es so, dass es in der Lage ist , Ideen / Algorithmen / Aufgaben auf einfach zu lesende und prägnante Weise auszudrücken .
Normalerweise verbinde ich eine ausdrucksstarke Sprache mit syntaktischem Zucker, obwohl dies nicht immer der Fall ist. Beispiele in C # für Ausdruck sind:
foreach
(anstatt die Iteration explizit zu schreiben)using
Anweisung (anstatt explizit den try / finally zu schreiben)Ein anderes Beispiel wären Generika: Bevor C # Generika erhielt, konnte man die Idee eines "
ArrayList
nur Zeichenfolgen enthaltenden" im Code nicht ausdrücken . (Sie können es natürlich dokumentieren oder Ihren eigenenStringList
Typ schreiben , aber das ist nicht ganz dasselbe.)quelle
Neal Grafter hat einen Blog mit einem guten Zitat zu diesem Thema ...
Ich würde sagen, dass es bedeutet, dass Sie Ihre Gedanken natürlicher im Code ausdrücken können.
quelle
Das ist eine schwierige Frage.
Für mich hat es mit der Leichtigkeit zu tun, mit der Sie Ihre Absicht zum Ausdruck bringen können. Dies ist in verschiedenen Sprachen unterschiedlich und hängt auch stark davon ab, was Sie tun möchten. In diesem Bereich sind also Verallgemeinerungen üblich. Es ist natürlich auch subjektiv und persönlich.
Es ist leicht zu denken, dass eine höhere Sprache immer ausdrucksvoller ist, aber ich denke nicht, dass das wahr ist. Dies hängt davon ab, was Sie ausdrücken möchten, dh von der Problemdomäne.
Wenn Sie die Gleitkommazahl mit dem Binärmuster drucken möchten
0xdeadbeef
, ist dies in C weitaus einfacher als beispielsweise in Bash. Dennoch ist Bash im Vergleich zu C eine Sprache auf höchstem Niveau. Wenn Sie dagegen ein Programm ausführen und seine Ausgabe in einer Textdatei sammeln möchten, ist dies so einfach, dass es in Bash fast unsichtbar ist, in C jedoch mindestens eine Code-Seite erforderlich ist (unter der Annahme einer POSIX-Umgebung).quelle
http://en.wikipedia.org/wiki/Expressive_power
quelle
Hier ein sehr kontroverser Vergleich:
http://redmonk.com/dberkholz/2013/03/25/programming-languages-ranked-by-expressiveness/
quelle
Vielleicht kann Ihnen diese Website http://gafter.blogspot.com/2007/03/on-expressive-power-of-programming.html helfen
Kurz gesagt, sagt er : In meinen Augen ist ein Sprachkonstrukt ausdrucksstark, wenn es Ihnen ermöglicht, eine API zu schreiben (und zu verwenden), die ohne das Konstrukt nicht geschrieben (und verwendet) werden kann. Im Zusammenhang mit der von Closures for Java vorgeschlagenen Spracherweiterung scheinen Kontrollabstraktions-APIs von den konkurrierenden Vorschlägen nicht unterstützt zu werden.
quelle