keresés

2021. május 7., péntek

Mik azok a programnyelvek és miért van ennyi?

A programnyelvekkel a számítástechnikában képesek vagyunk kommunikálni a gépekkel az általunk értelmezhető jelrendszer segítségével amivel közvetlenül, vagy közvetve közölhetjük a számítógéppel egy adott feladat elvégzésének módját. Ezek a számítógép által is értelmezhető kódok ténylegesen úgy működnek, akár csak a mi nyelvünk és, ha azt is figyelembe vesszük hányféle programnyelv létezik még jobban érezhetjük a hasonlóságot.


De miért van annyi programnyelv?
Sokkal egyszerűbb lenne, ha csak egy nyelv létezne és az megoldás lenne minden problémára!

A bőség zavara

Miért van annyi autó? Mindegyik ugyan azt csinálja, elvisz A-ból B-be, mégis annyi márka. Elég feleslegesnek hangzik nem? De azért mégse szívesen haj be az ember a zsír új Audival a földútra, a nagycsaládnak nem olyan kényelmes a Mini Morris és nem egy Suzuki lesz befogva anyagszállításra a munkahelyen. Arról nem is beszélve, hogy valaki csak a német autókra esküszik, valaki meg elektromosat szeretne. De van hibrid is, tűzoltó autó, kamion és vontatókocsi. Ha kijön egy úgy modell, ami jobb, mint a tavaly vett kocsim, az átlagember nem teheti meg, hogy azonnal újat vegyen. Végül számos modell, pontosan ugyan azt az ember csoportot célozza, remélve, hogy a saját megoldásaik elég jók ahhoz, hogy elcsábítsák a konkurencia vásárlóit.

De miben tudnak különbözni a programnyelvek?

(fordított és interpretált nyelvek)

Az elnevezés nagyon találó. Ha a saját nyelvemen beszélgetek valakivel az sokkal zökkenő mentesebben megy, mintha a tolmácsra kéne várnom. Viszont ha van egy tolmácsom akkor bár lassabb a kommunikáció, de meg van az a kényelmem, hogy nem kell megtanulnom egy másik nyelvet.

A fordított programnyelvek gyorsak cserébe inkább a számítógép nyelvét beszélem, mint a sajátom. Az interpretált nyelvek lassabbak cserébe általában ezek sokkal emberibbek átláthatóbbak és érthetőbbek. Fordított nyelv például a c,c++ és a rust. Interpretált a python,php vagy a ruby. Ezen felül vannak átfordított nyelvek mint a Kotlin amiből Java, vagy a Typescript amiből javascript lesz. Vannak JIT, azaz épp időben fordított nyelvek is mint a Java vagy a C#.

Memória menedzsment

A programozó eredendően hibázik. Amikor egy programnyelvet készítünk el kell döntenünk, hogy rábízzuk-e a memória kezelést a programozóra vagy sem. Ez egy komoly kérdés a Chromium projektben, ami a Google Chrome böngésző nyílt forráskódú része, a bugok 70% rossz memória kezelésből adódik. A Chrome-ot c++-ban írták ami a programozóra bízza a memória kezelést és bár nagyon gyors nyelv a c++, itt jól látszik, hogy meg van az ára. Az alternatíva a „szemétgyűjtés” amit a Garbage Gollector (GC) végez. Ez gyakorlatilag leveszi a memóriakezelés terhét a programozók válláról. Nem csinálja olyan jól mint ha egy programozó jól kezelné a memóriát c++-ban, de elég jó a legtöbb feladathoz.

A lehetőségek száma végtelen

Manapság már szinte minden programozási nyelv általános célú, akármit meg lehet velük programozni. Mégse célravezető c++-ban weblapot írni, vagy pythonban játékot. Ha a cég megírt egy több millió soros programot Javában akkor nem fognak váltani c#-csak mert azt most már jobbnak gondolják, de még Kotlinra sem. Ez túl sok pénzébe kerülne a cégnek, újra írni több millió sort, átképezni az embereket, úgy, hogy mindeközben működnie kell a terméknek, ha nem szeretnénk több milliós pénz kiesést. A programnyelvek kamionja és vontató kocsija a matlab és az R. Ezek kifejezetten tudósoknak készültek a kutatásaikhoz. A szintakszisuk közelebb áll a matematikához és megengedőbbek az első sorban matematikus, programozókkal. Illetve nagyon sok programnyelv szinte ugyan azt csinálja kis eltérésekkel ezt vagy azt jobban. Sőt manapság elég gyakran előfordul, hogy egy új projektnél már nem is programnyelvet, hanem keretrendszert választ a programozó csapat, ez a webfejlesztésre különösen igaz. Némelyik keretrendszer már szinte népszerűbb, mint a programnyelv amiben írták.

Nincsenek megjegyzések:

Megjegyzés küldése