Prečo existuje toľko programovacích jazykov?

Existuje viac ako 250 programovacích jazykov. Niektoré sú široko používané v podnikateľskom svete, ako napríklad C ++, Java, JavaScript, Ruby a Python. Iné sú primárne akademické, ako napríklad Lisp. Iní sú však temní a ezoterickí. Možno sa pýtate: "Prečo je toľko programovacích jazykov?"

To je veľa ako sa pýtať, "prečo je toľko oblastí matematiky? Máme algebru, prečo potrebujeme geometriu, počet a mechaniku tekutín?" Každý programovací jazyk má za cieľ vyriešiť konkrétny problém. Rovnaký problém by mohol vyriešiť viac ako jeden jazyk, ale každý by k nemu pristupoval inak.

Tu sú niektoré z najväčších rozdielov v programovacích jazykoch.

Čitateľnosť a udržiavateľnosť

Niektoré jazyky sú pre človeka jednoduchšie na čítanie, čo uľahčuje jednému programátorovi spolupracovať na kóde iného programátora. Napríklad Python má povesť pre ľahké čítanie. Vynucuje prísne odsadenie riadkov na definovanie kódových blokov, čo uľahčuje pohľad na program a jeho štruktúru. Iné jazyky umožňujú aj odsadenie, ale ako štýlovú voľbu, nie ako požiadavku.

Naproti tomu Perl je jazyk, ktorý umožňuje programátorovi napísať ten istý program mnohými rôznymi spôsobmi, ale programový cieľ nemusí byť pre druhého čitateľa okamžite jasný. Takýto program môže byť vhodný na písanie, ale pre niekoho iného je ťažké ho pochopiť a upraviť.

výkon

Niektoré jazyky sú interpretované a niektoré sú zostavené. Kompilovaný program musí byť spracovaný preprocesorom, kompilátorom a linkerom predtým, ako ho môže vykonať počítač. Tento špecializovaný stredný softvér vykonáva lexikálnu analýzu, preklad programu do strojového jazyka. To môže tiež optimalizovať výsledné pokyny, hľadá chytré spôsoby, ako spustiť program rýchlejšie.

Kompilované programy zvyčajne vykonávajú lepšie ako interpretované programy. Napríklad C, C ++ a Objective-C sú jazyky, ktoré sa zvyčajne prekladajú na veľmi rýchly strojový kód. Videohry a systémový softvér sú často napísané v týchto jazykoch, aby vytlačili každý kúsok výkonu z CPU.

Na druhej strane, tlmočené jazykové programy sú riadené softvérom nazývaným tlmočník, ktorý vykonáva programové inštrukcie bez toho, aby ich najprv kompiloval do strojového kódu. Hoci tlmočník niekedy analyzuje program na prechodný jazyk, čo vedie k určitej optimalizácii, výkon nie je nikdy taký rýchly ako kompilovaný strojový kód.

Jednou z hlavných výhod tlmočených jazykov je ich potenciál pre interaktívny rozvoj. Pretože celý program nie je potrebné kompilovať predtým, ako ho možno spustiť, kód môže byť spustený interaktívne. Ste oboznámení s tým, ak ste niekedy používali príkazový riadok operačného systému: zadáte príkaz a uvidíte výsledky. Takéto rozhranie sa nazýva REPL alebo "read-eval-print-loop." REPL vám umožňuje vykonávať príkazy (alebo bloky príkazov) individuálne a zobraziť výsledky. Lisp, Perl, Python, NodeJS, Ruby a JavaScript sú príkladmi interpretovaných jazykov, ktoré možno spúšťať v REPL.

Interaktívne rozhrania príkazov, ako napríklad príkazový riadok systému Windows a bash, sa tiež kvalifikujú ako interpretované jazyky. Programy v týchto "jazykoch" sa nazývajú dávkové súbory alebo skripty shell.

Špecifické prípady použitia

Jazyky sú často veľmi dobré pri písaní konkrétnych typov programov. Napríklad, NodeJS je navrhnutý tak, aby písal jedno-závitové aplikácie pre web. Jeho nezablokujúci súbor I / O umožňuje pokračovať v prevádzke programov ("nie sú blokované"), kým čakajú na prenos požadovaných údajov.

Ďalším príkladom je programovací jazyk R, ktorý sa špecializuje na štatistickú analýzu. Programy napísané v R využívajú vstavané analytické testy a modely a nástroje na efektívnu manipuláciu s veľkými množstvami údajov.

Jednoduchosť prototypovania

Niektoré jazyky umožňujú rýchle prototypovanie: programátor môže "začať písať" a zostavovať komponent na komponente, kým sa program úplne nevytvorí.

Napríklad webová stránka Reddit bola pôvodne napísaná v Lisp. Po spustení Redditu bola celá stránka prepísaná v Pythone z mnohých dôvodov, a to ako technických, tak logistických. Hoci refactoring všetok kód bol významným záväzkom, majitelia stránok nevyjadrili ľútosť. V blogu v roku 2005 poznamenali, že im Lisp umožnil vytvoriť niečo bez toho, aby presne vedel, čo by sa stalo.

Dostupné knižnice

Zvyčajne, keď začnete nový programovací projekt, nechcete znovu vynaliezať koleso. To znamená, že nechcete písať funkcie pre bežné úlohy, ako je výpočet druhej odmocniny, alebo zistenie prvého výskytu znaku v reťazci. Z tohto dôvodu poskytuje takmer každý programovací jazyk súbor štandardných knižníc spoločných funkcií. Programátori môžu uprednostňovať jazyk z dôvodu knižníc, ktoré poskytuje.

Napríklad, štandardné knižnice C poskytujú vysoko výkonné funkcie pre mnohé nízkoúrovňové systémové operácie. Perl poskytuje mnoho robustných knižníc a tiež úložisko modulov CPAN, ktoré sa majú stiahnuť a použiť vo vašom programe. Python poskytuje širokú škálu zabudovaných funkcií a modulov pre takmer všetko pod slnkom. Clojure, jazyk podobný Lispu, ktorý beží na JVM, ťaží z jeho schopnosti spúšťať kód z rozsiahlych existujúcich knižníc objektov a metód Java.

zabezpečenia

Nie všetky jazyky sú vhodné na písanie bezpečného kódu. Napríklad programovací jazyk C je známy tým, že má vlastnosti (alebo ich nedostatok), ktoré môžu viesť k devastujúcim zraniteľnostiam, ako je napríklad nulový ukazovateľ dereferencovania. Iné jazyky sa snažia riešiť tieto obavy prísnejšími pravidlami.

Niektoré jazyky napríklad obmedzujú, aké operácie možno vykonávať na rôznych typoch údajov. Najprísnejšie z týchto jazykov sa niekedy nazývajú "silne napísané" a môžu ponúknuť pokoj pre programátorov, ktorí uprednostňujú bezpečnosť a stabilitu vo vývoji softvéru. Príklady silne písaných jazykov zahŕňajú Rust, Nim, Ocaml a Haskell.

Jazyky môžu tiež klásť obmedzenia na "mutability", schopnosť dátového objektu zmeniť stav. Namiesto objektov, ktorých hodnoty sú prepísané, tieto jazyky uprednostňujú "nemenné" objekty: hodnoty v pamäti, ktoré sa nedajú zmeniť bez explicitnej výnimky. Nemenné objekty priťahovali záujem, pretože viacjadrové procesory sa stali rozšírenými, pretože majú tendenciu podporovať "bezpečnosť vlákien". V programe s bezpečným vláknom môže viac ako jeden procesor pracovať na jednom súbore údajov s výrazne zníženým rizikom chyby. Medzi jazyky, ktoré uprednostňujú nemenné objekty, patria Rust a Clojure.

Podpora Spoločenstva

Pri písaní programu v novom jazyku pomáha mať prístup k aktívnej, vášnivej komunite vývojárov, ktorí aktívne využívajú a prispievajú k vzájomnej práci. Pred výberom programovacieho jazyka sa dozviete viac o komunite daného jazyka. Niektoré jazyky majú vzrušujúcu, dynamickú, živú užívateľskú základňu, ktorú by ste mohli chcieť byť súčasťou a iné jazyky môžu mať malú alebo žiadnu komunitu.

výrečnosť

Keď píšete program, myšlienky programátora a schopnosti riešenia problémov „hovoria“ cez tento jazyk. Výsledkom je, že programátori majú tendenciu uprednostňovať jazyky, v ktorých sa pohodlne vyjadrujú. Je však ťažké definovať jazyk a programátora. Jediný spôsob, ako vedieť, s ktorým jazykom ste spokojní, je používať rôzne jazyky pre rôzne projekty a porovnať ich pre seba.