fbpx

Python versus Java

Dacă v-a trecut prin gând cel puțin o dată să vă apucați de învățat programare, cel mai probabil printre primele sugestii legate de limbajul cu care să începeți s-au numărat Python și Java. Acest lucru este de așteptat, având în vedere că sunt la ora actuală printre cele mai cerute pe piața de muncă din România și chiar din lume, chiar dacă niciunul dintre ele nu mai este un limbaj ”nou”.

Dimpotrivă, putem spune că atât Java, limbaj în prezent dezvoltat și menținut de Oracle, cât și Python, dezvoltat în apropierea Crăciunului din 1991 de către Guido van Rossum, au ajuns la o maturitate ce le recomandă atât pentru începători cât și pentru proiecte sofisticate ce sunt gândite pentru o durată foarte lungă. Dezbaterea legată de care este limbaj este mai potrivit poate să fie foarte lungă și în același timp subiectivă raportată la proiectul pentru care vrem să dezvoltăm o aplicație.

 

Să începem cu bazele…

Dacă acum 20 de ani cele două erau destul de puternic individualizate, în prezent sunt destul de asemănătoare la bază. Acest lucru este un rezultat al evoluției și a încercărilor de a avea un limbaj ”bun la toate” – atât din perspectiva Oracle cât și a Python Community. Atât Python cât și Java au un suport cross-platform și biblioteci de bază ce suportă operații la nivel de interfețe grafice, programare în rețea, conectarea la baze de date etc.

Mergând mai departe de asta, ambele sunt interpretate și în momentul compilării generează un bytecode ce mai departe este folosit de o mașină virtuală pentru a rula codul. O diferență apare legată de compilare, întrucât Python trece prin acest pas abia la momentul execuției.

Atât Python cât și Java sunt limbaje orientate pe obiect, având la bază clasele, ce sunt folosite atât în structurile de date de bază cât și în momentul implementării dorite de noi. În Java pentru a putea avea o structură corectă a programelor, este necesară cel puțin o clasă definită de utilizator, în care să includem punctul de start al aplicațiilor. În Python, pe de altă parte, nu este necesar acest lucru, codul putând fi scris și executat direct din orice fișier dintr-un proiect.

Cine ne ajută dacă avem probleme?

Pentru ca orice limbaj de programare să devină utilizat la scară largă și popular printre software developers este necesar ca acesta să aibă o documentație bine scrisă și o comunitate de dezvoltatori pregătiți să răspundă la întrebări legate de probleme întâmpinate, respectiv să repare din defectele apărute.

Java are în spate susținerea celor de Oracle care deși sunt foarte profesioniști au reușit să sperie mulți dezvoltatori cu ciclul de noi lansări, programate la fiecare 6 luni. În urma acestei mișcări, OpenJDK-ul a devenit susținut de către giganți precum RedHad și Amazon – un lucru bun dar care pe termen lung poate să creeze diferențe de implementare între versiuni și incompatibilități.

La capătul celălalt se află Python Software Foundation, care a păstrat dezvoltarea limbajului în cadrul comunității open-source, rezolvând într-un mod profesionist probleme precum lansările noilor versiuni, compatibilitatea cu cele vechi, bug-urile identificate de programatori etc.

 

Diferențe mari când vine vorba de sintaxă

Python a fost constant lăudat datorită sintaxei sale simple, apropiată de limbajul natural, dar nici Java nu stă foarte rău la acest capitol. Limbajul deținut de Oracle poate fi considerat mai complex datorită obligativității de utilizare a anumitor structuri care pot deveni enervante când codul este foarte complex: acoladele, semicolon(;) etc.

Ca exemplu de bază, putem compara codul necesar afișării conținutului dintr-o listă de elemente:

 

JAVA

public class Main{

public static void main(String[] args){

String [] cuvinte = {“Telecom”, “Academy”, “va”, “invita”, “la”, “cursuri!”}

for(String cuv : cuvinte){

System.out.println(cuv);

}

}

}

 

PYTHON

 

cuvinte = [“Telecom”, “Academy”, “va”, “invita”, “la”, “cursuri!”]

for cuv in cuvinte:

print(cuv)

Această comparație ne arată o diferență legată de specificarea tipului de date – Java folosește static typing – însemnând că trebuie mereu specificat tipul de date folosit iar o variabilă declarată cu un tip de date nu poate stoca altceva. Python pe de altă parte este mai flexibil, folosind dynamic typing și permițând stocarea datelor fără a specifica tipul acestora și oferind posibilitatea schimbării tipului de date ori de câte ori ne dorim pe parcursul rulării unui program.

Flexibilitatea Python merge și mai departe de atât – tipul de date returnat de funcții nu trebuie specificat și nu există excepții ce trebuie tratate înainte de rulare.

Tot parte din sintaxă putem considera că face parte și whitespacing-ul specific Python. În cadrul acestui limbaj spațierea trebuie făcută într-un mod ordonat și nu putem avea codul dezordonat, rularea generând erori în caz contrar. La capătul opus, Java nu ține cont în vreun fel de ordonarea codului, cât timp sintaxa este respectată.

Ce dezvoltăm cu fiecare limbaj în parte?

 

După cum am menționat și anterior, ambele limbaje au evoluat și s-au maturizat, încercând să devină universale și să poată fi folosite în orice fel de aplicații. Asta nu înseamnă că vor fi la fel de eficiente din punct de vedere al folosirii resurselor sau la fel de ușor de învățat pentru oricine își propune o carieră în programare.

Java a fost de la bun început folosit la scară mare în mediul enterprise, păstrându-și avantajele în prezent datorită framework-urilor de web-development – cele mai populare fiind Spring și Struts. Deși nu mai sunt foarte căutate la momentul actual, aplicațiile desktop au fost în principiu dezvoltat cu diverse framework-uri de Java.

Aplicațiile Android pot fi în continuare dezvoltate cu ajutorul Java, chiar dacă există noi alternative iar acest lucru păstrează popularitatea limbajului și la nivel de dispozitive mobile.

Python a întâmpinat un val nou de dezvoltatori în urmă cu câțiva ani datorită bibliotecilor eficiente în zona de machine learning și procesare de date – Pandas, Dask, PyTorch, TensorFlow și multe altele. De atunci, zona de web-development a căpătat și ea popularitate, prin framework-uri precum Django și Flask care au fost integrate în serviciile livrate de site-uri populare precum Instagram, Pinterest, Reddit și multe altele.

Datorită simplității de dezvoltare a aplicațiilor și a numeroaselor biblioteci bine documentate, Python a devenit foarte popular și pentru home-automation, dând o ușurință în căpătarea experienței în proiecte chiar și celor care nu lucrează încă în programare.

În cele din urmă, testarea automată poate fi realizată atât cu Python cât și cu Java, atât la nivel de API-uri cât și la nivelul interfețelor grafice. Totuși, Python are un avantaj și la acest capitol tot datorită numărului de biblioteci ce pot să fie instalate și adaptate cu ușurință proiectelor dezvoltate.

 

În concluzie, ambele limbaje se prezintă cu avantaje și dezavantaje, fiind foarte important să analizăm contextul în care vrem să dezvoltăm sau învățăm, înainte de a face o alegere. Python are o sintaxă mai simplă și un număr mare de biblioteci ce ne vor ajuta să nu reinventăm roata când ne lovim de probleme, în timp ce Java este folosit la nivel de enterprise într-o măsură destul de mare – atât în proiecte vechi cât și în cele care se află la început.

Sponsori și parteneri