Kodėl yra tiek daug programavimo kalbų?

Yra daugiau nei 250 programavimo kalbų. Kai kurie yra plačiai naudojami verslo pasaulyje, pavyzdžiui, „C ++“, „Java“, „JavaScript“, „Ruby“ ir „Python“. Kiti yra akademiniai, pavyzdžiui, „Lisp“. Tačiau kiti yra neaiškūs ir ezoteriniai. Galbūt jūs klausiate: "Kodėl yra tiek daug programavimo kalbų?"

Tai daug, kaip klausia: „Kodėl yra tiek daug matematikos sričių? Mes turime algebrą, kodėl mums reikia geometrijos, skaičiavimo ir skysčių mechanikos?“. Kiekviena programavimo kalba siekiama išspręsti konkrečią problemą. Tą pačią problemą gali išspręsti daugiau nei viena kalba, tačiau kiekviena jų kreipsis kitaip.

Štai keletas svarbiausių programavimo kalbų skirtumų.

Skaitymas ir prieinamumas

Kai kurios kalbos lengviau skaitomos žmogui, todėl vienam programuotojui lengviau bendradarbiauti su kito programuotojo kodu. Python, pavyzdžiui, turi gerą reputaciją, nes jį lengva skaityti. Jame įtvirtinamos griežtos linijos, kad būtų apibrėžti jo kodo blokai, todėl lengva žiūrėti į programą ir išsiaiškinti jo struktūrą. Kitos kalbos taip pat leidžia įsikišti, bet kaip stilistinį pasirinkimą, o ne kaip reikalavimą.

Priešingai, „Perl“ yra kalba, leidžianti programuotojui rašyti tą pačią programą daugeliu skirtingų būdų, tačiau programos paskirtis gali būti ne iš karto aiški kitam skaitytojui. Tokia programa gali būti patogu rašyti, bet kitiems sunku suprasti ir redaguoti.

Spektaklis

Kai kurios kalbos yra aiškinamos, o kai kurios -. Sudaryta programa turi būti apdorojama išankstinio apdorojimo, kompiliatoriaus ir sąsajos, prieš ją gali atlikti kompiuteris. Ši specializuota tarpinė programinė įranga atlieka leksinę analizę, perkeliant programą į mašinos kalbą. Ji taip pat gali optimizuoti gautas instrukcijas, ieškodama protingų būdų, kaip programa veikti greičiau.

Sudarytos programos paprastai atlieka geresnes nei interpretuojamas programas. Pavyzdžiui, C, C + + ir Objective-C yra kalbos, kurios paprastai rengiamos į labai greitą mašinos kodą. Vaizdo žaidimai ir sistemos programinė įranga dažnai rašomi šiomis kalbomis, kad būtų galima išspausti kiekvieną procesoriaus našumą.

Kita vertus, aiškinamosios kalbos programos yra valdomos programine įranga, vadinama vertėja, kuri vykdo programos instrukcijas, prieš tai nesudarydama jų į kompiuterio kodą. Nors vertėjas kartais supranta programą į tarpinę kalbą, o dėl to kai kurios optimizacijos, našumas niekada nėra toks greitas, kaip kompiliuojamasis mašinos kodas.

Viena iš svarbiausių išverstų kalbų naudos yra jų interaktyvios plėtros potencialas. Kadangi visai programai nereikia kompiliuoti, kol jis negali būti įvykdytas, kodą galima paleisti interaktyviai. Jūs tai žinote, jei kada nors naudojote operacinės sistemos komandinę eilutę: įvedate komandą ir matote rezultatus. Tokia sąsaja vadinama REPL arba „read-eval-print-loop“. REPL leidžia jums atlikti komandas (arba komandų blokus) atskirai ir peržiūrėti rezultatus. „Lisp“, „Perl“, „Python“, „NodeJS“, „Ruby“ ir „JavaScript“ yra interpretuojamų kalbų, kurias galima paleisti REPL, pavyzdžiai.

Interaktyvios komandų sąsajos, pvz., „Windows“ komandų eilutė ir „bash“, taip pat laikomos aiškintomis kalbomis. Šiose „kalbose“ esančios programos vadinamos paketiniais failais arba apvalkalo scenarijus.

Konkretūs naudojimo atvejai

Dažnai kalbos yra ypač gera rašant konkrečias programas. Pvz., „NodeJS“ yra sukurta tam, kad rašytų žiniatinklyje vieną sriegį. Nepakartojantis failas I / O leidžia programoms tęsti darbą („negali būti užblokuotas“), kol jie laukia, kol bus perduoti reikalingi duomenys.

Kitas pavyzdys yra R programavimo kalba, kuri specializuojasi statistinėje analizėje. Programose R rašytose programose yra įmontuoti analitiniai testai ir modeliai bei įrankiai, skirti efektyviai valdyti didelius duomenų kiekius.

Lengvas prototipų kūrimas

Kai kurios kalbos leidžia greitai atlikti prototipų kūrimą: programuotojas gali „tiesiog pradėti rašyti“ ir sukurti komponentą, kol programa bus visiškai suformuota.

Pavyzdžiui, svetainė Reddit buvo parašyta Lisp. Paleidus „Reddit“, visa „Python“ svetainė buvo perrašyta daugeliu techninių ir logistinių priežasčių. Nors visas kodas buvo rekonstruotas, tai buvo svarbi įmonė, tačiau svetainės savininkai nepritarė. 2005 m. Dienoraštyje jie pažymėjo, kad Lisp leido jiems kurti kažką, nežinodamas, ką jis taptų.

Galimos bibliotekos

Paprastai, kai pradedate naują programavimo projektą, nenorite iš naujo išrasti rato. Tai yra, jūs nenorite rašyti funkcijų įprastoms užduotims, pvz., Kvadratinės šaknies skaičiavimui, arba pirmosios eilės požymio paieškos. Dėl šios priežasties beveik kiekviena programavimo kalba suteikia standartinių bendrų funkcijų bibliotekų rinkinį. Programuotojai gali rinktis kalbą dėl bibliotekų.

Pavyzdžiui, C standartinės bibliotekos atlieka labai efektyvias funkcijas daugeliui žemo lygio sistemos operacijų. „Perl“ siūlo daug patikimų bibliotekų, taip pat CPAN modulių saugyklą, kurią norite atsisiųsti ir naudoti programoje. „Python“ siūlo platų integruotų funkcijų ir modulių asortimentą beveik viskas po saule. „Clojure“, „Lisp“ tipo kalba, kuri veikia „JVM“, gauna naudos iš jo gebėjimo paleisti kodą iš didelių esamų „Java“ objektų ir metodų bibliotekų.

Saugumas

Ne visomis kalbomis galima rašyti saugų kodą. Pavyzdžiui, C programavimo kalba yra žinoma dėl savybių (arba jų trūkumo), dėl kurių gali atsirasti niokojančių pažeidžiamumų, pvz., Nulinio žymeklio dereferencija. Kitos kalbos bando išspręsti šias problemas griežtesnėmis taisyklėmis.

Pavyzdžiui, kai kurios kalbos riboja, kokias operacijas galima atlikti su įvairių tipų duomenimis. Griežčiausia iš šių kalbų kartais vadinama „stipriai įvestais“, ir jie gali suteikti ramybę programuotojams, kurie pirmenybę teikia programinės įrangos kūrimo saugumui ir stabilumui. Stipri įvestų kalbų pavyzdžiai yra Rustas, Nimas, Ocaml ir Haskellas.

Kalbos taip pat gali apriboti „mutaciją“, duomenų objekto gebėjimą pakeisti būseną. Vietoj objektų, kurių vertės yra perrašytos, šios kalbos palankios „nekintamiems“ objektams: vertėms atmintyje, kurių negalima keisti be aiškios išimties. Nesuprantami objektai pritraukė susidomėjimą, nes daugelio branduolių procesoriai tapo plačiai paplitę, nes jie linkę skatinti „sriegių saugumą“. Sriegių saugioje programoje daugiau nei vienas procesorius gali veikti viename duomenų rinkinyje su labai sumažinta klaidų rizika. Kalbos, kuriose pirmenybė teikiama nepakeistiems objektams, apima Rustą ir Clojure.

Bendrijos parama

Rašydami programą nauja kalba, ji padeda pasiekti aktyvią, aistringą kūrėjų bendruomenę, aktyviai naudojančią ir prisidedančią prie vienas kito darbų. Prieš pasirinkdami programavimo kalbą, sužinokite daugiau apie šios kalbos bendruomenę. Kai kuriose kalbose yra įdomi, dinamiška, energinga naudotojų bazė, kurią galbūt norėsite dalyvauti, o kitos kalbos gali turėti mažai arba visai nėra bendruomenės.

Išraiška

Rašant programą, programuotojo mintys ir problemų sprendimo gebėjimai „kalba“ per tą kalbą. Todėl programuotojai linkę pirmenybę teikti kalboms, kuriomis jie patogiai išreiškia save. Tačiau sunku apibrėžti kalbą ir programuotoją gerai. Galiausiai, vienintelis būdas sužinoti, kokia kalba jums patinka, yra naudoti skirtingas kalbas skirtingiems projektams ir juos palyginti.