2009-10-08 8 views
10

Ich stolperte über diese "Liste der Programmiersprachen" und fand heraus, dass populäre Sprachen wie Python nicht standardisiert sind? Warum ist das so, und was bedeutet "standardisiert" überhaupt?Python keine standardisierte Sprache?

Antwort

29

„Standardisierte“ bedeutet, dass die Sprache eine formale hat, anerkannten Norm, in der Regel nach ISO oder ANSI oder ECMA geschrieben. Viele moderne Open-Source-Sprachen, wie Python, Perl und Ruby, sind nicht formal von einem externen Körper standardisiert und haben stattdessen einen de-facto Standard: was auch immer die ursprüngliche Arbeitsimplementierung tut.

Die Vorteile der Standardisierung einer Sprache sind a) Sie wissen, dass sich die Sprache nicht zufällig ändern wird, b) wenn Sie einen eigenen Compiler/Interpreter für die Sprache schreiben möchten, haben Sie ein sehr klares Dokument, das Ihnen sagt welches Verhalten alles tun sollte, anstatt dieses Verhalten selbst in der ursprünglichen Implementierung zu testen. Aus diesem Grund ändern sich standardisierte Sprachen langsam und haben oft mehrere wichtige Implementierungen.

Eine Sprache muss nicht wirklich standardisiert werden, um nützlich zu sein. Die meisten Nicht-Standard-Sprachen werden ohne Grund keine zufälligen, rückwärtskompatiblen Änderungen vornehmen (und wenn sie es tun, brauchen sie zehn Jahre, um zu entscheiden, wie * husten * *) * * * * * * * * * * * * * * * * * * * * * * * * * * * * (und portabler) als standardisierte Sprachen.

Einige standardisierte Sprachen:

  • C
  • C++
  • Common Lisp
  • Scheme
  • JavaScript (ECMAScript)
  • C#
  • Rubin
(?)

Nicht-standardisierte Sprachen:

  • Perl
  • Python
  • PHP
  • Objective-C

Eine vollständige Liste ist auf Wikipedia.

+4

Eine gute Antwort, mein einziges Argument wäre, dass, wenn ein Standard nur leicht vage auf einer bestimmten Funktion ist, Sie garantieren können, dass die Microsoft-Version die dunkelste und ungewöhnliche Interpretation der Ambiguität verwenden wird, während jedes andere Produkt etwas tut sinnvoll. –

+0

Ruby ist jetzt eine standardisierte Sprache von ISO/IEC 30170 – harsha

2

Standardisiert bedeutet, dass eine Spezifikation für die Sprache existiert (ein "Standard"). Java zum Beispiel hat eine Spezifikation. Perl 5 nicht (der Quellcode ist der "Standard") aber Perl 6 wird.

Siehe Is there a Python language specification?

3

Es gibt "Standards" und es gibt "Standards".

Die meisten Leute meinen meist, dass ein Standard von einer Organisation, die Normen schreibt, verabschiedet wird: ISO, ECMA, EIA, etc. Die Anwälte nennen diese De Jure Standards. Da ist die Kraft des Gesetzes.

Weiter gibt es "De Facto Standards".

Einige Leute, auch, korrumpieren das Wort durch Hinzufügen von "Industry Standard" oder "Vendorname Standard".Das ist einfach sinnloser Marketing-Lärm.

Ein De-Facto-Standard ist etwas, das in der Praxis standardisiert ist (weil jeder es tut und zustimmt, dass es so gemacht wird), aber es ist nicht unterstützt von einigen Standardorganisationen.

Python hat einen De-Facto-Standard, keinen De Jure-Standard.