Inapoi la toate articolele

C++ versus Java

O dilemă frecventă a celor care decid să se apuce de învăţat programare este şi cea legată de limbajul cu cele mai mai multe avantaje, din marea deja existentă.  Fiecare limbaj de programare vine cu particularităţile sale: instrumente şi tehnici specifice folosite la dezvoltarea de aplicaţii. Adesea, toate softurile de care ai nevoie pentru a crea un program sunt disponibile gratuit online.

Cele mai frecvent utilizate limbaje de programare în acest moment la nivel mondial sunt C++ şi Java. Duelul dintre cele două are deja o istorie consistentă, iar ambele au avantajul că pot fi deprinse uşor doar folosind tutoriale disponibile pe Internet.

original-shutterstock_184721531.jpg20160510-17161-6v5zn1

Java sau C++ - aceasta e întrebarea?...

Majoritatea începătorilor care îşi doresc cu multă seriozitate să pătrundă tainele programării se îndreaptă spre Java. Acest limbaj de programare a câştigat un teren enorm în faţa veteranului C++ şi este cel mai utilizat instrument pentru crearea de aplicaţii virtuale de la jocuri la diverse softuri de securizare pentru desktop.

Iar Java chiar vine cu unele avantaje

  • În primul rând, are avantajul de a fi uşor de învăţat chiar şi pentru neiniţiaţii în tainele profunde ale matematicii. Cere totuşi un bagaj suplimentar de răbdare, însă pentru cineva cu adevărat hotărât, acesta nu este un impediment
  • Folosind Java poţi crea aplicaţii care vor rula în condiţii optime pe diferite sisteme de operare
  • Fără doar şi poate, Java este cel mai popular limbaj de programare din lume
  • Sistemul Android are o relaţie cel puţin specială cu limbajul Java, folosit aproape 100% pentru aplicaţiile cu care este compatibil

Destul am lăudat Java fără să fi vorbit şi de C++. Unii pot alege să înveţe să programeze folosind acest instrument complex, care nu s-a demodat în proporţii prea mari. C++ are încă avantajul de a fi rapid şi ceva mai puternic decât principalul său adversar, Java. Competiţia este totuşi una strânsă. Unii programatori experimentaţi aseamănă crearea unui site cu C++ cu spartul unei nuci folosind cu ciocan sofisticat. În continuare, C++ se adresează mai de grabă utilizatorilor experimentaţi, cu o nevoie mai mare de eficienţă, viteză şi putere.

Dar să vedem şi câteva dintre avantajele lui C++

  • Este rapid şi eficient
  • Poate crea programe compilate, ca executabilele pentru Windows
  • Foloseşte la maximum resursele unui computer, însă nu în sensul suprasolicitării acestuia, ci în sensul de a-i exploata capacităţile tehnice pentru care a fost conceput
  • C++ rămâne un „copil de suflet” al programatorilor care dezvoltă de exemplu jocuri de înaltă calitate sau sisteme de operare

Există programatori care sunt de părere că ideal ar fi să înveţi mai întâi C++, pentru ca mai apoi să pătrunzi în cel mai simplu mod cu putinţă şi tainele ceva mai tinerelului Java. Dar să vedem câteva dintre diferenţele dintre cele două limbaje de programare.

Diferenţele între C++ şi Java

C++ Java
C++ nu este un limbaj 100% orientat obiect, astfel că poţi scrie un cod fără să foloseşti o clasă sau un obiect. Java este prin definiţie un limbaj de programare orientat obiect. De aceea nu poţi scrie un program în Java fără să foloseşti cel puţin o clasă.
C++ dispune de indicatori aritmetici (pointers). Java nu permite crearea şi utilizarea de indicatori aritmetici (pointers).
Alocarea şi delocare memoriei este responsabilitatea programatorului. De alocarea şi delocarea memoriei se ocupă JVM (Java Virtual Machine).
C++ are instrucţiunea goto. Java nu dispune de instrucţiunea goto.
C++ dispune de casting automat. În anumite cazuri castingul implicit este disponibil şi este indicat pentru programatori să utilizeze castingul oriunde se poate.
C++ permite succesiuni multiple de caractere. Java nu permite succesiunile multiple, însă dispune de alte modalităţi pentru a face acest lucru posibil dacă este necesar.
C++ permite funcţia de supraîncărcare a operatorilor. Java nu dispune de aşa ceva.
Fişierele tip #define, typedef şi header sunt disponibile la C++. #define, typedef şi header nu sunt disponibile pentru Java, însă există metode prin care pot fi obţinute.
C++ are trei specificatori de acces: privat, public şi protejat. Java are patru specificatori de acces: public, privat, protejat şi implicit (default).
C++ dispune de constructori şi de destructori. Java are numai constructori. Destructorii nu sunt prevăzuţi în acest tip de limbaj.

  Avantajele limbajului Java faţă de C++

  1. Garbage collection – Iată un item pentru care Java este recunoscut. Garbage Collection (GC) este o formă automată de gestionare a memoriei. Garbage collectorul are tendinţa de a aduna surplusuri sau memorie ocupată de obiecte ce nu mai sunt necesare programului. Acest lucru contribuie la eliminarea grijii de alocare manuală a memoriei. Funcţia Garbage collection contribuie la diminuarea apariţiei erorilor de programare (bugs) şi îmbunătăţeşte timpul de execuţie.  Asta în timp ce pentru C++ o porţiune semnificativă a codului este dedicată managementului memoriei.
  2. Procesul de construcţie – În comparaţie cu Java, construcţiile în C++ sunt mai complicate şi se mişcă mai lent. Programatorii spun că un produs integral elaborat  folosind C++ poate fi realizat şi în 20 de ore, în timp ce acelaşi produs construit cu Java poate fi gata şi în mai puţin de 10 minute. Pentru corectarea erorilor, programatorii care lucrează în C++ au nevoie de o a doua construcţie, în timp ce Java dispune de unele de construcţie mai accesibile.
  3. Siguranţa - Java elimină indicatorii, lucru care permite acces liber la memorie şi abilitatea de a rezolva erorile prin core dump. La Java nu vedem efectul de buffer overrun, iar codul şi datele nu se pot amesteca accidental. Java include şi o metodă de verificare a variabilelor care trebuie să rămână în anumite limite înainte de a fi folosite.
  4. Performanţa – Cu toate că performanţa nu este considerată în mod normal un atuu al limbajului Java faţă de C++, funcţia garbage collection poate eficientiza semnificativ gestionarea memoriei, lucru care devine notabil în termeni de performanţă. Java are şi avantajul multithreadingului, caracteristică pe care nu o găsim şi la C++. De asemenea, Java dispune şi de JVM,mecanism care ajută performanţa.
  5. Reflecţia – Se referă la capacitatea unui limbaj de programare, Java în cazul nostru, de a analiza dinamic şi de a modifica structura şi modul de comportare (variabilele, metadate, proprietăţile şi funcţiile) al unui obiect în timp ce acesta rulează. C++ nu beneficiază de mecanismul de reflecţie.
  6. Portabilitatea – Motto-ul Java: „Write once, run anywhere” cam spune totul. Limbajul Java este portabil cu minimum de efort. Asta în timp ce C++ este portabil doar teoretic. Practic, C++ are nevoie de un alt limbaj pe deasupra.

java jademy

Timpul alocat învăţării. C++ versus Java

Acest criteriu este un pic dificil de analizat, în contextul în care învăţarea uşoară sau grea depinde foarte mult de individ. Există numeroase variabile de care trebuie ţinută seama odată ce ai început să înveţi programare. Java este un limbaj ce poate fi deprins la parametri optimi în numai trei sau patru luni de studiu intensiv. Există şi persoane care au reuşit să înveţe Java în doar câteva săptămâni, însă aproape orice instructor va fi de părere că şase luni este un termen rezonabil în care orice pasionat de IT poate deprinde de la zero majoritatea secretelor de care are nevoie pentru a crea aplicaţii, jocuri etc.

Învăţarea cere în primul rând răbdare şi dedicarea unui timp special în fiecare zi. Acest lucru poate părea descurajator pentru aspiranţii care au joburi solicitante sau familii cărora trebuie să le dedice orele libere. Avantajele de a învăţa un limbaj de programare se extind totuşi mult dincolo de incovenientele de moment şi pot deschide oportunităţi de carieră nebănuite. Mai departe faceţi voi calculul...

Indiscutabil, însă, nu poţi învăţa programare doar uitându-te la tutoriale video. Este nevoie şi de multă practică. Doar utilizând tu însuţi codurile vei observa şi vei înţelege adevăratul mers al lucrurilor. Odată ce ai început să înveţi programare trebuie să fii dispus „să te murdăreşti pe mâini”, cum ar spune americanii. Gândirea logică va fi principalul tău aliat când vei încerca să creezi la început programe şi aplicaţii simple.

Indiferent că ai ales Java sau C++, la început totul va avea la bază principiul trial and error. Cel mai probabil ideile nu ţi se vor materializa perfect din prima încercare, însă perseverenţa şi experienţele din greşeli se pot dovedi nişte profesori eficienţi. Este recomandabil să nu te apuci să înveţi programare dacă nu eşti dispus să depui efort de concentrare sau dacă nu este neapărat o activitate pe care s-o faci cu plăcere. Dacă te gândeşti la bani... un imbold puternic poate fi faptul că joburile de web şi app developer sunt remunerate chiar generos.