Cunoștințe, prelegeri, idei generale despre limba java

1.1. Java și alte limbi de programare. Programarea sistemelor și aplicațiilor

Inițial, programarea computerizată a intrat în codurile mașinilor. Apoi au apărut limbile ASSEMBLER. care a înlocuit comenzile procesorului cu abrevieri mnemonice, mult mai convenabil pentru o persoană decât secvențe de zerouri și altele. Acestea sunt în general considerate limbi de programare de nivel scăzut (adică aproape de nivelul hardware), deoarece sunt orientate spre caracteristicile specifice ale procesoarelor specifice. De aceea programele scrise în limbile ASSEMBLER. Nu a putut fi transferat pe computere un alt tip de procesor - procesoarele aveau seturi de comenzi incompatibile. Adică, erau intolerabil la nivelul codului sursă.







Programele scrise în coduri de mașină, adică sub forma unei secvențe de zerouri și a celor care corespund instrucțiunilor procesorului și a datelor necesare pentru acestea, nu au nevoie să se transforme într-un fel. Ele pot fi copiate în locația dorită din memoria calculatorului și transferate la comanda primei comenzi de program (specificați punctul de intrare în program).

Programele scrise într-un limbaj de programare trebuie mai întâi traduse dintr-un formular (textual) în altul (binar, adică în codurile mașinilor). Procesul unei astfel de traduceri se numește traducere (din traducerea în engleză - "traducere", "mișcare"). Nu este necesar să traduceți un program dintr-o formă de text în coduri binare, este posibil să traduceți dintr-un limbaj de programare în altul. Sau de la codurile unui tip de procesor la coduri de alt tip.

Există două tipuri principale de traduceri - compilație și interpretare.

La compilație, setul inițial de instrucțiuni este transformat odată în forma executabilă (codurile mașinilor), iar mai târziu numai aceste coduri se utilizează atunci când programul este rulat.

La interpretare în timpul fiecărei convorbiri cu instrucțiunile necesare, de fiecare dată când instrucțiunile sunt traduse dintr-un formular (text sau binar) în altul - în codurile executabile ale procesorului calculatorului utilizat. Și numai atunci aceste coduri sunt executate. Firește, codurile interpretate sunt executate mai lent decât cele compilate, deoarece traducerea instrucțiunilor de la o formă la alta durează de obicei de câteva ori mai mult decât executarea instrucțiunilor primite. Dar interpretarea oferă mai multă flexibilitate decât compilația și, în unele cazuri, nu poate fi evitată.

În 1956, a existat un limbaj FORTRAN - primul limbaj de programare de nivel înalt (de exemplu, nu vizează o implementare hardware specifică a unui calculator). El a asigurat portabilitatea programelor la nivel de cod sursă, dar la un cost destul de ridicat. În primul rând, viteza programelor scrise în FORTRAN. a fost de câteva ori mai mică decât pentru asamblor. În al doilea rând, aceste programe au durat aproximativ două ori mai mult spațiu în memoria calculatorului ca asamblator. Și, în cele din urmă, a trebuit să abandoneze suport pentru caracteristicile dispozitivelor periferice - contactul cu „lumea exterioară“, a trebuit să se limiteze pur și simplu o oportunitate pe care programul pus în aplicare în mod egal pentru IO utilizând cititorul de card-pumn, tastatură, imprimantă, afișare de text, etc. Cu toate acestea, limbile de programare la nivel înalt au înlocuit treptat limbile ASSEMBLER. deoarece au oferit nu numai portabilitatea programelor, ci și fiabilitatea lor mult mai mare. și, de asemenea, viteza incomensurabil de mare de dezvoltare a software-ului complex. FORTRAN este în continuare cel mai important limbaj de programare pentru calculele științifice numerice de înaltă performanță.

Creșterea capacităților hardware ale computerelor (cantitatea de memorie, performanța, apariția stocării pe scară largă a discurilor), precum și apariția unei varietăți de periferice au condus la necesitatea de a examina modul în care ar trebui să funcționeze programele. Producția în masă a computerelor necesită unificarea accesului de la programe la diverse dispozitive. A existat o idee, că din program este posibil să se adreseze dispozitivului fără a lua în considerare caracteristicile implementării sale hardware. Acest lucru este posibil dacă accesul la dispozitiv nu este direct, ci prin programul atașat - driverul dispozitivului (în limba engleză, driverul înseamnă "driver"). Au existat sisteme de operare - seturi de drivere și programe care distribuie resurse informatice între diferite programe. În consecință, software-ul a început să fie împărțit în sistem și aplicație. Software-ul de sistem - acces direct la hardware, aplicație - rezolvarea oricăror sarcini ale aplicației și utilizarea capacităților hardware ale computerului nu direct, ci prin apeluri către programele sistemului de operare. Programele de aplicații au devenit aplicații ale sistemului de operare sau, pe scurt, aplicații. Acest termen înseamnă că programul poate funcționa numai în sistemul de operare. Dacă instalați un alt tip de sistem de operare pe același computer, aplicația - aplicarea primului sistem de operare nu va funcționa.







Cerințele pentru programele de aplicație sunt fundamental diferite de cerințele pentru programele de sistem. Software-ul de sistem necesită viteza maximă și numărul minim de resurse, precum și capacitatea de a accesa toate resursele hardware necesare. Din aplicație - funcționalitatea maximă într-o anumită zonă subiect. În același timp, performanța și resursele sunt irelevante atâta vreme cât nu afectează funcționalitatea. De exemplu, nu există absolut nicio diferență, programul răspunde la apăsarea unei taste de pe tastatură pentru o zecime sau o milionime de secundă. Este adevărat că, în stadiul inițial de creare a software-ului de aplicație, chiar aplicațiile destinate scopului programului au fost sistemice în implementare, deoarece au fost nevoite să acceseze direct echipamentul.

Limbajul C a fost creat în 1972 într-unul din grupurile de cercetare ale Bell Laboratories, în cursul dezvoltării sistemului de operare Unix. În primul rând, sa făcut o încercare de a scrie sistemul de operare la ASSEMBLER. dar după apariția noilor computere în grup, a trebuit să creăm un limbaj de programare la nivel înalt, independent de platformă, cu care să putem scrie sisteme de operare. Astfel, limbajul C a fost creat ca o limbă pentru crearea de software de sistem, așa că rămâne până acum. Ideologia și construcțiile sale sintactice sunt orientate spre apropierea maximă de nivelul hardware al realizării operațiunilor - în măsura în care acestea pot fi furnizate pe un nivel independent de hardware. În același timp, principala cerință a fost viteza maximă de lucru și numărul minim de resurse ocupate, precum și capacitatea de a accesa toate resursele hardware. Limba C este limba programării procedurale. deoarece construcțiile sale de bază sunt subrutine. În general, subrutinele sunt numite de obicei subrutine-proceduri (de aici numele de "programare procedurală") și subrutine-funcții. Dar în C există doar funcții de subrutine. De obicei, ele se numesc simple funcții.

Limba C a făcut o adevărată revoluție în dezvoltarea software-ului, a devenit larg răspândită și a devenit un standard industrial. Este încă folosit pentru scrierea sistemelor de operare și programarea microcontrolerelor. Dar foarte puțini oameni își dau seama pe deplin de motivele pentru popularitatea sa. Ce au fost ei? - Prin faptul că a fost în măsură să furnizeze funcționalitatea necesară a software-ului în condiții de performanță scăzută a calculatorului, resurse extrem de limitate și periferice nedezvoltate! În același timp, aceeași poveste a fost repetată ca și în cazul FORTRAN. dar acum pentru limbajul programării sistemului. Trecerea la o limbă de programare la nivel înalt, dar cu pierderi minime în productivitate și resurse, a dat mari avantaje.

mare influență asupra dezvoltării teoriei limbajului de programare dat PASCAL, dezvoltat în 1974 de către profesorul elvețian Niklaus Wirth. În această dezvoltare au existat două părți. Primul a fost în limbajul de programare PASCAL, conceput pentru a preda idei de programare structurală. Al doilea a fost ideea unei mașini virtuale. Niklaus Wirth a oferit pentru a oferi portabilitatea programelor scrise în PASCAL, ca urmare a le compila într-un set de comenzi un P-mașină abstractă (P- acronim PASCAL), mai degrabă decât codul executabil pentru o platformă hardware specifice. Și pe fiecare platformă hardware ar trebui să funcționeze programul. interpretarea acestor coduri. Se spune că un astfel de program emulează (adică imită) sistemul de comandă al unui procesor inexistent. Și programul în sine este numit o mașină virtuală.

Din cauza resurselor limitate și lipsa calculatoarelor în PASCAL înseamnă limbaj de programare de sistem care nu a putut concura cu limbajul C, din moment ce aproape toate de programare industrială până la mijlocul ultimului deceniu al secolului al XX-lea a fost de a pune în aplicare a sistemului. Ideile mașinii P au fost utilizate și îmbunătățite în mod semnificativ în Java.

Dezvoltarea teoriei și practicii programării a condus la formarea în 1967-1972 a unei noi direcții de programare a obiectelor. bazat pe conceptele de lucru cu clase și obiecte. Acesta a oferit oportunități fundamentale noi în comparație cu cele procedurale. S-au făcut încercări de a extinde diferite limbi prin introducerea în ele a unor construcții de programare a obiectelor. În 1982, Bjarne Stroustrup, printr-o astfel de extindere a limbajului C, a creat o limbă numită "C cu clase". În 1983, după următoarele îmbunătățiri, a creat primul C ++ compilator. Cele două plusuri înseamnă "C, cu un număr foarte mare de adăugiri". C ++ este un superset peste limbajul C - puteți scrie programe pe el ca "curat C", fără a utiliza constructe de programare obiect. În acest sens, precum și avantajele suplimentare ale programării obiectului, a câștigat rapid popularitatea și a devenit standardul industriei, de facto, apoi de jure. Deci, acum C ++ este limba de bază a programării sistemului. De mult timp a fost folosit pentru scrierea programelor de aplicații. Dar, după cum știm deja, cerințele pentru programele de aplicație coincid cu cerințele pentru sistem doar în cazul în care viteza calculatorului poate fi considerată ca fiind scăzută, iar resursele calculatorului - mici. În plus, C și C ++ au și alte două neajunsuri majore: a) fiabilitate scăzută atât la nivelul codului sursă cât și la nivelul codului executabil; b) lipsa portabilității la nivelul codului executabil. Odată cu apariția rețelelor de calculatoare, aceste deficiențe au devenit un factor foarte limitator de limitare, deoarece problemele de securitate atunci când lucrează în rețele locale și, în special, la nivel mondial, devin de primă importanță.

Java a devenit primul limbaj universal în formă de C de programare a aplicațiilor. care a asigurat ușurința de a trece la această limbă un număr mare de programatori familiarizați cu C și C ++. Și disponibilitatea mijloacelor de control de tip strict, de orientare pentru a lucra cu rețele de calculatoare, nivelul de toleranță de cod executabil și suport platformă GUI, precum și interzicerea accesului hardware directe asigură punerea în aplicare a majorității cerințelor pentru limbajul de programare a aplicațiilor. Cu cât viteza și cantitatea de memorie a computerului devin mai mari, cu atât este mai mare nevoia de a separa aplicațiile și software-ul de sistem. În consecință, pentru programele de aplicații, nevoia de a accesa direct memoria și alte dispozitive hardware ale computerului dispare. Prin urmare, printre aplicații, în fiecare an crește ponderea software-ului scris în Java și limbile străine. Net. Dar atât în ​​ceea ce privește numărul programatorilor, cât și numărul de dispozitive care utilizează platformele adecvate, Java conduce în prezent cu o marjă largă.







Trimiteți-le prietenilor: