ASM, C++ si JAVA
Limbaje de programare
Limbajul de asamblare
Limbajul C++
JAVA
Analiza comparata
Alegerea limbajului
Programe neomogene
Interfete
Evaluarea sistemelor de programe
ASM, C++ si JAVA
Limbaje de programare
Limbajele de programare au deja o istorie a lor.
Un limbaj de programare este definit prin:
- alfabet enumerand literele, cifrele si semnele speciale utilizate
- cuvinte cheie cu semnificatie atribuita
- operatori si prioritati
- reguli de construire identificatori, etichete
- reguli construire expresii
- structura instructiuni
- construire blocuri
- structura program principal, proceduri si functii
- definire tipuri de date fundamentale si derivate
- reguli transmitere parametri
- lucru cu fisiere
- implementare recursivitate in definire si in apel
- biblioteci de subprograme ale limbajului
- definire constante si variabile specifice
- restrictii de utilizare instructiuni, variabile, proceduri.
Limbajul trebuie asimilat corect si trebuie cautat sa se:
- utilizeze cat mai uniform instructiunile
- obtina constructii cat mai performante
- implementeze un stil de programare eficient
- prezinte solutii pentru tipuri de probleme astfel incat sa se invete din exemple
- arate ce nu este bine sa se construiasca
- invete de la altii prin cursuri cum trebuie scris un program, modul autodidact de insusire a unui limbaj se utilizeaza atunci cand exista deja o experienta in lucru cu mai multe limbaje. revenire

Limbajul de asamblare
Limbajul de asamblare este util sa fie cunoscut pentru ca:
- permite cunoasterea la sursa a mecanismelor intime ale utilizarii resurselor unui sistem de calcul
- da posibilitatea programatorilor sa-si formeze un mod clar de lucru
- permite implementarea de catre programatori a unor modalitati proprii de gestionare a resurselor, de referire operanzi si de definire, astfel incat sa se vada clar cum se lucreaza, ce avantaje aduc noile realizari.
Cand se prezinta un limbaj de asamblare trebuie sa se:
- clasifice instructiunile dupa diferite criterii
- prezinte structura interna a instructiunilor
- prezinte structura externa a instructiunilor
- detalieze pentru fiecare instructiune: numar operanzi, efecte, pozitionare indicatori, foarte multe exemple de utilizare
- stabileasca regulile de construire macrodefinitii
- defineasca tipuri de proceduri
- prezinte tipuri de transmitere parametri
- indice moduri de a creste performanta secventelor in raport cu numarul de cicluri masina
- arate moduri de definire operanzi si structuri de date precum si modalitati de initializare
- specifice reguli de agregare structuri de date si de secvente
- arate cum se definesc variabilele pointer si cum se lucreaza cu acest tip de variabile.
Se iau rand pe rand instructiunile si se arata cum se construiesc programele.
revenire

Limbajul C++
Daca programatorii mai cunosc alte limbaje de programare, invatarea limbajului C++ se face prin diferentiere.
In limbajul C++ in alfabet exista senzitivitatea literelor.
Literele mici si literele mari sunt generatoare de constructii diferite.
Identificatorii:
alfa
Alfa
ALFA
AlFa
alfA
sunt perceputi ca diferiti.
Simbolul underscore se utilizeaza la construirea identificatorilor, fara restrictii majore.
Astfel:
alfa_beta
alfabeta_
_alfabeta
_alfa_beta_
sunt constructii corecte.
Programatorul lucreaza cu limbajul C++ avand tot timpul asupra lui o documentatie clara a furnizorului de mediu de implementare, pentru a folosi corect resursele limbajului.
Exista o lista de cuvinte cheie ce contine:
............ se da lista de cuvinte cheie.
Exista un tabel cu operatorii si prioritatile lor.
.......... de da lista si tabelul
Limbajul permite un grad de compunere foarte mare a instructiunilor.
Secventa:
a=0;
b=0;
c=0;
d=0;
e=0;
f=0;
g=0;
se va scrie mult mai compact prin expresia de atribuire multipla:
a=b=c=d=e=g=0;
In limbajul C++ exista lucruri foarte exacte in ceea ce priveste evaluarea expresiilor si de aceea, programatorul trebuie sa procedeze la realizarea de constructii cat mai bune.
Secventa:
for(i=0;i i=0;
for(;i Limbajul C++ daca urmeaza invatarii limbajului de asamblare este un prilej de a arata ca are toate:
- tipurile de structuri de date
- mecanismele de referire a operanzilor
- operatiile de calcul, de comparare
- mecanismele de transmitere a parametrilor
- formele de definire macridefinitii
- structurile de proceduri.
In limbajul de asamblare exista instructiunea INC, in limbajul C++ exista operatorul ++.
In limbajul de asamblare exista decrementarea cu DEc, in C++ pentru decrementare exista operatorul --.
Programatorul trebuie sa inteleaga faptul ca limbajul C++ face diferentiere intre pre si post incrementare, pre si post decrementare, ceea ce in limbajul de asamblare se gestioneaza de cel care creaza secventa prin pozitionarea instructiunilor inainte sau dupa alte prelucrari.
Oricum, cel care stapaneste foarte bine limbajul C++ va scrie programe care au la baza o alta filosofie decat cea utilizata in alte limbaje.
NU TREBUIE sa se perceapa ca programul putea fi scris in orice alt limbaj numai pentru faptul ca programatorul nu exploateaza la maximum facilitatile limbajului C++.
revenire

JAVA
Invatarea limbajului JAVA devine mai usoara atunci cand programatorul stie limbajul C++.
revenire

Analiza comparata
Analiza comparata este necesara pentru:
- a vedea diferentele de la un limbaj la altul
- a stabili ce aduc nou ultimele limbaje de programare
- a permite invatarea rapida a instructiunilor
- a vedea ce lipseste unui nou limbaj fata de limbajul cunoscut
- a identifica tendinta de dezvoltare a limbajelor.
In acest sens se construiesc tabele.
In zona bibliotecilor de functii se va vedea ca de la limbaj la limbaj s-a produs o crestere a numarului de functii de prelucrare.
realizatorii de medii de programare sunt constienti ca numai inglobarea de elemente comune limbajelor deja existente, asigura penetrarea pe piata a noilor limbaje.
Nimeni nu va accepta sa lucreze cu o noua versiune de limbaj daca vechea versiune nu este inclusa in noua versiune FARA MODIFICARI.
Analiza comparata este necesara.
Sunt multe lucrari destinate acestui demers.
Demersul este dificil si designerii de limbaje de programare, desi au nevoie de el, evita sa-l faca, lasand aceasta activitate de sistematizare pentru alte timpuri...
revenire

Alegerea limbajului
In mod eronat, acum se vorbeste de alegerea limbajului de programare ca o modalitate de diferentiere a programatorilor.
Cel mai bun limbaj de programare este acela pe care programatorul il cunoaste cel mai bine si are cea mai mare experienta in a elabora programe.
Prin analiza comparata a limbajelor de programare se remarca cu precizie tendinta de a asimila in toate limbajele de programare cat mai multe tipuri de date, toate mecanismele de transmitere de parametri, interfete cu sisteme de gestiune baze de date, de a crea biblioteti grafice, de a permite accesul la intreruperi.
Rezulta clar ca important nu este limbajul de programare, ci tehnica de dezvoltare adoptata, tehnica pentru care exista instrumente orientate pe limbaj.
Se adopta tehnica si implicit limbajul.
revenire

Programe neomogene
Programele neomogene sunt acelea in care apar proceduri scrise in mai multe limbaje de programare.
In programele C++ si JAVA se includ proceduri ASM.
Este de preferat sa se lucreze cu programe cat mai omogene.
Daca exista deja proceduri scrise in PASCAL si trebuie incorporate in programe C++, in loc sa se consume resurse pentru a face translatarea din PASCAL in C++ se va adop[ta cu prudenta decizia includerii acestor proceduri PASCAL in programul C++.
Exista riscuri privind:
- unele neconcordante dintre modul de folosire a resurselor
- transmiterile de parametri
- referirea variabilelor pointer
- alocarilor de memorie pentru matrice.
Cunoasterea la un nivel foarte ridicat a celor doua limbaje, va elimina multe din aceste riscuri.
revenire

Interfete
Interfetele sunt scrise pentru fiecare limbaj de programare folosind resursele acestora.
Este important sa se accepte ideea de a face constructii cat mai generale pe care sa le utilizeze toate sistemele de programe.
Pentru autentificare se va scrie o componenta si oricine o va folosi.
Pentru introducerea de date se face o interfata care include si elemente de validare.
Daca se valideaza CNP - cod numeric personal, evident, procedura trebuie discutata in firma de software, perfectionata si acceptata de toti programatorii.
Nimeni nu va mai scrie partea de preluare de CNP, toti folosind ceea ce exista.
Interfetele trebuie sa faca obiectul unor discutii profunde in firma si mai ales trebuie cunoscute de catre toti programatorii.
Se va trece la elaborarea de noi interfete daca intr-adevar noile interfete revolutioneaza structurile de programe.
Altfel, NU.
revenire

Evaluarea sistemelor de programe
Evaluarea sistemelor de programe, in raport cu limbajul de programare evidentiaza:
- lungimea programului; daca prin comparatie cu programele din aceeasi clasa apar diferente foarte mari, programul rezultat are o problema...
- complexitatea programului analizata automat; diferentele prea mari fata de programe din aceeasi clasa arata ca programatorii au facut uneloe abuzuri
- gradul de reutilizare care nu trebuie sa fie in exces, fiind mult mai periculoasa nereutilizarea
- optimalitatea in a scrie secvente, in a alege algoritmi, in a oferi optiuni utilizatorilor
- corelatia dintre calitatea programului si costul de realizare.
revenire

revenire