Frage

Ich habe oft gelesen, dass einige Programmiersprachen klar sind als andere, und ich habe mich gefragt, mehrmals, wenn es eine objektive Art und Weise die Klarheit der Sprache, um Design zu messen, eine abstrakte Syntax, eine konkrete Syntax so klar gegeben und Menschenfreundlich wie möglich. Vielleicht gibt es eine Art von Entwurfsmuster für diesen Zweck?

Kurz gesagt: Wie kann die maximale Klarheit einer Syntax erreicht werden? jede mögliche Weise Kennen Sie die „Klarheit“ oder „Ausdruckskraft“ eine Sprache?

zu quantifizieren

Das macht Sinn, zu versuchen, diese Aspekte zu messen?

Danke.

War es hilfreich?

Lösung

Ich habe diesen Satz zu oft gehörte, nachlässig in verschiedenen Sprachen geworfen, und verschiedene Menschen verschiedene Sprachen nach verschiedenen Kriterien wählen werden.

Schöne-Code , Yukihiro Matsumoto (Rubys Designer) macht ein Argument, wie viel einfacher es ist, ein Hallo Welt Programm in Ruby als in Java schreiben. Obwohl ich nicht glaube, dieses Beispiel maßstabs gemeint ist, ist der Autor der Punkt, dass die Menge an cruft müssen Sie die deficulty, um Ihren Code hinzufügen auf spiegelt sich in einer dieser Sprache geschrieben, ein Programm zu verstehen. Das heißt, die weniger Ablenkung, desto mehr „lesbar“ das Programm zu erhalten ist.

Nun, in meiner Erfahrung, schreiben gute Programmierer klar Code in allen Sprachen, die sie programmieren, obwohl noch deutlicher in Sprachen, die sie besser vertraut mit sind. Das Talent des Autors sowie die Breite seiner Erfahrung in diesem lenguage Ende bis dwarfing die Sprache selbst der Klarheit oder Ausdruckskraft.

Ein weiterer Punkt ist die Menge der verfügbaren Bibliotheken und die Qualität der APIs. Wenn Sie weniger „Support-Code“ zu schreiben, haben die Aufgabe zu erledigen, dann ist es wahrscheinlich das daraus resultierende Programm ist klarer, weil es direkt auf den Punkt erscheint.

Andere Tipps

Es gibt einige Studien, die in dem, was „natürlicher Programmierung“ genannt wird, die für Sie von Interesse sein kann:

http://www.cs.cmu.edu/~NatProg/index .html

Sie versuchen Sprachen zu entwerfen menschliche Erwartungen gerecht zu werden, anstatt Menschen zu versuchen, zu entsprechen, was einfachste für einen Computer. Und sie basieren auf Experimenten. Zum Beispiel untersuchen, wie viele Menschen aus einer Kiste mit Obst eine Birne bringen, wenn man sich anweisen, zu „bringt etwas nicht ein Apfel oder eine Birne“. (Ich habe nicht mit ihren Ergebnissen gehalten, aber es klang wie ein vielversprechendes Projekt.)

Still „Klarheit“ und „Ausdruckskraft“ sind nebulöse Dinge zu messen. Natürlich gibt es Studien, die tun quantitatives Maß für Sprachen gegeneinander, wie das Computersprache Benchmarks Spiel . Einige Leute haben genommen Daten von Lösungen in diesem Spiel angeboten und grafisch dargestellten Trends wie „Codegröße und die Leistung“:

http: //blog.gmarceau .qc.ca / 2009/05 / Speed-size-und-Zuverlässigkeit-of.html

könnten Sie in der Lage sein, einige wackelig Metriken-basierte Aussagen über eine Mehrzweck-Sprache über die Entwicklung der Codegröße basierte, um es effizient eine bestimmte Aufgabe zu erfüllen braucht. Aber dann sind Pinning Sie nach unten ziemlich subjektiven Vorstellungen von dem, was „Klarheit“ und „Ausdruckskraft“ ist. (Ich bin voreingenommen kürzere Programme zu glauben, dass die gleiche Arbeit tun schneller sind oft klarer, aber es gibt viele Gegenbeispiele.)

Also ich würde sagen, dass in Abwesenheit einer definierten Zielgruppe, mit dem Sie Usability-Studien mit Probanden tun können, werden Sie nicht viel besser als diese Art von Metriken für Verallgemeinerungen über Sprachen zu machen.

(Hinweis: Ich mag Rebol und ich denke, es ist die Macht unglaublich klar sein muss und ausdrucksstark. ..aber nur, wenn Sie es auf eine bestimmte Weise zu benutzen, die Dialekte entwickeln DSL beinhaltet, wie Sie gehen, was nicht der Weg ist, eine Menge Leute denken, wenn sie programmieren. Und doch!)

Ich glaube nicht, es gibt. Clarity ist subjektiv und Designmuster sind kein gutes Maß für die Klarheit der Sprache (in der Tat, sind Entwurfsmuster in der Regel geboren, um die Begrenzung einer Sprache zu umgehen).

mag Manche Menschen eine Sprache mit einer reichen und prägnant semantischen (zB Perl) und wirklich nicht die Verwendung von Symbolen kümmern, während andere eine Syntax bevorzugt, dass ähnelt der natürlichen Sprache, so dass Sie auf dem Computer zu sprechen scheinen (zB Hypercard ) und nicht wirklich die Ausführlichkeit oder die Mehrdeutigkeit etwas dagegen.

Eine Frage wie diese führt in der Regel in einer pedantischen Antwort.

Sprachen sind wie Werkzeuge.

Sie sind gebaut bestimmte Zwecke. Logic Programmiersprache lösen bestimmte Probleme in einem eleganteren Weg, als ein objektorientiertes Programm würde. In ähnlicher Weise werden viele Hauptstrom-Lösung durch eine typische objektorientierte oder prozedurale Sprache leicht gemacht.

Temperament und andere Faktoren des Werkzeug Benutzers, in diesem Fall ein Programmierer auch Fragen. Einige Leute haben raffinierte Lösungen in Perl erreicht, aber es hat sich wie schwarze Magie mir immer aussah. Ich ziehe es Pythons strukturelle Einfachheit. Für einige ist es der Einsatz von Weißraum abscheulich gewesen.

Es wäre bestenfalls eine sehr subjektive Beurteilung sein, wenn es eine Auswertung einer Sprache Klarheit und Expressivität sein kann.

Wie auch immer, ein klarer Hinweis darauf ist der Reichtum der Code Produktion in dieser Sprache. Einige Sprache wie Gehirnfick wurde nicht angenommen, während Python, Ruby usw. Popularität gewonnen haben. Obwohl, können diese und viele Faktor ein Indikator dafür sein nur. Einige Sprache trotz guter Konstrukte können nicht viel Abnehmer finden.

Netzwerk-Effekt wirkt sich auch auf die Sprache der Annahme.

Ich finde LOLCODE die verständlichste Sprache von ihnen zu sein, alle:

HAI
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP
    UP VAR!!1
    VISIBLE VAR
    IZ VAR BIGGER THAN 10? KTHXBYE
IM OUTTA YR LOOP
KTHXBYE

Die Messung der Verständlichkeit einer Sprache ist nicht so wichtig wie die Verständlichkeit eines Programmierers zu messen.

Sie können auch auf das Buch schauen „Konzepte von Programmiersprachen“ von Neueste Ausgabe, von R. W. Sebesta. Es gibt Kapitel in diesem Buch (Kapitel 1 oder 2 Ich erinnere mich nicht mehr genau) Kriterien diskutiert eine Programmiersprache zu bewerten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top