Miks on nii palju programmeerimiskeeli?

Olemas on üle 250 programmeerimiskeele. Mõned neist on ärimaailmas laialdaselt kasutusel, nagu näiteks C ++, Java, JavaScript, Ruby ja Python. Teised on peamiselt akadeemilised, näiteks Lisp. Kuid teised on varjatud ja esoteerilised. Te võite küsida: "Miks on nii palju programmeerimiskeeli?"

See on palju nagu küsida: "Miks on nii palju matemaatika valdkondi? Meil ​​on algebra, miks me vajame geomeetria, kalkulaatorit ja vedeliku mehaanikat?" Iga programmeerimiskeel püüab lahendada konkreetse probleemi. Sama probleemi võib lahendada rohkem kui üks keel, kuid igaüks läheneb sellele erinevalt.

Siin on mõned olulised erinevused programmeerimiskeeles.

Loetavus ja hooldatavus

Mõned keeled on inimese jaoks lihtsam lugeda, mis teeb ühe programmeerija jaoks lihtsamaks teha koostööd teise programmeerija koodiga. Pythonil on näiteks hea lugemise maine. See jõustab ranged jooned, et määratleda selle koodiplokid, mistõttu on lihtne vaadata programmi ja selgitada selle struktuuri. Teised keeled võimaldavad ka süvendamist, kuid stilistilise valikuna, mitte nõuetena.

Seevastu Perl on keel, mis võimaldab programmeerijal sama programmi kirjutada mitmel erineval viisil, kuid programmi eesmärk ei pruugi olla kohe teisele lugejale selge. Selline programm võib olla mugav kirjutada, kuid kellelgi on raske seda mõista ja muuta.

Toimivus

Mõned keeled tõlgendatakse ja mõned neist on koostatud. Koostatud programmi peab töötlema eelprotsessor, kompilaator ja linker, enne kui arvuti seda saab käivitada. See spetsialiseerunud vaheprogramm teostab leksikaalset analüüsi, tõlkides programmi masina keelde. Samuti võib see optimeerida saadud juhiseid, otsides nutikaid viise programmi kiiremaks käivitamiseks.

Koostatud programmid täidavad tavaliselt paremini kui tõlgendatud programmid. Näiteks C, C ++ ja Objective-C on keeled, mis tavaliselt kompileeritakse väga kiireks masina koodiks. Videomängud ja süsteemitarkvara on sageli kirjutatud nendes keeltes, et CPU-st välja suruda iga tulemus.

Teisest küljest juhivad tõlgitud keeleprogramme tarkvara, mida nimetatakse tõlkiks, mis täidab programmi juhiseid ilma, et nad oleksid eelnevalt masina koodile kompileerinud. Kuigi tõlk tõlgendab mõnikord programmi vahepealse keelega, mille tulemuseks on mõningane optimeerimine, ei ole jõudlus kunagi nii kiire kui kompileeritud masina kood.

Tõlgitud keelte üks peamisi eeliseid on nende interaktiivse arengu potentsiaal. Kuna kogu programmi ei pea enne selle täitmist kompileerima, saab koodi interaktiivselt käivitada. Te tunnete seda, kui olete kunagi kasutanud oma operatsioonisüsteemi käsurida: sisestate käsu ja näete tulemusi. Sellist liidest nimetatakse REPL või "read-eval-print-loop". REPL lubab teil täita käske (või käskude plokke) individuaalselt ja vaadata tulemusi. Lisp, Perl, Python, NodeJS, Ruby ja JavaScript on näited tõlgitud keeltest, mida saab käivitada REPL-is.

Interaktiivsed käsuliidesed, näiteks Windowsi käsuviip ja bash, kvalifitseeruvad samuti tõlgitud keelteks. Nendes "keeltes" programme nimetatakse partii failideks või shelliskriptideks.

Erikasutusjuhtumid

Sageli on keeled konkreetsete programmide kirjutamisel eriti head. NodeJS on mõeldud näiteks veebi jaoks ühe keermestatud rakenduste kirjutamiseks. Selle blokeerimata fail I / O lubab programme jätkata ("ei ole blokeeritud"), kui nad ootavad vajalike andmete edastamist.

Teine näide on R-programmeerimiskeel, mis on spetsialiseerunud statistilisele analüüsile. R-is kirjutatud programmid saavad kasu sisseehitatud analüütilistest testidest ja mudelitest ning vahenditest, mis võimaldavad tõhusalt manipuleerida tohutute andmemahtudega.

Lihtne prototüüpimine

Mõned keeled võimaldavad kiiret prototüüpimist: programmeerija saab "lihtsalt alustada kirjutamist" ja koostada komponendi komponendile, kuni programm on täielikult moodustatud.

Näiteks saidi Reddit algselt kirjutatud Lispis. Pärast Redditi käivitamist kirjutati kogu sait Pythonis ümber mitmel põhjusel, nii tehniliseks kui logistiliseks. Kuigi kogu koodi ümberehitamine oli suur ettevõtja, ei avaldanud saidi omanikud kahetsust. 2005. aasta blogipostis märkisid nad, et Lisp lubas neil luua midagi, teadmata täpselt, mis see muutub.

Olemasolevad raamatukogud

Tavaliselt, kui käivitate uue programmeerimisprojekti, ei soovi te ratast uuesti leiutada. See tähendab, et te ei soovi kirjutada funktsioone tavaliste ülesannete jaoks nagu ruutjuure arvutamine või märgi esimese esinemise leidmine stringis. Sel põhjusel pakub peaaegu iga programmeerimiskeel standardseid ühiste funktsioonide raamatukogusid. Programmeerijad võivad eelistada keelt selle pakutavate raamatukogude tõttu.

Näiteks pakuvad C-standardraamatukogud suure jõudlusega funktsioone paljude madalataseme süsteemide toimingute jaoks. Perl pakub paljusid tugevaid raamatukogusid ning ka teie programmis allalaaditavate ja kasutatavate moodulite CPAN-hoidlat. Python pakub laias valikus sisseehitatud funktsioone ja mooduleid peaaegu kogu päikese all. JVM-il töötav Lisp-sarnane keelekasutus on kasulik selle võime järgi käivitada Java-objektide ja -meetodite ulatuslikest olemasolevatest raamatukogudest kood.

Turvalisus

Mitte kõik keeled ei võimalda turvalise koodi kirjutamist. Näiteks C programmeerimiskeel on tuntud omaduste (või nende puudumise) poolest, mis võib põhjustada laastavaid haavatavusi, nagu null-pointer dereferencing. Teised keeled püüavad neid probleeme lahendada rangemate eeskirjadega.

Näiteks seavad mõned keeled piiranguid selle kohta, milliseid toiminguid saab teha erinevat tüüpi andmetega. Nende keelte kõige rangemat nimetust nimetatakse mõnikord "tugevalt trükitud" ja nad saavad pakkuda meelerahu programmeerijatele, kes seavad tarkvara arendamisel esmatähtsaks turvalisuse ja stabiilsuse. Tugevalt tüpitud keelte näideteks on Rust, Nim, Ocaml ja Haskell.

Keeled võivad seada ka piiravuse "muutuvusele", andmesubjekti võimele muuta olekut. Üle kirjutatud objektide asemel eelistavad need keeled "muutumatut" objekti: mälu väärtusi, mida ei saa ilma selgesõnalise erandita muuta. Mitte-muutuvad objektid on äratanud huvi, kuna mitmetuumalised protsessorid on levinud, sest nad kalduvad edendama "niitide ohutust". Keermekindlas programmis võib rohkem kui üks protsessor töötada ühel andmekogumil, millel on oluliselt väiksem vigade tekkimise risk. Keeled, mis seavad muutumatute objektide esikohale, on Rust ja Clojure.

Ühenduse toetus

Programmi kirjutamisel uues keeles aitab see kaasa aktiivsele ja kirglikule arendajate kogukonnale, kes aktiivselt kasutavad ja aitavad üksteise tööd. Enne programmeerimiskeele valimist tutvuge selle keele kogukonnaga rohkem. Mõnedel keeltel on põnev, dünaamiline, elav kasutajabaas, mida võiksite olla osa teistest keeltest ja millel võib olla vähe kogukonda või mitte.

Ekspressiivsus

Programmi kirjutamisel on programmeerija mõtted ja probleemide lahendamise võimed selle keele kaudu "kõnelevad". Selle tulemusena kalduvad programmeerijad eelistama keeli, milles nad end mugavalt väljendavad. Siiski on raske määratleda keelt ja programmeerijat hästi. Lõppkokkuvõttes on ainus viis teada, millist keelt naudite, on kasutada erinevaid keeli erinevatele projektidele ja võrrelda neid enda jaoks.