Sunday, February 17, 2019

Limbajul Python by Prof. dr. V. Iorga

Impresii despre limbajul de programare Python de Prof. univ. dr. Valeriu Iorga 

Timp de 40 de ani, la Facultatea de Automatică și Calculatoare – Universitatea Politehnica București (UPB) (foto: agerpres), am predat limbaje de programare (cursul “Programarea Calculatoarelor”) studenților din anul I, folosind ca limbaje de programare FORTRAN, Pascal și C/C++. Desigur că, în cursul acestor ani mi-am pus întrebarea: care ar fi cel mai potrivit limbaj pe care să-l învețe un începător? Mie mi-au plăcut limbajele Algol 60 și Pascal. Dar, iubirea cea mare am găsit-o în ultimul timp și se numește limbajul Python. Limbajul a fost conceput la începutul anilor ’90 de danezul Guido Van Rossum, care pe lângă informatician este și matematician.

Interesul pentru acest limbaj de programare mi-a fost trezit de laudele ce i-au fost adresate de un fost student. Am găsit pe Internet cărți potrivite (Rick Halterman – Fundamentals of Python Programming, Fabrizio Roman – Learning Python) și am pornit la treabă pentru a testa si a cunoaște cum se programează în acest limbaj.
Pentru a evita o lectură superficială, am instalat pe Laptop cea mai nouă versiune de Python și, după o primă lectură, am început să rezolv diferite probleme, pentru a face o comparație cu limbajul C++. Este o diferență enormă! În primul rând, m-a surprins simplitatea sintaxei. Ce deosebire față de barocul încărcat din C++ !

• Nu mai există nici un fel de declarație,
• recunoașterea tipului variabilelor fiind dedusă din contextul folosirii lor,
• au dispărut o serie de delimitatori: punct virgulă după instrucțiuni, în locul acoladelor, pentru a evidenția blocurile este suficientă indentarea, iteratorii au primit o semnificație mult mai largă – poți itera pe o listă sau pe un dicționar.

După ce am rezolvat câteva probleme cu întregi lungi am constatat că acestea nu mai aveau nici un sens, întrucât întregii pot fi oricât de mari (poți calcula instantaneu 2^100). A fost limitat sever efectul lateral de modificare a variabilelor globale în interiorul funcțiilor. Parametrii funcțiilor sunt exclusiv de intrare, iar o funcție poate calcula mai multe rezultate, pe care le întoarce printr-un tuplu. În corpul funcților pot apare funcții locale, structura programului nemaifiind liniară.

Tipurile de date s-au simplificat enorm. În afara tipurilor standard: întreg (de orice lungime), real (în precizie dublă) și șiruri de caractere există lista (eterogenă), mulțimea și dicționarul. Limbajul este multi paradigmă, putând fi folosit ca limbaj imperativ, orientat pe obiecte sau funcțional. În limbajul Python orice lucru (variabilă, funcție) este un obiect. La definirea unei clase constructorul este obligatoriu și are un nume unic. Se pot defini ierarhii de clase, folosind moștenirea simplă și multiplă. Proliferarea numelor a fost rezolvată prin spațiile de nume și domeniile lor, care sunt evidențiate în mod natural, fără declarații suplimentare. Căutarea unui nume se face spre exterior, pornind din domeniul local, trecînd apoi succesiv prin domeniile: înconjurător, global și predefinit.

Dezvoltarea unui program se face prin scripturi – fișiere de dimensiune mică, organizate în module și pachete. Pentru a fi folosit de programul client, un modul, sau numai unele funcții din el trebuie importate. Modulele sunt grupate în biblioteci.

Limbajul dispune de biblioteci impresionante (de exemplu biblioteca Django). Există un singur dezavantaj: limbajul, fiind un interpretor este mai lent decât un limbaj compilat, dar acest neajuns este estompat de interacțiunea mult mai strânsă cu utilizatorul, depanarea mult mai rapidă, portabilitatea ridicată.  Suportă sistemele de operare Linux, Windows și Mac, portarea unui program de pe un sistem pe altul fiind făcută cu ușurință.

Concluzie. Limbajul ajută efectiv la formarea unui stil de programare, încurajând eleganța și simplitatea. Se evaluează că un program scris în Python are 1/5 la 1/3 din dimensiunea programului corespondent în Java sau C++. Păcat că l-am descoperit așa de târziu!
Referințe.
1. Guido van Rossum, Wikipedia, https://en.wikipedia.org/wiki/Guido_van_Rossum
2. Python (programming language), https://en.wikipedia.org/wiki/Python_(programming_language)
3. The Python Software Foundation (US), https://docs.python.org/3/tutorial/


 
În imagine: Mugurel Andreica, student UPB (stg.), prof. univ. dr. Valeriu Iorga (ctr.), si Dan Ghinea (dr.), student UPB. Echipa studentilor de la Universitatea Politehnica din București (UPB) a câștigat medalia de bronz la Finalele Mondiale ale Concursului Internațional Universitar de Programare ACM, competiție organizată de IBM (foto Agerpres, https://foto.agerpres.ro/storage/watermark/128425.jpg)

Lista de cărți publicate de prof. dr. univ. Valeriu Iorga.


No comments: