Programy vykonávají mnoho stále stejných opakujících se činností - například nakreslení okna, psaní textu do něj, přehrání zvuku, čtení klávesnice, čtení myši, pořád dokola, dokola, do blba
(a protože počítač blb je, víc už nezblbne a nevadí mu to). A aby všechno tohle nemusel mít každý program obsažené v sobě, existují už od padesátých let knihovny (library) těchhle služeb - často jako součást operačního systému, ze kterých si je program může zavolat pokaždé, když je zrovna potřebuje použít.
Při překladu programu se kód napsaný programátorem propojuje
(linkuje - pomocí nástroje zvaného linker) s funkcemi různých knihoven. To se může udělat buď
staticky - pak je kód z knihoven přímo součástí výsledného programu, nebo
dynamicky - program si potřebné knihovny připojí až po spuštění. A odtud pochází název
Dynamic-
Link
Library a zkratka/přípona DLL.
Můžeš to v akci vidět na tomhle videu:
https://www.youtube.com/watch?v=kVQquhmJ7K0Překladač
PROFORT nejdřív ze zdrojového textu programu vytvoří objektový kód, což je vlastně katalog všech částí programu, jak jsou velké, kde se nacházejí, co potřebují - je zapnutý výpis, takže je to docela dlouhé čtení i u tak malého programu jako tahle jednoduchá hra. A teprve potom se dalším programem
LINK jednotlivé "objekty" poskládají s potřebnými kousky kódu z knihoven - tady s příponou
LIB (ve výpisu na počátku jsou vidět) , a ze všeho dohromady vytvoří výsledný program ve formátu
EXE, který jde spustit. Tohle je ukázka statického linkování, protože MS-DOS, nejen co se týče knihoven, uměl úplné hovno. A to i mnohem později než v roce 1984, ze kterého tenhle program pochází.
Dnešní vývojová prostředí už tohle všechno - a ještě mnohem víc - dělají automaticky, dřív si to člověk musel naťukat ručně, a v každé fázi se přesně dozvěděl co se děje a kde se případně stala chyba. Víc práce, ale i víc dostupných informací.