====== 1GL: První generace programovacích jazyků ====== **1GL** (First-Generation Language) představuje **strojový kód** (machine code). Je to jediný jazyk, kterému procesor počítače (CPU) rozumí přímo, bez nutnosti jakéhokoliv překladu či interpretace. Data i instrukce jsou v této generaci reprezentovány výhradně jako **binární řetězce** (nuly a jedničky). ===== 1. Charakteristika 1GL ===== V éře 1GL neexistovaly žádné kompilátory ani interpretery. Programátor musel psát instrukce přímo pro konkrétní architekturu procesoru. * **Binární reprezentace:** Vše je zapsáno jako sekvence $0$ a $1$. * **Závislost na hardwaru:** Program napsaný pro jeden typ počítače nebylo možné spustit na jiném typu (např. kód pro ENIAC nebyl přenositelný). * **Přímé ovládání:** Programátor má absolutní kontrolu nad každým registrem a paměťovou adresou procesoru. ===== 2. Ukázka kódu (Konceptuální) ===== Zatímco ve vyšších jazycích napíšeme `x = 5 + 2`, v 1GL by instrukce pro procesor mohla vypadat takto: 01101101 00000101 00000010 * `01101101` – Operační kód (Opcode) pro instrukci "SČÍTEJ". * `00000101` – První hodnota (5). * `00000010` – Druhá hodnota (2). ===== 3. Výhody a nevýhody ===== ^ Výhody ^ Nevýhody ^ | **Maximální rychlost:** Kód běží okamžitě bez prodlevy způsobené překladem. | **Extrémní náročnost:** Člověk chybuje při zápisu dlouhých řad nul a jedniček. | | **Efektivita:** Minimální nároky na paměť, protože kód obsahuje jen to nejnutnější. | **Nulová přenositelnost:** Kód je vázán na konkrétní procesor. | | **Kontrola:** Možnost využít specifické instrukce daného čipu. | **Těžké ladění (Debugging):** Najít chybu v binárním kódu je téměř nemožné. | ===== 4. Historický kontext ===== První generace byla dominantní v **40. a počátkem 50. let 20. století**. Programátoři tehdy fyzicky přepínali spínače nebo používali děrné štítky, aby vložili binární instrukce do paměti počítače. ===== 5. Evoluce jazyků ===== 1GL byla brzy nahrazena vyššími generacemi, které usnadnily lidem práci: * **[[it:lang:2GL|2GL]] (Assembly):** Nahradilo nuly a jedničky mnemotechnickými zkratkami (např. `ADD`, `MOV`). * **[[it:lang:3GL|3GL]] (C, Java, Python):** Přiblížilo programování lidské řeči a matematice. ---- //Související články:// * [[it:hw:cpu|Architektura procesoru]] * [[it:lang:2GL|Assembly Language (Druhá generace)]] * [[it:math:binary|Binární soustava]] //Tagy: {{tag>historie programming_languages 1GL machine_code computer_science}}//