Anul 2015. Primul an de facultate. Toate calculatoarele din laboratorul de programare aveau instalate doar C, C++, eventual și Java, tipic pentru a învăța să programezi atât imperativ cât și orientat înspre atingerea obiectivelor.
Trei ani mai târziu, una dintre întrebările frecvent adresate la primele interviuri era "Știi Python?". Iar răspunsul era : "Nu, dar pot să învăț".
Așa s-a făcut ca, la o lună după angajare, să încep dezvoltarea primei aplicații în Python.
La o simplă căutare pe Google, putem vedea de ce se spune că limbajul Python este unul dintre cele mai populare și utilizate tehnologii în prezent. Indecși precum Tiobe.com sau PYPL (PopularitY of Programming Language) clasează Python ca fiind în vârful clasamentului.
Pentru a putea explica această situație, cred că ar trebui să analizăm puțin ultimi 4-5 ani, mai exact anul 2018 atunci când a început un boom privind gradul de utilizare. De ce atunci? Cred că acest lucru se datorează mai multor factori care, de fapt, reprezintă și avantajele utilizării acestei tehnologii :
Simplitatea de a scrie cod, respectiv timpul necesar redus;
O multitudine de librării și frameworkuri alături de o mare comunitate de programatori;
Creșterea popularității inteligenței artificiale din ultimii ani;
Numărul tot mai mare de dispozitive IOT care pot fi programate în Python;
La un moment dat, Bill Gates spunea și citez: "I choose a lazy person to do a hard job. Because a lazy person will find an easy way to do it.". Simplitatea limbajului Python poate fi descrisă prin acest citat, anume că este un limbaj "leneș" dar care își face bine treaba. De asemenea, pe lângă faptul că printr-un un fișier.py ne atingem obiectivul dorit, această tehnologie ne ajută să economisim timpul propriu-zis de dezvoltare a codului. Bineînțeles că există și un compromis. Împătimiții altor limbaje de programare pot afirma, pe bună dreptate, că timpul de execuție al limbajelor precum C, Java, Rust sau C# este mult mai mic față de subiectul articolului. Spre exemplu, dacă avem o matrice 2048 x 2048 și facem operații de înmulțire pe acea matrice, am obține următorii timpi: Java - 84s, C - 198s, Python - 2821s. Viteza mai mică în comparație cu celelalte două limbaje este cauzată de lipsa de paralelism și de statutul acestuia de a fi un limbaj interpretat și nu compilat. În momentul de față, implementarea threadurilor în Python permite rularea acestora doar într-un mod concurent nu și paralel.
Cu toate acestea, viteza de execuție a codului nu a dus la o scădere a popularității. O dată cu dezvoltarea tehnologiei au apărut o multitudine de librării, respectiv pachete noi, menite să ajute și mai mult procesul de dezvoltare din punctul de vedere al timpului. Spre exemplu, unele dintre cele mai cunoscute frameworkuri pentru dezvoltarea aplicațiilor web sunt Django și Flask. Dacă Flask este menit pentru a dezvolta aplicații web de mici dimensiuni, Django, pe de altă parte, permite crearea și dezvoltarea unor aplicații web complexe, având deja integrate anumite funcționalități foarte utile precum Django Admin sau Django ORM. Ca o mică paranteză, Django este frameworkul în care am dezvoltat prima mea aplicație web: o aplicație cu rolul de a administra anunțurile publicitare și promoțiile unei companii. Referitor la acea aplicație, într-un proiect Django poți să dezvolți alături de Backend și partea de Frontend, fapt care a facilitat familiarizarea mai rapidă cu protocolul HTTP, respectiv cu standardele REST.
În altă ordine de idei, Python mi-a demonstrat că este un limbaj care poate fi ușor integrat și în proiecte al căror stack tehnologic principal diferă. Un astfel de exemplu este și proiectul la care lucrez, unde clientul este unul dintre cei mai mari retaileri de electronice din Europa. Aici, majoritatea microserviciilor este dezvoltată în Java cu Spring Boot. Acestea sunt interconectate între ele fie prin topice de Apache Kafka, fie prin requesturi de tip REST. În acest context, Python a fost folosit în mai multe scopuri: pentru testare, automatizare, diverse mecanisme de alertă respectiv de analiză a datelor etc. Testările microserviciilor au presupus validări atât din punct de vedere al stabilității acestora, anume simple requesturi, dar și din punct de vedere al corectitudinii datelor, mai exact compararea datelor primite în răspuns cu cele aflate în baza de date sursă. Un exemplu de procesare de date automatizată prin Python a constat în consumarea unor fișiere de pe un server de tip sftp, respectiv inserarea datelor acestor fișiere într-o bază de date. Desigur, când discutăm despre automatizare, în acest caz o combinație reușită pentru a atinge acest obiectiv într-un mod cât mai ușor este reprezentată de Jenkins combinat cu Python. Joburile de Jenkins care rulează fișiere py în background reprezintă în multe situații o alegere eficientă. Datorită faptului că există o mulțime de librării disponibile pe internet, am putut să implementăm diverse mecanisme de alertă fie prin intermediul e-mail-urilor fie prin diverse tooluri chat. Pentru analiza unor volume mari de date și validarea integrității acestora, s-a decis utilizarea librăriei Pandas cu ajutorul căreia ai posibilitatea să manipulezi foarte ușor seturi de date.
Un alt factor important căruia se datorează creșterea popularității Pythonului în prezent este, așa cum probabil vă așteptați, domeniul inteligenței artificiale. Multe librării sau frameworkuri faimoase sunt dezvoltate în acest limbaj. De ce în Python, dacă așa cum s-a menționat anterior nu este un limbaj atât de rapid? Până la urmă, un algoritm de inteligență artificială presupune un număr ridicat de operații complexe, cel mai adesea precedat de prelucrarea unui set mare de date. Atunci de ce Python? În opinia mea, principalul motiv constă în faptul că algoritmii de inteligență artificială, fie că ne raportăm la machine learning sau alte ramuri ale A.I.-ului, sunt implementați mai ușor într-o structură asemănătoare pseudocodului. Acest lucru permite o lizibilitate crescută a codului care, subliniez, facilitează procesul de dezvoltare a algoritmilor de inteligență artificială. În acest sens, cele mai cunoscute frameworkuri precum TensorFlow, Keras, ScikitLearn, Pandas, Numpy au fost dezvoltate în Python.
Un alt domeniu unde această tehnologie începe să fie din ce în ce mai folosită este cel al start-upurilor. O parte din motivele care stau la baza deciziei de a alege Python drept tehnologia potrivită pentru un start-up au fost menționate deja în paragrafele anterioare. Pe lângă acestea, am putea să reamintim faptul că limbajul de programare este unul open source și nu costă nimic să îl instalezi, tot ce ai nevoie fiind doar de o conexiune la internet pentru a putea descărca installerul de pe site-ul oficial, ba chiar majoritatea distribuțiilor de Linux vine cu Python gata instalat. Indiferent de domeniu de business al start-upului, această tehnologie permite flexibilitatea de a implementa aplicații cât mai diverse. Un astfel de exemplu este reprezentat de plăcuțele Raspberry Pi. Aceste plăcuțe pot fi programate în Python și cu ajutorul lor se pot implementa lucruri foarte faine, ca de exemplu: voice assistance, home security, face detection, weather tracker.
Rămâne, însă o întrebare pe care am adresat- o colegilor la una dintre dezbaterile tehnice organizate de către companie, și anume: "Este Python un limbaj potrivit pentru cineva care își dorește să învețe să programeze?". Părerile au fost împărțite, ceea ce a reprezentat un aspect pozitiv. Ca să fiu sincer, cred că răspunsul la această întrebare este puțin mai complicat decât un simplu DA sau NU. În principiu, depinde de persoana care este pusă în această ipostază. Dintr-un anumit punct de vedere, este recomandat să începi cu un limbaj de programare a cărei sintaxă este mai strictă din punct de vedere al scrierii codului. De exemplu, într-un limbaj precum Java, ca începător vei avea oportunitatea să te familiarizezi cu tipurile de date în momentul în care declari variabile, organizarea codului folosind acolade, modificatori de acces etc. Chiar dacă acest lucru implică o dificultate suplimentară în momentul aprofundării, consider că rezultatul obținut este benefic mai ales atunci când un programator decide să învețe un nou limbaj sau tehnologie. Un inconvenient al acestei alegeri ar presupune timpul mai mare al procesului de învățare. La polul opus se află Python. Un limbaj permisiv din punct de vedere al sintaxei, care permite o lizibilitate ridicată. Acest aspect permite o descriere și înțelegere mai ușoară a instrucțiunilor if, for, while etc. Mai mult de atât, în Python ai posibilitatea să înveți să programezi atât în stil orientat spre obiect, dar și secvențial sau funcțional.
În cele din urmă, Python reprezintă una dintre zecile de soluții puse la dispoziție în prezent. Este această tehnologie una dintre cele mai populare în comparație cu cele existente pe piață? Eu zic că da.
Este această tehnologie cea mai bună soluție în vederea soluționării unei probleme software sau chiar hardware? Depinde de problemă. Actualmente, cred că Python poate fi comparat cu limbaje precum Java, C sau Javascript din punct de vedere al popularității dar nu și al performanței. Referitor la acest capitol, și anume al performanței, mai este încă de lucru, dar până la urmă care limbaj de programare este "perfect" din toate punctele de vedere? Cu toate aceste costuri de performanță, plusurile pe care le aduce Pythonul îl va ajuta să își mențină popularitatea în perioada următoare. De asemenea, această popularitate alături de comunitatea care s-a conturat în jurul tehnologiei va conduce inevitabil la optimizări și creșterea performanței.
Acestea fiind spuse, aș dori închei cu două întrebări:
1) Este Python un limbaj de viitor sau își trăiește momentul de glorie acum?
2) Care este legătura dintre Python și începutul democrației în România?