Knihovna

Dnešní programy jsou natolik složité, že není v možnostech jednoho programátora, aby naprogramoval veškerý kód, který je nutný k běhu daného programu. Už kdysi dávno programátoři zjistili, že je možné a velmi efektivní, když se nějaký kód, který se už využil pro jeden program znovu využije i v druhém programu. To ušetří čas na naprogramování celého kódu, který je pro oba dva programy společný. Dílčím celkům kódu, které lze znovupoužít se říká knihovna.

Příklad: Zpracování JPEG obrázků je poměrně matematicky náročná operace a správné zobrazení JPEG obrázku vyžaduje vnitřně velmi složitý kód. Přitom mnoho programů potřebuje s JPEG obrázky nějak pracovat. Nabízí se tedy naprogramování knihovny pro práci s JPEG obrázky, která se naprogramuje pouze jednou a všechny programy pracující s JPEG obrázky už pak mohou používat funkcionalitu této knihovny. Znamená to, že autoři těchto programů už nemusí vědět nic o složité matematice, která stojí za JPEG formátem a jednoduše využívají kód, který už naprogramoval někdo jiný.

Důležité: Využívání knihoven je zcela nezbytné pro jakékoliv programování, pokud to chce někdo s programováním myslet vážně. Kdo se naučí trochu programovat, má občas pocit, že je jednodušší si vše naprogramovat sám. To sice skutečně má některé výhody, mistrovství v programování ovšem spočívá v tom umět využívat existující knihovny, kdekoliv je to možné.

API knihovny

Každá knihovna má takzvané API, což je zkratka za Application Programming Interface, neboli aplikační programové rozhraní. Pod tímto pojmem se rozumí množina funkcionalit, kterou je možné z knihovny použít. API knihovny musí být nějak dokumentováno, aby programátor věděl, které funkce jsou mu při práci s danou knihovnou k dispozici a jak se přesně používají.

Druhy knihoven

Existují rozličné možnosti, jakým způsobem mohou být knihovny organizovány. Knihovny jsou ale tak důležité, že každý operační systém i každý programovací jazyk umožňuje s knihovnami nějakým způsobem zacházet. Podle konstrukce knihovny, můžeme rozlišovat několik druhů knihoven:

Binární staticky linkované knihovny

To jsou soubory, které obsahují binární strojový kód dané funkcionality a nezbytné údaje k tomu, jak tento strojový kód propojit s programem. Binární kód staticky linkované knihovny se stává součástí binárního strojového kódu programu v době jeho sestavení a nelze jej už tedy od vlastního programu oddělit. Soubor s programem potom obsahuje jak vlastní binární strojový kód programu, tak binární strojový kód knihovny.

Výhody:

Nevýhody

Binární dynamicky linkované knihovny

To jsou soubory, které podobně jako statické knihovny obsahují strojový kód dané funkcionality a nezbytné údaje o tom, jak tento strojový kód propojit s programem, ale k propojení s programem dochází až při spuštění programu. To znamená, že dynamicky linkovaná knihovna je obsažena v jiném souboru než vlastní program. Program se pouze odkazuje na to, které dynamické knihovny potřebuje ke svému běhu. Operační systém potom zajistí propojení s knihovnou (linkování) automaticky. Soubory s dynamicky linkovanými knihovnami mají typicky příponu .dll na MS Windows, popřípadě .so na Linuxu.

Výhody:

Nevýhody:

Knihovny specifické v daném jazyce

Staticky a dynamicky linkované knihovny se používají nejčastěji v kompilovaných jazycích, protože i tyto knihovny jsou realizovány v binárním strojovém jazyce. Interpretované programovací jazyky většinou mívají nějaký vlastní systém pro používání knihoven, který je závislý na daném jazyku. Specifické knihovny pro jeden programovací jazyk nelze většinou využít v jiném jazyce, než pro který byly určeny. Mnoho interpretovaných jazyků ale umožňuje nějakým způsobem používat funkcionalitu binárních dynamicky linkovaných knihoven (nebo i staticky linkovaných knihoven).


domů