Míra abstrakce

Z minulých dílů už víš, že programovací jazyk není nic jiného, než určitým domluveným kódem psaný text, který se pak skrz kompilátor převádí do strojového kódu.

Jedno důležité členění programovacích jazyků, které je dle mého důležité pochopit, je míra abstrakce.

Nízká míra abstrakce

Tento programovací jazyk se zpravidla kompiluje do konkrétního zařízení/procesoru/instrukční sady/operačního systému. Program zkompilovaný pro instrukční sadu x86 + OS Windows 10 bude běžet jenom na procesoru s instrukční sadou x86 a s operačním systémem Windows 10 a na ničem jiném. Pro všechny možné kombinace instrukčních sad/OS je nutné vytvořit novou kompilaci.

Nízká míra abstrakce znamená, že:

  • jsme nuceni přemýšlet o práci s informacemi ve fyzickém zařízení
  • pracujeme napřímo s nízko-úrovňovými funkcemi operačního systému (Win32, syscalls)
  • děláme něco, u čeho potřebujeme vymáčknout z konkrétního typu zařízení maximální výkon
  • pravděpodobně děláme operační systém, na výkon náročnou počítačovou hru, robotiku, matematiku, statistiku, vědeckou práci, programování čipů, programování na konkrétní zařízení…

Těmto jazykům se také říká nízko-úrovňové programovací jazyky

Vysoká míra abstrakce

Programovací jazyk vytváří úplně nové koncepty, které zjednoduššují práci s kódem a snaží se nás co nejvíc oddělit od fyzického zařízení ale i od operačního systému. V takovém programovacím jazyce nikdy neřešíme instrukční sadu a často ani operační systém.

Tyto programovací jazyky se kompilují do jakéhosi „mezijazyka“ který se pak na konkrétním zařízení s konkrétním OS kompiluje za běhu (tzv. Just-In-Time („právě v čas“) kompilace).

Vysoká míra abstrakce znamená, že:

  • nemusíme přemýšlet o zvláštnostech a rozdílech mezi fyzickými zařízeními a operačními systémy
  • potřebuji vytvořit něco, co funguje většině lidem na všech možných procesorech a operačních systémech
  • pravděpodobně dělám nějaký web, uživatelskou (okénkovou) počítačovou aplikaci nebo mobilní aplikaci

Těmto jazykům se říká vysoko-úrovňové programovací jazyky.

Co je na trhu práce lépe placené?

Přestože práce v nízko-úrovňových jazycích vyžaduje mnohem širší znalosti, vysoko-úrovňové programovací jazyky jsou na trhu práce lépe placené jednoduše proto, že jsou mnohem blíže „obyčejnému businessu“ jehož poptávka je spíš na funkčnost a rychlost dodání, než na brutální efektivitu a výkon.

Shrnutí

  • Programovací jazyky se podle míry abstrakce dělí na nízko-úrovňové programovací jazyky a na vysoko-úrovňové programovací jazyky
  • Nízko-úrovňové programovací jazyky se většinou kompilují pro konkrétní kombinaci instrukční sady a operačního systému
  • Nízko-úrovňové programovací jazyky nás nutí přemýšlet o tom, pro jaké zařízení, instrukční sadu a operační systém programujeme.
  • Vysoko-úrovňové programovací jazyky se kompilují do „mezijazyka“ který se posléze kompiluje do strojového kódu za běhu.
  • S vysoko-úrovňovými programovací jazyky většinou neřešíme rozdíly v instrukčních sadách a často ani mezi operačními systémy.
  • Vysoko-úrovňové programovací jazyky jsou zpravidla lépe placené na trhu práce