Standardní knihovna - Standard library
![]() | tento článek potřebuje další citace pro ověření.Květen 2019) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
A standardní knihovna v programování je knihovna zpřístupněny napříč implementacemi a programovací jazyk. Tyto knihovny jsou běžně popsány v specifikace programovacího jazyka; obsah knihovny přidružené k jazyku však může být určen (částečně nebo celkově) neformálními praktikami jazykové komunity.
Přehled
Standardní knihovna jazyka je často považována za součást jazyka uživatelů, i když designéři to mohli považovat za samostatnou entitu. Mnoho jazykových specifikací definuje základní sadu, která musí být k dispozici ve všech implementace, kromě dalších částí, které mohou být volitelně implementovány. Hranice mezi jazykem a jeho knihovnami se proto liší jazyk od jazyka. Některé jazyky jsou skutečně navrženy tak, že významy určitých syntaktických konstruktů nelze ani popsat bez odkazu na základní knihovnu. Například v Jáva, a řetězec doslovný je definována jako instance třídy java.lang.String; podobně v Pokec, výraz anonymní funkce („blok“) vytvoří instanci třídy BlockContext třídy v knihovně. Naopak, Systém obsahuje několik koherentních podmnožin, které postačují ke konstrukci zbytku jazyka jako makra knihovny, a tak se návrháři jazyka ani neobtěžují říci, které části jazyka musí být implementovány jako jazykové konstrukce a které musí být implementovány jako součást knihovny .
Obsah
Standardní knihovny obvykle obsahují definice běžně používaných algoritmů, datových struktur a mechanismů pro vstup a výstup. V závislosti na konstrukcích zpřístupněných hostitelským jazykem může standardní knihovna obsahovat:
- Podprogramy
- Makro definice
- Globální proměnné
- Třída definice
- Šablony
Většina standardních knihoven obsahuje definice alespoň následujících běžně používaných zařízení:
- Algoritmy (jako třídicí algoritmy )
- Datové struktury (jako seznamy, stromy, a hash tabulky )
- Interakce s hostitelskou platformou, včetně vstupu / výstupu a volání operačního systému
Filozofie
Filozofie standardního designu knihovny se velmi liší. Například, Bjarne Stroustrup, návrhář C ++, píše:
Co by mělo být ve standardní knihovně C ++? Jedním z ideálů je, aby programátor dokázal v knihovně najít každou zajímavou, významnou a přiměřeně obecnou třídu, funkci, šablonu atd. Otázka zde však není: „Co by mělo být nějaký knihovna? "ale„ Co by mělo být v Standard knihovna? "Odpověď„ Všechno! "je rozumné první přiblížení k odpovědi na první otázku, ale nikoli na druhou. Standardní knihovna je něco, co musí každý implementátor poskytnout, aby se na ni mohl každý programátor spolehnout.[1]
To naznačuje relativně malou standardní knihovnu, která obsahuje pouze konstrukce, které může „každý programátor“ rozumně vyžadovat při vytváření velké sbírky softwaru. To je filozofie, která se používá v C a C ++ standardní knihovny.
Naproti tomu Guido van Rossum, návrhář Krajta, přijal mnohem inkluzivnější vizi standardní knihovny; v tutoriálu pro Python píše:
Python má filozofii „včetně baterií“. To je nejlépe vidět na propracovaných a robustních schopnostech jeho větších balíčků.[2]
Van Rossum dále uvádí seznam knihoven ke zpracování XML, XML-RPC, e-mailové zprávy a lokalizace, zařízení, která standardní knihovna C ++ vynechává. Tato další filozofie se často nachází v skriptovací jazyky (jako v Krajta nebo Rubín ) nebo jazyky, které používají a virtuální stroj, jako Jáva nebo .NET Framework jazyky. V C ++ taková zařízení nejsou součástí standardní knihovny, ale místo toho jiných knihoven, jako je Zvýšit.
Příklady standardních knihoven
![]() |
- C standardní knihovna, pro Programovací jazyk C.
- C ++ standardní knihovna, pro Programovací jazyk C ++
- Knihovna rámcových tříd (FCL) pro .NET Framework
- Knihovna tříd Java (JCL) pro Programovací jazyk Java, a Platforma Java
- Faktorová standardní knihovna, pro Faktorový programovací jazyk
- Ruby standardní knihovna, pro Programovací jazyk Ruby
- Standardní knihovna Pythonu, pro Programovací jazyk Python
- Standardní knihovny (CLI)