Was ist eine Programmiersprache?


73

Ich sehe den Ausdruck "Programmiersprache" herumgeworfen, als ob er allgemein verstanden wird. In den Suchergebnissen und im Stackoverflow sehe ich jedoch alles ...

Vom Mikro:

  • Inkrementieren einer Variablen
  • Darstellung einer Endlosschleife
  • Variablenwerte austauschen

Zu mittel:

Zum Makro:

Gibt es eine einzige gemeinsame Definition für "Programmiersprache"? Da "Programmiersprache" in vielen Bereichen verwendet wird:

  • Mikro: syntaktische Nuance oder allgemeine Syntax
  • Medium: allgemeiner Stil und Muster
  • Makro: Programmierparadigmen als Redewendung

Ist es gültig, den Ausdruck in einem dieser Bereiche zu verwenden? Die bisherigen Antworten konzentrieren sich auf syntaktische Redewendungen. Sind die anderen auch gültig?


Ein Programmier Idiom ist ein Idiom in einer Programmiersprache geschrieben.
jaco0646

Antworten:


57

Eine Programmiersprache ist die übliche Methode, um eine Aufgabe in einer bestimmten Sprache zu codieren. Zum Beispiel wird eine Schleife oft so in C geschrieben:

for (i=0; i<10; i++)

PHP wird ein ähnliches Konstrukt verstehen:

for ($i = 1; $i <= 10; $i++)

In PHP wird jedoch davon abgeraten, ein Array zu durchlaufen. In diesem Fall würden Sie verwenden:

foreach ($arr as $value)

Während Sie in Ruby Folgendes verwenden würden:

(1..10).each

für die Schleife oder:

array.each

Es gibt viele Möglichkeiten, eine Schleife in diesen Sprachen zu schreiben. Die Verwendung des Idioms macht es für erfahrene Leser sofort identifizierbar. Sie können dann ihre Zeit mit wichtigeren Problemen verbringen.


20

Ein "Idiom" in (nicht programmierter) Sprache ist ein Sprichwort oder Ausdruck, der für eine bestimmte Sprache eindeutig ist. Im Allgemeinen etwas, das nicht den "Regeln" der Sprache folgt und nur existiert, weil Muttersprachler "nur wissen", was es bedeutet. (Zum Beispiel sagen wir auf Englisch "in line", aber "out of line" - das wäre idiomatisch)

Wenn wir dies in die Programmierarena verschieben, erhalten wir Dinge wie:

 if(c=GetValue())
 {...}

was eigentlich bedeutet:

 c = GetValue();
 if (c != 0)
 {....}

Das versteht jeder C / C ++ - Programmierer, würde aber jemanden, der aus einer anderen Programmiersprache stammt, völlig verblüffen.


1
-1 Während Redewendungen durch die Syntax beeinflusst werden können, denke ich, dass sie viel mehr beinhalten.
Thomas Eding

2
Ich mag diese Antwort. In der natürlichen Sprache ist ein Idiom etwas, dessen Bedeutung nicht aus den Bedeutungen seiner konstituierenden Begriffe konstruiert werden kann. Mit anderen Worten, es ist semantisch ein unteilbares Atom, obwohl es syntaktisch geteilt werden kann. In der Programmierung sind Redewendungen also Dinge, die Sie nicht in Frage stellen, sondern nur auswendig lernen und mit denen Sie produktiv sein können.
Sridhar Sarnobat

13

Siehe http://en.wikipedia.org/wiki/Programming_idiom

Eine Programmiersprache ist ein Muster, ein Algorithmus oder eine Art der Strukturierung von Code. Über Programmiersprachen zu sprechen bedeutet, über jene Muster zu sprechen, die im Code häufig vorkommen, oder neue vorzuschlagen.

Der Vorteil, mit Redewendungen vertraut zu sein, insbesondere mit den größeren, besteht darin, dass Sie beim Betrachten von Code mehrere Codezeilen sehen können. Da er jedoch als eine bestimmte Redewendung bekannt ist, können Sie den Code mental als diese einzelne Redewendung darstellen und betrachten Jede Zeile muss einzeln gelesen und verstanden werden.

Zu sagen, dass Code nicht idiomatisch ist, bedeutet zu sagen, dass er sich nicht so strukturiert, dass menschliche Leser effektiv über den Code nachdenken können.


3

Idiom ist ein Begriff aus der Linguistik. Es ist eine Gruppe von Wörtern, die nicht wörtlich bedeuten, was die sagen. Zum Beispiel sagen, jemand ist "unter dem Wetter", wenn er sich nicht gut fühlt. Dieser spezielle Satz kam von Seeleuten, die über Passagiere sprachen. Seekranke Passagiere würden unter die "Wetter" -Decks gehen, auf denen die Schiffsbewegung geringer war. Aber die meisten von uns sind keine Seeleute und kennen die wörtliche Bedeutung des Ausdrucks nicht.

Bei der Programmierung vieler werden selbst die meisten Anweisungen von der Öffentlichkeit nicht verstanden, obwohl es sich um englische Wörter handelt. zum Beispiel "for loop". Während sie für Programmierer sinnvoll sind, tun sie dies für die meisten anderen Menschen nicht.


4
-1: Eine Programmiersprache unterscheidet sich von der Nicht-Programmiervariante.
Thomas Eding

1
... und doch nicht.
Jason S

3

Da große Programme aus kleinen wachsen, ist es entscheidend, dass wir ein Arsenal von Standardprogrammstrukturen entwickeln, deren Richtigkeit wir uns sicher sind - wir nennen sie Redewendungen - und lernen, sie mithilfe von Organisationstechniken von nachgewiesenem Wert zu größeren Strukturen zu kombinieren.

Ein Programmierer sollte gute Algorithmen und Redewendungen erwerben.

Alan J. Perlis - SICP Vorwort


2

Aus WikiPedia : Eine Programmiersprache ist ein Mittel, um ein wiederkehrendes Konstrukt in einer oder mehreren Programmiersprachen auszudrücken.

Ich vermute, du warst schon auf diesem Weg!


Dies delegiert nur die Frage an "Was ist ein Konstrukt ?" Ist es Mikro, Medium oder Makro?
Pacerier

2

Eine Redewendung ist ein "Muster", das an mehreren Stellen identifiziert werden kann.

Ich würde nicht sagen, dass es etwas mit einer bestimmten Programmiersprache zu tun hat.

Iterator foo;
foo.reset();
while (foo.next())
{
    print(foo.value());
}

Das ist ein Ausschnitt dessen, was ich das "für jedes" Idiom nennen würde, das in einer Reihe von Sprachen leicht unterschiedlich ausgedrückt wird.

Ein weiteres hervorragendes Beispiel für eine Redewendung ist Socket . Alle Plattformen, die behaupten, Sockets zu haben, funktionieren konzeptionell auf die gleiche Weise, dh sie haben ungefähr die gleiche Schnittstelle.


1
Wenn ich "Socket" höre, denke ich "E / A-Muster". Ich sehe es nicht als Redewendung - Muster existieren sprachübergreifend, während (wie von den meisten anderen Antwortenden beschrieben) Redewendungen eher sprachspezifisch sind.
Tom

Ich habe meine spezielle Antwort nicht als Versuch gegeben, zwischen einem "Idiom" und einem "Muster" zu unterscheiden, was klar sein sollte, wenn Sie die ersten fünf Wörter lesen. Es war als informative und erklärende Antwort gedacht.
Zuu

1

Eine Redewendung ist eine Art, etwas zu sagen, das für eine bestimmte Sprache spezifisch ist. Zum Beispiel sind hier eine Handvoll englischer Redewendungen .

Sie können dies extrapolieren, um das Konzept auf die Programmierung anzuwenden.


1

Kommen Sie früh in die Brunft: Machen Sie den gleichen Prozess auf die gleiche Weise. Sammeln Sie Redewendungen. Standardisieren. Der einzige Unterschied (!) Zwischen Shakespeare und Ihnen war die Größe seiner Redewendungsliste - nicht die Größe seines Wortschatzes.

  • ALAN PERLIS, Epigramme in der Programmierung

http://www.cs.yale.edu/quotes.html


0

Es kommt von idiomatisch, dass die Bedeutung des Wortes idiom in der Programmierung als Ausdruck zusammengefasst werden kann, der Bedeutung und Implikationen trägt, die mehr als die Summe der Wörter sind. Bei der Programmierung sind die meisten Codefragmente tatsächlich idiomatisch. " Bezieht sich auf die natürliche Ausdrucksweise einer Sprache oder entspricht ihr "

Eine Programmiersprache kann als beschreibend für eine Klasse von Lösungen angesehen werden, die auf verschiedene Fälle übertragbar sind. Betrachten Sie while { ... }vs do {} whilediese sind idiomatisch, sie enthalten die gleichen Wörter, aber die Reihenfolge trägt eine wichtige Unterscheidung. Die genaue Formulierung unterscheidet sich je nach Sprache, aber die grundlegende Bedeutung und die Auswirkungen unterscheiden sich. Beispielsweise do {} whilewird immer einmal ausgeführt, unabhängig davon, welche Sprache oder Anweisungen zur Implementierung verwendet werden. Als Redewendung ist es eine übertragbare Form einer Idee. Es kann unter vielen Umständen verwendet und mit verschiedenen Wörtern (Anweisungen / Befehlen) ausgedrückt werden, aber das grundlegende Ergebnis wird immer das gleiche sein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.