To je spousta, jako se ptát, "proč je tam tolik oborů matematiky? Máme algebru, proč potřebujeme geometrii, počet a mechaniku tekutin?" Každý programovací jazyk má za cíl vyřešit konkrétní problém. Stejný problém by mohl vyřešit více než jeden jazyk, ale každý se k němu bude chovat jinak.
Zde jsou některé z největších rozdílů v programovacích jazycích.
Čitelnost a udržovatelnost
Některé jazyky jsou pro člověka jednodušší ke čtení, což usnadňuje jednomu programátorovi spolupracovat na kódu jiného programátora. Například Python má pověst pro snadné čtení. Vynucuje striktní odsazení řádků, které definují jeho kódové bloky, což usnadňuje pohled na program a jeho strukturu. Jiné jazyky umožňují také odsazení, ale jako stylistickou volbu, nikoli jako požadavek.
V kontrastu, Perl je jazyk, který dovolí programátorovi psát stejný program v mnoha různých způsobech, ale účel programu nemusí být okamžitě jasný jinému čtenáři. Takový program může být vhodný pro psaní, ale pro někoho jiného je obtížné porozumět a upravit.
Výkon
Některé jazyky jsou interpretovány a některé jsou sestaveny. Kompilovaný program musí být zpracován preprocesorem, kompilátorem a linkerem dříve, než může být spuštěn počítačem. Tento specializovaný střední software provádí lexikální analýzu, překlad programu do strojového jazyka. To může také optimalizovat výsledné pokyny, hledá chytré způsoby, jak program běžet rychleji.
Kompilované programy obvykle provádějí lépe než interpretované programy. Například C, C ++ a Objective-C jsou jazyky, které obvykle kompilovají velmi rychlý strojový kód. Videohry a systémový software jsou často psány v těchto jazycích, aby vytlačily každý kousek výkonu z CPU.
Na druhé straně, programy s interpretovaným jazykem jsou řízeny softwarem nazývaným tlumočník, který provádí instrukce programu, aniž by je nejprve kompiloval do strojového kódu. Ačkoli interpret někdy analyzuje program na přechodný jazyk, což má za následek nějakou optimalizaci, výkon není nikdy tak rychlý jako kompilovaný strojový kód.
Jednou z hlavních výhod tlumočených jazyků je jejich potenciál pro interaktivní vývoj. Protože celý program nemusí být zkompilován před jeho provedením, může být kód spuštěn interaktivně. Znáte to, pokud jste někdy používali příkazový řádek operačního systému: zadáte příkaz a uvidíte výsledky. Takové rozhraní se nazývá REPL nebo "read-eval-print-loop". REPL umožňuje provádět příkazy (nebo bloky příkazů) individuálně a zobrazit výsledky. Lisp, Perl, Python, NodeJS, Ruby a JavaScript jsou příklady interpretovaných jazyků, které lze spustit v REPL.
Interaktivní příkazová rozhraní, například příkazový řádek systému Windows a bash, se také kvalifikují jako interpretované jazyky. Programy v těchto "jazycích" se nazývají dávkové soubory nebo skripty shell.
Zvláštní případy použití
Jazyky jsou často dobré zejména při psaní konkrétních typů programů. Například NodeJS je navržen tak, aby psal aplikace s jedním vláknem pro web. Jeho nezablokující soubor I / O umožňuje pokračovat v provozu programů ("není blokováno"), zatímco čekají na přenos požadovaných dat.
Dalším příkladem je programovací jazyk R, který se specializuje na statistickou analýzu. Programy napsané v R využívají integrované analytické testy a modely a nástroje pro efektivní manipulaci s velkými množstvími dat.
Snadné prototypování
Některé jazyky umožňují rychlé prototypování: programátor může "začít psát" a sestavovat komponentu na komponentu, dokud nebude program plně vytvořen.
Například webová stránka Reddit byla původně napsána v Lispu. Po Reddit vypustil, celé místo bylo přepsáno v Python pro mnoho důvodů, oba technický, a logistický. Ačkoli refactoring celý kód byl hlavní závazek, vlastníci místa vyjádřili žádné lítosti. V blogu z roku 2005 poznamenali, že jim Lisp umožnil něco vytvořit, aniž by přesně věděl, co by se stalo.
Dostupné knihovny
Obvykle, když začnete nový programovací projekt, nechcete znovu vynalézat kolo. To znamená, že nechcete psát funkce pro běžné úkoly, jako je výpočet druhé odmocniny, nebo nalezení prvního výskytu znaku v řetězci. Z tohoto důvodu poskytuje téměř každý programovací jazyk sadu standardních knihoven společných funkcí. Programátoři mohou preferovat jazyk z důvodu knihoven, které poskytuje.
Knihovny standardu C například poskytují vysoce výkonné funkce pro mnoho nízkoúrovňových operací systému. Perl poskytuje mnoho robustních knihoven a také úložiště modulů CPAN, které lze stáhnout a použít ve vašem programu. Python poskytuje širokou škálu vestavěných funkcí a modulů pro téměř všechno pod sluncem. Clojure, jazyk podobný Lispu, který běží na JVM, těží z jeho schopnosti spouštět kód z rozsáhlých existujících knihoven objektů a metod jazyka Java.
Bezpečnostní
Ne všechny jazyky jsou vhodné pro psaní bezpečného kódu. Například programovací jazyk C je známý tím, že má vlastnosti (nebo jejich nedostatek), které mohou vést k devastujícím zranitelnostem, jako je nulový ukazatel dereferencí. Jiné jazyky se snaží tyto obavy řešit přísnějšími pravidly.
Některé jazyky například omezují operace, které lze provádět na různých typech dat. Nejpřísnější z těchto jazyků se někdy nazývá "silně napsané" a mohou nabídnout klid programátorům, kteří upřednostňují bezpečnost a stabilitu ve vývoji softwaru. Příklady silně psaných jazyků zahrnují Rust, Nim, Ocaml a Haskell.
Jazyky mohou také umístit limity na "mutability", schopnost datového objektu změnit stav. Namísto objektů, jejichž hodnoty jsou přepsány, tyto jazyky upřednostňují "neměnné" objekty: hodnoty v paměti, které nelze změnit bez výjimky. Neměnné objekty vzbudily zájem, protože vícejádrové procesory se staly rozšířenými, protože mají tendenci podporovat "bezpečnost vláken". V programu s bezpečným vláknem může více než jeden procesor pracovat na jedné sadě dat s výrazně sníženým rizikem chyby. Mezi jazyky, které upřednostňují neměnné objekty, patří Rust a Clojure.
Podpora Společenství
Při psaní programu v novém jazyce pomáhá mít přístup k aktivní, vášnivé komunitě vývojářů, kteří aktivně využívají a přispívají ke své práci. Před volbou programovacího jazyka se dozvíte více o komunitě tohoto jazyka. Některé jazyky mají vzrušující, dynamickou, živou uživatelskou základnu, kterou byste chtěli být součástí a jiné jazyky mohou mít malou nebo žádnou komunitu.
Expresivita
Když píšete program, myšlenky programátora a schopnosti řešit problémy „mluví“ tímto jazykem. Jako výsledek, programátoři inklinují preferovat jazyky ve kterém oni jsou pohodlně vyjadřovat sebe. To, co dělá jazyk a programátor spolu dobře, je však těžké definovat. Jediný způsob, jak zjistit, s jakým jazykem jste spokojeni, je použít různé jazyky pro různé projekty a porovnat je pro sebe.