Meniu

Calculatoarele din perspectiva programatorului

Fara indoiala, este nevoie sa scriu si despre diferenta dintre “sistem de operare” si “distributie”, cu atât mai mult cu cât multa lume confunda distributiile cu “sistem de operare”. ZorinOS, Linux Lite si inca alte vreo câteva zeci de clone de Ubuntu care au aparut ca ciupercile dupa ploaie, inclusiv popularul Linux Mint, este tot un Ubuntu, - “sisteme de operare”.

Fara indoiala, cu timpul, poate vor apare diferente mai mari, dar asta se va intâmpla — se intâmpla de fapt continuu! — la nivel de aplicatii, de metode si mijloace de gestionare a aplicatiilor si mai putin la nivel de sistem de operare!

Ceea ce foarte putini inteleg inca este faptul ca se impune din ce in ce mai mult nevoia de a introduce expresia “operarting environnement” = MEDIU DE OPERARE, care este o cu totul alta poveste decât “sistem de operare”.

Fara ca expresia “operarting environnement” sa fie noua — corporatia Microsoft a folosit-o pentru familia NT inca de pe la finele anilor ’90, ea inca este apanajul specialistilor si expertilor in programare. AICI inca mai este de lucru, sa popularizam aceste concepte si sa le exprimam cât mai multi, pentru a putea sa punem ordine in modul in care comunicam, altfel, vom ajunge sa spunem “casa” si sa pricepem “avion”. Fara indoiala, un avion poate fi amenajat ca o casa de lux extrem, totusi, el este in esenta un mijloc de transport si ASTA este caracteristica lui esentiala! “Casa”, este o caracteristica secundara, care tine de designul avionului, adica, de FORMA.

La fel e si sistemul de operare: UN MIJLOC DE TRANSPORT! Ce punem pe lânga sistemul de operare, este tot o chestiune de design, adica de amenajari interioare si exterioare!

Esenta mediului de operare, este sistemul de operare!

Dar tot aici e si deosebirea capitala: in vreme ce un sistem de operare poate exista si functiona de sine statator, in afara conceptului de mediu de operare, un mediu de operare PERFORMANT, inseamna un sistem de operare perfect functional si un pachet urias de alte elemente care se interconecteaza PERFECT cu sistemul de operare. Altfel spus, sistemul de operare este doar una dintre sutele, chiar miile de componente ale unui mediu de operare!

CE-SI DORESTE UN PROGRAMATOR?

Acum ca am lamurit macar in parte diferenta dintre sistem de operare si mediu de operare, hai sa vedem ce isi poate dori si chiar isi doreste un programator de la mediul de operare specific lui.

Cândva, cu vreo trei decenii in urma, chestiunea programarii, era relativ simpla. Aceleasi unelte, iti permiteau sa faci aproape orice cu calculatorul, la nivel programatic. Calculatorul fizic putea putin, deci si programele, având resurse putine, erau “simplu” de realizat. Un program din acele vremuri, era de fapt o comanda care se scria in consola si eventual, avea o multime de modificatori si parametri — gen bash sau csh=cshell — totul mergea foarte repede. Au aparut insa cerintele multimedia si de aici, totul a inceput sa galopeze, sa explodeze…

Programarea astazi, inseamna:

CORE PROGRAMMING. Programare de baza. Se refera la programarea aplicatiei numita “kernel” sau nucleul sistemului de operare si toate celelalte module si aplicatii sau “servicii” care vin si se cupleaza cu kernelul, pentru a constitui forma cea mai rudimentara a unui sistem de operare. În general, in “core programming” se lucreaza la conceperea unor algoritmi de calcul din ce in ce mai performanti (vezi algoritmi genetici).

SYSTEM PROGRAMMING. Programarea sistemelor. Aici, deja facem distinctie intre un sistem de operare care ruleaza pe o anumita masina dar este incapabil sa ruleze pe o alta. Diferentele se afla in platforma fizica (Intel, AMD, ARM, RISC, CISC, etc.). Astfel, un sistem de operare foarte performant, privit din perspectiva utilizatorului, “stie” sa se instaleze pe o multime de masini. De fapt, ceea ce difera, este INSTALLERUL, care este in sine un program sofisticat si prin intermediul caruia ceea ce se instaleaza pe un AMD este un sistem de operare DIFERIT de ceea ce se instaleaza pe Intel, care este DIFERIT de ce se instaleaza pe ARM, care este DIFERIT de ce se instaleaza pe Motorola, etc., etc., etc. Ceea ce este comun, se numeste “CoreOS” adica “Nucleul sistemului de operare” si care are drept componenta principala kernelul, dar are module SPECIFICE PLATFORMEI. Deci, desi in aparenta kernelul ar fi “acelasi”, este de fapt ALT KERNEL de fiecare data. Partea de programe specifice masinii sau familiilor de masini (Firmware de exemplu), este deja o meserie distincta de vreo 20 de ani, poate chiar mai mult!

GUI PROGRAMMING. GUI sau Graphic User Interface — Interfata grafica utilizator — a devenit de mult un domeniu distinct al programarii. Putini stiu ca poate cea mai dificila parte a programarii, desi de la distanta pare altfel, este exact programarea interfetelor grafice. Problemele constau mai putin in partea de design grafic si gadgeturi grafice. Pentru cine stie programare, problema care da dureri de cap se numeste “Collisions” si simplist explicat, se refera la apeluri “accidentale” ale unor functii, care apar in conditii neasteptate si mai ales, NEDORITE, schimbând nedorit cursul rezultatelor procesarii. Dureaza prea mult sa explic in detaliu. Poate fi un caz ca urmatorul: Fac clic pe butonul de minimizare al unei ferestre si constat ca se deschid 6 ferestre, fara ca eu sa fi comandat asta. Sau se inchid toate ferestrele pe care le aveam deschise, desi eu cerusem altceva. Sirul exemplelor poate continua la infinit, dar in parte, cred ca am lamurit ce inseamna “coliziune”. De obicei, este o eroare de logica a programarii, care poate avea insa cauze multiple si uneori efecte catastrofale, mai ales când lucreaza de mai multi ani o echipa, la un proiect complex.

WORKFLOW PROGRAMMING. Expresia se refera la optimizarea unui flux de calcul, respectiv a unui proces de calcul. Dureaza prea mult sa intru in detalii. Ideea de baza este cea pe care pasionatii dezvoltarii personale o cunosc sub denumirea “prioritizarea sarcinilor” si in viata de zi cu zi, o numim “Ce e mai important ACUM, PENTRU MINE?”. Cine stie ce inseamna “organigrama” si “diagrama de flux” (flowchart), stie ce vreau sa spun. Pentru ceilalti, recomand consultarea Wikipedia, daca vor sa se documenteze. Acest subdomeniu al programarii, a devenit “presant”, “critic” odata cu raspândirea procesoarelor multi-nucleu si cu dezvoltarea conceptului “parallel computing” si respectiv “multicore processor”. Daca pâna de curând problema calculului preemptiv se putea rezolva prin artificii care simulau paralelismul pe baza puterii de calcul a procesorului si a diferentei de perceptie a vitezei de calcul la nivelul uman, acum complexitatea sarcinilor de calcul curente la nivel de utilizator casnic, a impus aceasta dezvoltare a programarii. Daca luam in calcul si complexitatea sarcinilor actuale in domeniul cercetarii stiintifice, atunci e usor de inteles ce, de ce si cum.
NETWORK PROGRAMMING. În fine, am ajuns si la acea forma de programare care ne ajuta pe noi sa ne intâlnim aici, pe net. Pâna acum, am vorbit despre programarea masinii fara sa abordam “cum vorbesc masinile intre ele” si “cum vorbim noi prin intermediul calculatoarelor”. Network programming, este o sinteza subtila a celor patru forme de programare anterioare: core programming, system programming, gui programming si workflow programming. Rezultatul este ceea ce numin noi cu atâta nonsalanta, cu usuratate chiar, “Internet”. Si aici avem insa “subdomenii” majore si voi da doar un exemplu: database programming, care este in sine o chestie extrem de complicata astazi.

LANGUAGE PROGRAMMING. Ei, da, astazi avem si acest domeniu, care si el este vast! Înseamna programarea limbajelor de programare. Dureaza prea mult sa intru in detalii, iata insa o referinta la limbaje de programare GRATUITE! Doar câteva exemple: bash (ca tot vorbim despre lumea Linux!); GCC (GNU C Compiler); Objective-C; GNU Smalltalk; Free Pascal; Object Pascal; FreeBASIC; GNU Prolog; Gambas; GNAT, etc. Lista e mult mai lunga daca includem si limbajele comerciale. Ideea cred ca e clara: si limbajele de programare SE PROGRAMEAZA!

Dupa cum observi si din perspectiva programatorilor, avem deja 6 (sase!) paradigme (perspective) diferite din care putem defini un sistem de operare, un mediu de operare si o distributie.

Astfel, definitia pentru “sistem de operare”, “mediu de operare” si “distributie” data de fiecare programator din cele sase categorii, este foarte diferita, pentru ca si nevoile lor specifice, sunt foarte diferite!

Si ÎN LUMEA UTILIZATORILOR, exista o astfel de STRUCTURARE A CERERII:

Masina de uz general;
Masina pentru creare de continut web;
Masina pentru editare audio;
Masina pentru editare video;
Masina pentru modelare 3D;
Masina pentru 3D Printing and Designing;
Masina pentru proiectare 2D;
Masina pentru proiectare si simulare cinematica;
Masina pentru proiectare si simulare moleculara;
Masina pentru proiectare si simulare genetica;
Masina pentru proiectarea si simularea proceselor reale, etc.

Fiecare dintre aceste masini trebuie sa aiba o anumita configuratie hardware si un anumit pachet software specific.

Acelasi lucru este valabil si pentru programatori si pentru utilizatori, in egala masura.

John Doe

Articole publicate de la contributori ce nu detin un cont pe gnulinux.ro. Continutul este verificat sumar, iar raspunderea apartine contributorilor.
  • | 340 articole

Nici un comentariu inca. Fii primul!
  • powered by Verysign