Privind în urmă către primele sisteme de calcul, la care se lucra direct în limbaj masină, si comparându-le cu calculatoarele personale actuale, dotate cu o interfată soft extrem de prietenoasă, se poate spune că evolutia sistemelor de operare a urmărit-o îndeaproape pe cea a hard-ului, fiind la fel de spectaculoasă. Dezvoltarea mediilor de operare de tip MacIntosh si a sistemelor de tip Windows (în anii 90) a făcut din calculator un instrument de lucru accesibil inclusiv pentru neprofesionisti.
SO este format dintr-o parte de control, care realizează interfata directă cu hard-ul, si o parte de servicii, care contine instrumente de lucru variate, aflate la dispozitia utilizatorului; de fapt, acestea exploatează partea de control, desi acest lucru este transparent pentru utilizator.
Partea de control [Boi88] contine proceduri care realizează:
1) gestiunea întreruperilor: întreruperea preupune suspendarea executiei programului în curs printr-un semnal, ca urmare a unui eveniment, deservirea întreruperii si reluarea executiei programului în curs. De exemplu, terminarea executiei unei operatii de intrare-iesire este semnalată unitătii de comandă printr-o întrerupere.
2) gestiunea proceselor presupune operatii de creare, stergere a proceselor si colaborări între procese. Un proces cuprinde o procedură împreună cu procesorul care i-a fost alocat pentru executie si cu resursele fizice care i-au fost acordate (memorie, timp, periferice). Comunicarea între procese are un rol deosebit în softul destinat retelelor de calculatoare.
3) gestiunea memoriei se referă la alocarea memoriei (stabilirea necesarului de memorie) si protectia memoriei (să nu existe suprapuneri între programele folosite de diversi utilizatori)
4) operatiile de intrare-iesire la nivel fizic, adică operatiile elementare de transfer de informatii
5) gestiunea fisierelor presupune operatii de deschidere, închidere, citire din fisiere sau scriere în fisiere
6) planificarea lucrărilor si alocarea resurselor. Planificarea lucrărilor se referă la etapele prin care trece un program (o lucrare) pentru a fi executat. Resursele pot fi: fizice (memorie, periferice, timp) sau logice (proceduri sau programe).
Partea de servicii cuprinde soft aplicativ. Acesta s-a dezvoltat foarte mult în ultimii ani, atât ca performante, cât si din punctul de vedere al accesibilitătii inferfetei oferite utilizatorului; aparitia si dezvoltarea sistemelor Windows este cel mai concludent exeplu în acest sens.
Cu observatia că interferentele dintre diversele tipuri de produse soft sunt inerente, considerăm că, din punctul de vedere al ariei lor de utilizare, utilitarele soft se pot clasifica în produse destinate:
biroticii: editoare de documente, foi de calcul electronice, produse destinate prelucrărilor de informatii multimedia (vezi notiuni de birotică), gestiunea fisierelor si a resurselor calculatorului;
prelucrării volumelor mari de date organizate în baze de date sisteme de gestiune a bazelor de date;
dezvoltării de aplicatii/programe mediile de programare oferă utilizatorilor profesionisti posibilitatea de a crea aplicatii în domenii variate, de la informatică (baze de date, inteligentă artificială, aplicatii partajate în retele etc.) la diverse ramuri ale stiintei sau chiar artei (proiectare, simulare, prelucrare de secvente audio sau video);
soft destinat retelelor de calculatoare (locale sau de arie largă) si soft dedicat accesului la informatii si facilitătilor de comunicare în Internet;
produse soft specializate pentru prelucrarea informatiilor din diverse domenii, de exemplu: proiectare inginerească (tip AutoCAD), rationamente matematice, prognoze geologice sau meteorologice, medicină, fizică, chimie, domenii de informatică (inteligentă artificială, calcul simbolic etc.), psihologie (testare psihologică asistată de calculator), sociologie, sau chiar domenii artistice (muzică, arte vizuale).
Produsele soft destinate biroticii sunt descrise în notiuni de birotică. Este de remarcat perfectionarea interfetei cu utilizatorul, care face ca aceste produse să fie extrem de usor de utilizat, inclusiv de către neprofesionisti. Cel mai concludent exemplu în acest sens îl constituie grupul de produse Microsoft Office 97 si utilitarele de gestiune a fisierelor, folderelor si resurselor din sistemele de Windows 95, Windows 98, Windows NT.
Sistemele de gestiune a bazelor de date (SGBD) sunt utilizate atât pentru aplicatii profesionale, cât si pentru aplicatii cu o complexitate mai redusă, context în care pot fi considerate ca făcând parte si din softul destinat biroticii. Cel mai utilizat SGBD este la ora actuală Microsoft Access, integrat in ansamblul Microsoft Office din sistemele Windows. Primele SGBD scrise pentru calculatoarele personale (de tip IBM PC) erau aplicatii pentru sistemul de operare DOS: dBase, FoxPro; ulterior, pentru ele au apărut versiuni compatibile cu sistemele Windows, după care s-au dezvoltat SGBD native pentru sistemele Windows, cum este Microsoft Access.
Mediile de programare sunt destinate programatorilor, pentru dezvoltarea de aplicatii profesionale. Ele au apărut la calculatoarele personale sub sistemul de operare DOS (Turbo Pascal, Borland C, Turbo Basic). Evident, fiecare mediu este destinat unui anumit limbaj si contine un compilator specific limbajului, la care se adaugă un link-editor (acestea sunt uzual integrate în aceeasi functie a meniului care creează un program executabil dintr-un fisier sursă), un editor de texte pentru scrierea programului (în limbajul de programare specific mediului), un depanator pentru corectarea erorilor de conceptie / functionare a programului si eventual un bibliotecar (a se vedea explicatiile de mai jos).
Mentionăm faptul că înainte de aparitia mediilor de programare, fiecare din aceste utilitare trebuiau lansate independent (cazul minicalculatoarelor), ceea ce complica considerabil activitatea de programare. După aparitia sistemelor Windows, mediile de programare s-au dezvoltat cu versiuni compatibile cu noile principii de utilizare a ferestrelor. Anii 90 au marcat de asemenea dezvoltarea filosofiei obiectuale în programare (programarea orientată pe obiecte[1]), cel mai cunoscut si utilizat limbaj obiectual fiind C++. O altă directie importantă manifestată în programare încă din anii 80 a fost programarea logică, apartinând inteligentei artificiale, caracterizată prim implementarea unor mecanisme deductive si reprezentată de limbajul Prolog (acest limbaj a fost ales pentru implementarea proiectului japonez al generatiei a V-a de calculatoare, vezi Un istoric al aparitiei calculatoarelor).
Odată cu perfectionarea interfetelor de tip Windows, formate din ferestre de dialog cu obiecte de control specifice, s-au dezvoltat limbajele si mediile de programare vizuale (Visual Basic, Visual C++), care permit crearea unor interfete cu utilizatorul accesibile, tipice pentru aplicatiile Windows. Asocierea de actiuni specifice obiectelor de control din diverse ferestre de dialog, care să se execute la aparitia unor evenimente de tipul actionării tastaturii sau mouse-ului, este cunoscută sub denumirea profesională de programare orientată pe evenimente.
Compilatoarele sunt programe care traduc un text sursă dintr-un limbaj de nivel înalt în limbaj masină, formând module obiect. În procesul de compilare se verifică corectitudinea lexicală si sintactică a programului (dacă există erori de sintaxă, acestea se semnaleză) si în cazul în care este corect, se construieste o formă care-l descrie din punctul de vedere al formei si continutului, formă care se va folosi pentru generarea codului obiect format din instructiuni masină. Astfel, fiecare compilator va fi specific unui anumit limbaj de programare. Aceste aspecte, definitorii pentru limbajele de programare, se studiază în teoria limbajelor formale.
Asambloarele sunt programe care traduc un text sursă dintr-un limbaj de asamblare în limbaj masină.
Link-editoarele (editoarele de legături) sunt programe care reunesc mai multe module obiect, eventual cu module obiect dintr-o bibliotecă de proceduri, alcătuind un program executabil. Prin operatia de editare de legături, entitătile referite în cadrul fiecărui modul (prin adrese relative la modul) vor putea fi referite în întregul prorgam (prin adrese absolute în program).
Interpretoarele sunt programe care traduc un text sursă instructiune cu instructiune în limbaj masină. De exemplu, calculatoarele personale familiale aveau implementat în memoria ROM un interpretor Basic. Azi, un număr considerabil de produse soft profesionale functionează într-o manieră interpretativă, în sensul că fiecare comandă a utilizatorului se evaluează imediat după introducere si se afisează rezultatul. În acest sens, exemplificăm mediile Lisp [2] (un limbaj al inteligentei artificiale) si sistemele de calcul simbolic [And97] (Mathematica, Maple etc.).
Depanatoarele sunt programe care asistă executia unui program, ajutând utilizatorul să găsească erorile de executie. În principal, depanatoarele permit executia pas cu pas a programelor (sau până într-un anumit punct) si posibilitatea vizualizării valorilor luate de variabile în timpul executiei. De aceea, pentru ca un program să fie depanat, este necesar ca în procesul de compilare să fie retinute anumite informatii suplimentare.
Editoarele de texte sunt programe care permit scrierea (editarea) pe calculator a unor texte. Cel mai mare avantaj al folosirii acestor programe constă în posibilitatea efectuării unor modificări asupra textelor introduse. Editoarele de texte functionează uzual în regim non-document, adică textul editat contine exclusiv caracterele introduse (programele în diverse limbaje trebuie scrise cu asemenea editoare, pentru a nu apărea elemente care să nu poată fi recunoscute la compilare). Editoarele care introduc facilităti de aranjare în pagină a textelor, introducere de simboluri speciale, grafice si tabele etc. se numesc editoare de documente si au fost mentionate în grupul de produse destinate biroticii.
Bibliotecarele sunt programe care permit utilizatorului să gestioneze biblioteci de programe si subprograme, efectuând operatii de de adăugare, stergere, corectare a programelor din bibliotecă, numite cărti. O bibliotecă de programe contine programe (module) înregistrate într-o structură care permite accesarea lor rapidă. Programele dintr-o bibliotecă rezolvă probleme care apar adesea în practică, astfel că pot fi folosite de programele unui utilizator, fără ca acesta să trebuiască să le mai rescrie.
Cea mai des utilizată modalitate de informare în Internet este aplicatia World Wide Web [Tan97], care permite accesarea unor resurse variate pe baza unor principii unitare de adresare (URL Uniform Resource Locator) cu ajutorul navigatoarelor sau browserelor, a căror interfată este foarte accesibilă. Acestea interpretează de fapt surse HTML (HyperText Markup Language), un limbaj care permite introducerea legăturilor (hipertexte) către resurse aflate pe diverse servere Web.
Comunicările interpersonale se pot realiza în Internet prin intermediul postei electronice (e-mail) [And98]; în acest scop există numeroare produse utilitare (pine sub UNIX sau Outlook Express, Eudora sub Windows) sau chiar prin dialog direct, on-line. În acest sens, se utilizează mecanisme de tip talk (comanda UNIX) sau chat (mIRC, ICQ).
[1] Acest nou concept de programare introduce integrarea datelor si algoritmilor specifici în asa-numitele clase de obiecte, între care pot exista relatii de mostenire reprezentate prin preluarea de către o clasă de obiecte a datelor si metodelor (algoritmilor) introduse de o altă clasă.
[2] Limbajul Lisp a introdus conceptul de programare functională, programele fiind alcătuite din liste formate din componente elementare sau noi liste, în care prelucrările se realizează prin aplicarea unei functii (aflate pe prima pozitie într-o listă) asupra argumentelor următoare. Cu toate că este un limbaj revolutionar în informatică, Lisp este totodată un limbaj venerabil: primele elemente de Lisp au apărut în deceniul 6.