ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 148
Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 119
Abonament PDF

Popularitatea limbajului Python - mit sau realitate?

Vlad Petrean
Java Software Engineer @ Accesa



PROGRAMARE

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.

Context

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 :

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.

Concluzie

Î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?

Conferință TSM

NUMĂRUL 147 - Automotive

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects