BluePink BluePink
XHost
Gazduire site-uri web nelimitata ca spatiu si trafic lunar la doar 15 eur / an. Inregistrare domenii .ro .com .net .org .info .biz .com.ro .org.ro la preturi preferentiale. Pentru oferta detaliata accesati site-ul BluePink
Capitolul I

    Linux, platformă ideală pentru dezvoltare software

Dat fiind faptul că în cazul distribuţiilor Linux discutăm despre sisteme de operare şi softturi open source, nu putem evita o dezbatere legată de posibilităţile de programare oferite de Linux. Această lucrare doreşte să prezinte această latură forte a distribuţiei SUSE Linux 10.0 respectiv suportul extraordinar oferit programatorilor.

Utilizatorii obişnuiţi foarte rar au cunoştinţă despre modul în care acel computer pe care îşi desfăşoară zilnic activitatea, în ce mod a fost învăţat să execute tot ceea ce are de făcut. Chiar dacă ei ştiu că unealta pe care o folosesc la prelucrarea informaţiilor se numeşte sistem de calcul, adică ansamblul resurselor harware şi software şi poate chiar ştiu că activitatea desfăşurată pentru realizarea de softuri se numeşte inginerie software adică programare, prea puţini ştiu în ce constă şi cum se desfăşoară această activitate misterioasă în urma căruia unealta lor de muncă devine un instrument indispensabil pentru activitatea lor.

Acel demers în urma căruia calculatorul primeşte instrucţiuni pe care trebuie să le execute pentru a rezolva o problemă anume, în zilele noastre, a ajuns să fie denumită industria software, care produce programe de diferite tipuri. Utilizatorul obişnuit al unui sistem de calcul interacţionează în mod inevitabil cu următoarele două tipuri de programe:

    • software de bază sau programele de sistem – sunt programele care coordonează activitatea componentelor harware şi sprijină funcţionarea celorlalte tipuri de programe. Aceste programe reprezintă coduri executabile apropiate de maşina fizică valorificând la maxim potenţialul acesteia totodată sunt dependente de maşina pe care rulează fiind denumite sisteme de operare care administrează resursele calculatorului: procesorul, memoria internă, echipamentele periferice, etc. şi asigură interfaţa între utilizatori şi maşina fizică;
    • software de aplicaţii ( diferite programe şi aplicaţii) – sunt programe destinate rezolvării unor probleme specifice dintr-un domeniu de activitate (contabilitate, statistică, tehnoredactare, etc.) şi sunt realizate de către firme specializate în producerea de softuri sau de către departamentele de dezvoltare proprii ale firmelor/organizaţiilor beneficiare.

 Sistemele de operare Linux fiind şi ele la rândul lor produse soft open source, pot fi şi ele (sursa lor) la nevoie reprogramate, rescrise şi recompilate în limbajul C şi C++ prin intermediul unor instrumente de programare ca editoarele de texte: Emacs, Vi, mcedit, joe şi compilatoarele ca: G++ sau GCC amintindu-le doar pe cele mai cunoscute în universul UNIX/Linux. Astfel, având şi multiple posibilităţi de utilizare ca: server, sistem personal sau la birou, Linux devine o platformă ideală pentru dezvoltarea de programe.

În continuare vom prezenta pe scurt instrumentele de programare de bază adică editoarele şi compilatoarele, totodată vom aminti câte ceva despre posibilitatea compilării nucleului Linux.

Sus

    Editoare, compilatoare şi nucleul Linux

Editarea de texte, probabil, este una dintre cele mai străvechi utilizări ale unui sistem de operare. Există numeroase editoare, fie în mod grafic fie în mod text (consolă). Editoarele de text sunt cele mai răspândite sub Linux la fel ca şi fişierele text, acestea conţinând fie programe sursă în diferite limbaje de programare ca C/C++, Java, PHP, Perl, Bash etc, fie fişiere de configurare mai ales cele bazate pe directive de formatare ca HTML sau LaTex.

Printre cele mai simple editoare de texte sub Linux putem aminti: joe, vi, mcedit.

    Programul joe

Programul  joe este unul dintre cele mai simple editoare, simplitatea lui constând în posibilitatea utilizării a unor combinaţii de taste din vechiul Wordstar. În cadrul programului joe amintim combinaţiile de taste (comenzi) permise, ca:

  • Ctrl – Z salt la următorul cuvânt
  • Ctrl – X salt la cuvântul precedent
  • Ctrl – K F căutare în text
  • Ctrl – L continuarea căutării
  • Ctrl – K L salt la o anumită linie
  • Ctrl – K B marchează începutul blocului
  • Ctrl – K K marchează sfârşitul blocului
  • Ctrl – K M mută conţinutul blocului
  • Ctrl – K C face o copie a conţinutului blocului
  • Ctrl – K Y şterge conţinutul blocului
  • Ctrl – Y şterge linia curentă
  • Ctrl – K X paraseşte editorul salvând fişierul.

Mai există şi alte editoare înrudite cu joe ca jed, jpico şi jstar. Un alt editor similar este pico, acesta fiind folosit implicit de clientul de e-mail pine.

    Programul vi

Programul vi, regăsit în majoritatea sistemelor UNIX, este un editor de texte foarte utilizat de către programatori dar şi de utilizatorii începători. Aceasta are mai multe implementări (peste 20), prima versiune fiind dezvoltată în anul 1980 de către Universitatea Berkley, sub Linux fiind foarte răspândită versiunea mai recentă numită VIM (Vi Improved).

Pentru a avea acces la acesta trebuiesc instalate pachetele vim-common, vim-minimal şi eventual vim-enhaced. Ecranul lui vi conţine în partea de jos a ecranului o linie de comandă şi un buffer (zonă în care apare textul în curs de editare). Pe linia de comandă sunt afişate informaţii de stare şi pot fi introduse comenzi.

Editorul vi are trei moduri de lucru:

    • modul de inserare - este utilizat pentru scrierea textului
    • modul de comandăeste folosit pentru navigare, salvare, marcare de blocuri în cadrul textului
    • modul ex este utilizat pentru funcţii adiţionale ca şi căutarea unui şir de caractere în cadrul textului şi altele.

Şi în cadrul acestui editor amintim tastele, combinaţiile de taste importante:

    • j   o linie în jos
    • o linie în sus
    • h   un caracter la stânga
    • l   un caracter la dreapta
    • w   un cuvânt înainte
    • b   un cuvânt înapoi
    • 0   începutul liniei
    • $   sfârşitul liniei
    • G   începutul buffer-ului
    • x   şterge un caracter
    • d   şterge un obiect sau un bloc de text, desemnat cu ajutorul comenzilor de navigare
    • dw şterge următorul cuvânt
    • i     modul inserare
    • dd şterge linia
    • D   şterge textul din cursor şi sfîrşitul liniei
    • u     reface ultima modificare adusă textului
    • :wq salvează fişierul înainte de ieşire
    • :q   iese din vi doar dacă nu s-au făcut modificări şi nu au fost salvate
    • :q! iese din program chiar dacă modificările nu au fost salvate
    • :w salvează fişierul pe disc
    • :w fişier salvează buffer-ul în fişierul specificat.

Programul mcedit

Acest program face parte din cadrul managerului de fişiere mc. Apelarea lui se poate face prin lansarea comenzii mcedit sau prin cadrul utilitarulu Midnight Commander cu ajutorul tastei F4 sau a combinaţiei de taste Shift - F4.

Şi acest program este un editor simplu, oferind o serie de comenzi de bază, util fiind mecanismul de syntax highlighting, adică diferite scheme de colorare a instucţiunilor, parantezelor etc, în funcţie de tipul fişierului care se editează. Este important de amintit că acest editor are posibilitatea de a defini macrouri şi de a emula comenzile Emacs.

În cadrul acestui editor amintim următoarele comenzi principale:

    • Ctrl – săgeţi stânga/dreapta salt la cuvântul precedent/următor
    • Shift – săgeţi selectează un bloc
    • Ctrl – Insert copiază blocul selectat în buffer (clipboard)
    • Shift – Insert insereză conţinutul din buffer
    • Meta – L salt la o anumită linie. Pentru tasta Meta se va consulta paragraful despre Emacs
    • F1 apelează pagina de ajutor
    • F2 salvează conţinutul fişierului
    • F3 marchează începutul, sfârşitul unui bloc
    • F4 caută şi înlocuieşte un şir de caractere
    • F5 copiază conţinutul blocului
    • F6 mută conţinutul blocului
    • F7 caută un şir de caractere
    • F8 şterge conţinutul blocului
    • F9 apeleză meniul mcedit
    • F10 iese din editor.

Editorul Emacs

Un alt editor - de această dată  un editor de texte extensibil - este Emacs-ul sau după cum mai este denumit GNU Emacs. Creat de către Richard Stallman Emacs este un editor puternic si flexibil dar nu numai, acesta putând şi compila programe adică se poate folosi în acelaşi timp şi ca mediu integrat de dezvoltare de programe, oferind în acelaşi timp şi multe alte facilitaţi (e-mail, browser web, etc). Extensiile Emacs sunt scrise în LISP. Trebuie să amintim că există o versiune frecvent folosită de Emacs şi anume versiunea xemacs, realizat special pentru mediul X – Windows, şi una pentru terminal. Emacs este un program complex, de dimensiuni mari.

Ecranul lui Emacs este alcătuit din mai multe ferestre de lucru denumite buffere. Este posibil ca unele buffere să nu fie vizibile, unul dintre ele fiind considerat curent, cu care lucrează utilizatorul. Emacs poate lucra cu mai multe fişiere deschise simultan, desigur fiecare aflându-se într-un buffer diferit. Buffer-ele sunt afişate într-o fereastră. Mai există pe ecranul Emacs şi aşa numitul mini-buffer, care practic este o zonă în care Emacs raportează rezultatele comenzilor, combinaţiile de taste apăsate parţial etc.

Emacs are o mare varietate de comenzi care pot fi adaptate preferinţelor utilizatorului. Pentru o introducere (în limba română) a celor mai utilizate comenzi, se apeleză din meniu Help -> Tutorials -> Romanian. O listă concisă cu comenzile cele mai simple se găsesc aici.

În continuare să vedem câteva combinaţii de taste des folosite în Emacs. Aici trebuie să amintim două taste speciale şi anume Control (C) care corespunde tastei Ctrl de pe orice tastatură şi tasta Meta (M) care corespunde tastei Alt de pe orice tastatură. Codul generat de tasta M împreună cu altă tastă se poate obţine prin apăsarea tastei Escape (Esc), apoi a tastei respective. Din acest motiv Esc se mai numeşte şi metafy. Orice comandă are un nume simbolic, şi poate fi apelată prin aceasta. Unele comenzi nu au o combinaţie de taste ataşată. Pentru apelarea unei asemenea comenzi se tastează M – x nume_comandă. Poate fi utilizată şi tasta Tab pentru a completa acest nume, numele complet fiind afişată în mini – buffer. O altă comandă des folosită este C – x, care este o comandă prefix, adică întotdeauna este urmată de o altă combinaţie de taste. Majoritatea comenzilor care încep cu C – se referă la unităţi de text (litere, rânduri). Toate comenzile care încep cu M – se referă la unităţi de limbă (cuvinte, fraze). Toate comenzie pot fi regăsite în tutorial.

Sus

Compilatoare

Compilatorul este acel program care transformă codul sursă în cod sau fişier obiect. Acestea sunt specifice fiecărui limbaj de programare de nivel înalt. Activitatea de compilare sau compilarea propriu-zisă a unui program sursă decurge în mai multe faze, unde fiecare fază corespunde unei funcţii logice asigurate de programul translator, şi care asigură următoarele operaţii:

analiza lexicalăcare se realizează la nivelul fiecărei linii de program, şi care constă în eliminarea caracterelor nesemnificative ca spaţiile, comentariile etc.; identificarea unitaţilor logice ale limbajelor de programare, idendificatorilor, cuvintelor rezervate, constantelor, etc. şi înscrierea lor în structuri tabelare numite tabele de simboluri;

analiza sintacticăcare realizează identificarea, în programul sursă, a construcţiilor sintactice de bază, adică instrucţiuni, expresii, liste, etc. Acestă analiză mai şi interpretează conţinutul acestor construcţii, prin generarea unor structuri proprii de descriere a fiecăreia, prin intermediul unei structuri arborescente, numită arbore de derivare;

analiza semantică – aceasta are ca obiectiv interpretarea fiecărei construcţii sintactice identificate. Folosind tabela de simboluri şi pe baza arborelui de derivare, se generează seturile de instrucţiuni elementare care corespund fiecărei construcţii sintactice identificate. Aceste instrucţiuni elementare sunt într-un format de trecere formulate către codul maşină numit cod intermediar. Optimizarea codului intermediar se face prin înlăturarea variabilelor neutilizate, a instrucţiunilor redundante, etc.;

alocarea memoriei – se realizează prin utilizarea tabelei de simboluri şi asociind astfel la fiecare o locaţie de memorie calculată relativ la adresa de început a programului şi denumită adresă relocabilă;

o altă fază este optimizarea dependentă de calculator a codului intermediar – aceasta realizându-se prin alocarea regiştrilor de lucru a procesorului şi generarea codului obiect. Ambele faze sunt dependente de calculator;

în toate etapele are loc detectarea şi înregistrarea erorilor de utilizare a limbajului de programare, numite erori de compilare.

Componentele programului compilator care definesc faze ce nu depind de calculator reprezintă componenta portabilă a acestuia. Portabilitatea este proprietatea unei componente software de a funcţiona, independent de platforma de calcul folosită (sistemul de calcul, sistemul de operare, etc.). Portabilitatea unui program compilator determină independenţa programelor care folosesc limbajul de programare respectiv, faţă de sistemul de calcul.

Prin urmare, compilatoarele sunt, în mare măsură, programe independente de sistemul de calcul şi, prin implementarea lor pe diverse platforme, permit definirea de programe portabile.

Sub sistemele de operare UNIX/Linux, compilatoarele cele mai des folosite sunt cele pentru limbajele de programare C/C++ şi anume compilatorul GCC şi G++. Dintre acestea cel mai des utilizat este GCC.

Compilatoarele limbajelor C/C++  trec prin trei faze de compilare, şi anume:

Preprocesarea – aceasta primeşte un text şi generează tot un text. Analizând macrourile şi expandându-le primim ca rezultat a preprocesării tot un program-sursă C/C++ care nu mai include directive preprocesor, ci rezultatul propriu-zis;

Compilarea propriu-zisă – unde ca rezultat vom primi un fişier-obiect care reprezintă amestecul de cod maşină şi alte informaţii necesare în faza de editare de legături sau link-editare. Fişierul-obiect conţine o listă de simboluri declarate dar nedefinite precum şi locurile de utilizare ale acestora, o listă a simbolurilor exportate de către modul, informaţii de relocare cît şi informaţii necesare pentru depanarea programului rezultat. Compilarea propriu-zisă cu ajutorul compilatorului GCC poate fi apelată cu comanda gcc –c main.c. Rezultatul compilării va fi un fişier-obiect cu numele main.o;

Editarea de legături aceasta se face cu ajutorul programului ld şi nu trebie apelat separat. Aici lista fişierelor-obiect este foarte mare deoarece poate include biblioteci numeroase adică o colecţie de module-obiect deja compilate strânse la un loc într-un fişier-archivă.

 După cum am amintit unul dintre cele mai răspândite compilatoare sub UNIX respectiv Linux este GCC. Despre aceasta vom vorbi în schimb mai mult în capitolul 3.

Sus

    Nucleul Linux

Nucleul Linux sau kernel-ul reprezintă nucleul sistemului de operare GNU/Linux, fiind unul dintre cele mai cunoscute exemple de software liber şi dezvoltare de soft liber sau open source. Termenul Linux se referă la nucleul Linux dar se foloseşte pentru descrierea întregului sistem de operare. Nucleul, deşi a fost dezvoltat iniţial pentru microprocesorul de tip Intel 386, la ora actuală a ajuns să suporte o mare gamă de arhitecturi şi microprocesoare, care sunt folosite pentru supercomputere, PC-uri sau la sisteme încapsulate ca telefoane mobile sau video recordere. Nucleul Linux este scris aproape în întregime în limbajul de programare C, împreună cu nişte extensii GNU C şi cu câteva linii de cod scrise în limbajul de asamblare. Distribuţiile de software bazate pe nucleul Linux se numesc distribuţii Gnu/Linux.

Nucleul ca atare este aplicaţia de sistem de nivel scăzut (low-level) care crează nivelul de abstractizare al componentelor hardware, controlează accesul la componenta hdd (harddisk) şi la sistemul de fişiere, permite accesul distribuit la reţea, modul de lucru multitasking şi constrângerile de securitate informatică. În schimb trebuie să înţelegem că nucleul Linux nu este un sistem de operare complet, cum spun sau cum cunosc mulţi oameni. Dar să facem un foarte scurt istoric despre apariţia nucleului Linux şi dezvoltarea lui prin apariţia a mai multor versiuni.

Aşadar, concepţia de a face un sistem de operare simplu îi aparţine lui Linus Torvalds, şi datează din anul 1991, an în care trimite un mesaj grupului de ştiri comp.os.minix, în care declară că scrie un sistem de operare simplu (gratis), fiind un hobby de al lui. Mai declară printre altele că este scris în C dar unele fişiere sunt scrise în limbaj de asamblare. Tot în acelaşi an lansează prima versiune de nucleu Linux şi anume versiunea 0.01 care conţine 10.239 linii de cod. După mai multe versiuni, printre care reuşeşte să lanseze şi prima versiune de self-hosted adică putându-se compila Linux sub Linux, şi în 1992 să poată rula un X-Windows System, reuşeşte să ajungă la o versiune care deja conţine peste 5.900.000 linii de cod, versiune care este desigur mult mai stabilă şi mai complexă. În prezent nucleul Linux (sau kernel-ul) este în contiună dezvoltare. Fiind open source este pus la dispoziţia programatorilor să poată efectua modificări la liberă alegere cu condiţia ca modificările să fie puse la rândul lor pe internet, liber.

În concluzie, din cele amintite mai sus reiese încă odată de ce Linux este o platformă ideală pentru dezvoltare software

Sus

 

[Index] [Partea I-a] [Partea II-a] [Capitolul I] [Capitolul II] [Capitolul III] [Capitolul IV] [Bibliografie]