Înainte Înapoi Cuprins

12. Cum lucrează limbajele calculatorului?

Am discutat deja cum rulează programele. Orice program trebuie să se execute în final ca un șir de octeți care sunt instrucțiuni în limbaj mașină al calculatorului dvs. Dar ființele umane nu se descurcă cu limbajul mașină foarte bine; făcând aceasta a devenit o rară artă neagră chiar printre hackeri.

Aproape tot codul Unix exceptând o mică parte de suport pentru interfețe hardware în însuși kernel este acum scris într-un support in the kernel itself is nowadays written in a limbaj de nivel înalt. (`Nivelul înalt' în acest termen este o relicvă istorică menită să le distingă pe acestea de

limbajele de asamblare de `nivel jos', care sunt fundamental traductoare subțiri în jurul acestiu cod mașină.)

Sunt câteva feluri diferite de limbaj de nivel înalt. Pentru a vorbi despre acestea, o să găsiți folositor să rețineți că codul sursă al unui program (versiunea creată de om, redactabilă) trebuie să treacă printr-un fel de traducere în cod mașină pe care mașină să poată defapt să-l ruleze.

12.1 Limbaje compilate

Cel mai convențional fel de limbaj este un limbaj compilat. Limbajele compilate sunt traduse în fișiere executabile de cod mașină de un program special numit (destul de logic) compilator. Odată ce binarul a fost generat, puteți să-l rulați direct fără să vă mai uitați la codul sursă vreodată. (Cel mai mult software (programe) este distribuit ca binare compilate făcute din cod pe care nu-l vedeți.)

Limbajele compilate tind să dea o excelentă performanța și au cel mai mult acces la SO, dar deasemenea să fie greu de programat în ele.

C, limbajul în care Unix însuși este scris, este de departe cel mai important din acestea (cu varianta sa C++). FORTRAN este alt limbaj compilat încă folosit printre ingineri și oameni de știință, dar cu ani mai bătrân și mult mai primitiv. În lumea Unix nici un alt limbaj compilat nu este folosit larg. În afara lui, COBOL este foarte folosit pentru software financiar și pentru afaceri.

Au existat multe alte limbaje compilatoare, dar cele mai multe au dispărut sau sunt strict unelte de cercetare. Dacă sunteți un programator Unix nou folosind un limbaj compilat, este foarte probabil să fie C sau C++.

12.2 Limbaje interpretate

Un limbaj interpretat depinde de un program interpretor care citește codul sursă și îl traduce pe loc în calcule și chemări de sistem. Sursa trebuie să fie re-interpretată (și interpretorul prezent) de fiecare dată când codul este executat.

Limbajele interpretate tind să fie mai încete decât limbajele compilate, și deseori au acces limitat la sistemul de operare și hardwareul intern. Pe cealaltă parte, ele tind să fie mai ușor de programat și mai iertătoare la erori de codare decât limbajele compilate.

Multe utilitare Unix, incluzând shellul și bc(1) și sed(1) și awk(1), sunt efectiv mici limbaje de interpretare. BASICurile sunt de obicei interpretate. La fel și Tcl. Istoric, cel mai importante limbaj interpretor a fost LISP (o îmbunătățire majoră față de cei mai mulți succesori ai săi). Astăzi Perl este foarte folosit și crește în popularitate constant.

12.3 Limbaje P-cod

De la 1990 un fel de limbaj hibrid care folosește atât compilarea cât și interpretarea a devenit important din ce în ce mai mult. Limbajele P-cod sunt ca limbajele compilate în sensul că sursa este tradusă la o formă binară compactă care este ceea ce executați de fapt, dar acea formă nu este cod mașină. În loc este pseudocod (sau p-cod), care este de obicei mult mai simplu dar mai puternic decât un limbaj mașină advărat. Când rulați programul, interpretați p-codul.

P-codul poate rula aproape la fel de repede ca binarul compilat (interpretoarele de p-cod pot fi făcute destul de simple, mici și rapide). Dar limbajele p-cod pot să păstreze flexibilitatea și puterea unui interpretor bun.

Limbajele importante p-cod includ Python și Java.


Înainte Înapoi Cuprins