Standardbibliothek

Im Computerprogrammierung, a Standardbibliothek ist der Bibliothek übermittelt Implementierungen von a Programmiersprache. Diese Bibliotheken werden herkömmlicherweise in beschrieben Programmiersprachenspezifikationen; Der Inhalt der zugehörigen Bibliothek einer Sprache kann jedoch auch durch informelle Praktiken der Gemeinschaft einer Sprache bestimmt werden.

Überblick

Die Standardbibliothek einer Sprache wird häufig als Teil der Sprache durch ihre behandelt Benutzerobwohl die Designer es möglicherweise als separate Einheit behandelt haben. Viele Sprachspezifikationen definieren einen Kernsatz, der in allen verfügbar gemacht werden muss Implementierungenzusätzlich zu anderen Teilen, die optional implementiert werden können. Die Grenze zwischen einer Sprache und ihren Bibliotheken unterscheidet sich daher von Sprache zu Sprache. In der Tat sind einige Sprachen so konzipiert, dass die Bedeutungen bestimmter syntaktischer Konstrukte nicht einmal beschrieben werden können, ohne sich auf die Kernbibliothek zu beziehen. Zum Beispiel in Java, a Saitenliteral wird als Instanz der Java.lang.String -Klasse definiert; In ähnlicher Weise in Smalltalk, ein anonymer Funktionsausdruck (ein "Block") konstruiert eine Instanz der Blockcontext -Klasse der Bibliothek. Umgekehrt, Planen Enthält mehrere kohärente Teilmengen, die ausreichen, um den Rest der Sprache als Bibliotheksmakros zu konstruieren, und so die Sprachdesigner haben sich nicht einmal die Mühe machen zu sagen, welche Teile der Sprache als Sprachkonstrukte implementiert werden müssen und welche als Teile einer Bibliothek implementiert werden müssen .

Inhalt

Standardbibliotheken enthalten typischerweise Definitionen für häufig verwendete Algorithmen, Datenstrukturen und Mechanismen für Eingabe und Ausgabe. Abhängig von den Konstrukten, die von der Host -Sprache zur Verfügung gestellt wurden, kann eine Standardbibliothek enthalten sein:

Die meisten Standardbibliotheken enthalten Definitionen für mindestens die folgenden häufig verwendeten Einrichtungen:

Philosophien

Philosophien des Standard -Bibliotheksdesigns variieren stark. Zum Beispiel, Bjarne Stroustrup, Designer von C ++, schreibt:

Was sollte in der Standard -C ++ - Bibliothek sein? Ein Ideal ist es, dass ein Programmierer in einer Bibliothek alle interessanten, bedeutenden und einigermaßen allgemeinen Klasse, Funktion, Vorlage usw. finden kann. Die Frage hier ist jedoch nicht: "Was sollte in dem sein sollten etwas Bibliothek? "Aber" Was sollte in der sein Standard Bibliothek? "Die Antwort" Alles! "Ist eine vernünftige Annäherung an eine Antwort auf die erstere Frage, aber nicht die letztere. Eine Standardbibliothek muss jeder Implementierer liefern, damit sich jeder Programmierer darauf verlassen kann.[1]

Dies deutet auf eine relativ kleine Standardbibliothek hin, die nur die Konstrukte enthält, die "jeder Programmierer" bei der Erstellung einer großen Softwaresammlung vernünftigerweise erfordern könnte. Dies ist die Philosophie, die in der verwendet wird C und C ++ Standardbibliotheken.

Im Gegensatz, Guido van Rossum, Designer von Python, hat eine viel integrativere Vision der Standardbibliothek angenommen. Python bietet uns leicht zu viel zu beschaffende, objektorientierte Sprachmittel auf hoher Ebene. Im Python -Tutorial schreibt er:

Python hat eine "Batterien" Philosophie. Dies wird am besten durch die anspruchsvollen und robusten Fähigkeiten seiner größeren Pakete gesehen.[2]

Van Rossum listet Bibliotheken zur Verarbeitung auf Xml, XML-RPC, E -Mail -Nachrichtenund Lokalisierung, Einrichtungen, die die C ++ - Standardbibliothek auslässt. Diese andere Philosophie wird oft in gefunden Skriptsprachen (wie in Python oder Rubin) oder Sprachen, die a verwenden virtuelle Maschine, wie zum Beispiel Java oder der .NET Framework Sprachen. In C ++ gehören solche Einrichtungen nicht Teil der Standardbibliothek, sondern an anderen Bibliotheken, wie z. Schub.

Beispiele für Standardbibliotheken

Verweise

  1. ^ Bjarne Stroustrup. Die C ++ - Programmiersprache. 3. Aufl. Addison-Wesley, 1997
  2. ^ Guido van Rossum. [1].