Programovací jazyk

Z předchozích dílů už víte, že nejdůležitější součást počítače je procesor který neustále přijímá instrukce, co má dělat. Instrukce v moderních procesorech má 64 bitů a vy už víte, že to je ve skutečnosti 64 nějakých obvodů, kterými putuje elektřina.

Takže co když chcete napsat nějaký program? Třeba počítačovou hru, nějakou svojí vlastní websajtu, eshop, nebo cokoliv jiného?

Teoreticky si můžete vzít k ruce manuál konkrétní instrukční sady a svojí aplikaci napsat skrz jedničky a nuly do procesoru napřímo.

x86-64 má přes 2500 stránek, kompletní dokumentace k ARM64 dokonce přes 8000.

Hodně štěstí!

Můj první 64-bitový program!
0001100000000000000000010000000000000000000000000000000000000000
0001000000000000000000000000000000000000100000000000000000000010
1100000000000000000000000000000000000000100000000000000000000010
….
Z tohohle se dřív nebo později zblázníte. To, že je něco teoreticky možné neznamená, že byste to měli dělat.

Jak se teda programuje? Jakým způsobem ajťáci píšou software?

Místo toho, abyste pracovali s jedničkami a nulami tak si vymyslíte nějaký „kód“ se kterým se pracuje jednoduššeji.

Programovací jazyk není nic jiného, než pro člověka čitelnější instrukce pro procesor. Procesoru je to jedno, ten pracuje se 64 bity ale to je pro člověka s dnešní složitostí procesorů prakticky nereálné.

Strojový kód
(vymyšlené pro ukázku)

010010101001000100
100010010100001011
111110000101000011

Programovací jazyk
(vymyšlené pro ukázku)

KDYŽ Stisknutá klávesa
JE „Enter“
TAK ulož data do souboru

Kompilátor a strojový kód

Jakýkoliv programovací jazyk se píše jako lidsky čitelný text v nějakém kódu, který je mnohem přehlednější a srozumitelnější, než se orientovat v jedničkách a nulách.

Tento text ale sám o sobě nejsou instrukce pro procesor. Je to pouze text v nějaké znakové sadě.

Kompilátor (nebo compiler) je program, který převádí text do strojového kódu. Strojový kód je jen takovej chytřejší název pro instrukce pro procesor.

Co je vlastně kompilátor

A to je vše. Tadá. Právě jste se naučili podstatu programovacích jazyků. Není to nic jiného, než nějaký „kód“ který je pro člověka čitelnější než přímá práce s jedničkami a nulami. Tento kód se zapisuje jako text ale aby jej bylo možné spustit, je nutné tento text převést do strojového kódu skrz kompilátor.

Úžasná, moderní a symetrická grafika, jak se z programovacího jazyka stanou instrukce pro procesor.

Kompilátor je taky jenom program.

Takže vás možná napadla vtipná otázka: kdo zkompiloval kompilátor?

K tomu mohlo dojít dvěma způsoby:

  • Kompilátor se napsal v již existujícím programovacím jazyce.
  • Kompilátor někdo napsal přímo ve strojovém kódu procesoru.

    Psaní v nějakém programovacím jazyce je vždy milionkrát produktivnější, než psaní instrukcí přímo pro procesor a proto napsat program přímo přes instrukce je opravdu šílená práce na dlouho. Jakmile však máte kompilátor hotový, můžete začít rovnou psát aplikaci ve svém novém programovacím jazyce.

    Celý tento proces můžete zkombinovat. Nejdřív skrz instrukce pro procesor napíšete kompilátor pro velmi jednoduchý programovací jazyk. V tomto jednoduchém jazyce poté napíšete mnohem jednoduššeji kompilátor pro ještě lepší programovací jazyk. Tomuto procesu se říká bootstrapping a mně osobně přijde fascinující, jak lze procesor využít pro napsaní programu, který vám umožní napsat podstatně lepší a bohatší programy.

    Jeden z prvních kompilátorů vznikl v roce 1957 a psal se 18 let!

Shrnutí

  • Programovací jazyk je kód, který umožňuje lidštější psaní softwaru jako textu
  • Kompilátor (compiler) je program, který převede kód napsaný programovacím jazykem do strojového kódu
  • Strojový kód je název pro spustitelný program což je jen sada instrukcí pro procesor
  • Bootstrapping je jeden ze způsobů, jakým vznikají nové programovací jazyky. Nejdřív se napíše kompilátor v instrukcích pro procesor pro velmi základní prvky programovacího jazyka a pak se díky tomuto kompilátoru, už v daném jazyce, napíše rozšířenější kompilátor.