Zašto „spori" Python tako brzo raste?

Python je vrlo živ jezik sa jednostavnom sintaksom, koji početnicima omogućava da brzo dođu do atraktivnih primena, ali sve to dolazi sa određenom cenom.

Marko Marković
05/07/2019

Rezultati istraživanja programerske scene Startita, pokazali su da Python već nekoliko godina beleži rast broja korisnika u Srbiji. Ovaj trend je usklađen sa ostatkom sveta gde Python takođe postaje sve popularniji.

Python je open-source programski jezik koji je 1991. razvio Guido van Rosum. U početku je zamišljen kao jezik koji će pomoći da se „automatizuju dosadne stvari” ili da se ubrzano naprave prototipovi aplikacija koje će biti implementirane u druge jezike. Međutim, u poslednjih nekoliko godina, Python je prerastao u jedan od nakorišćenijih jezika za razvoj softvera, upravljanje infrastrukturama i analizu podataka.

Mnoge velike organizacije koriste Python u nekom segmentu. Među njima su Wikipedia, Google, Yahoo!, CERN, NASA, Facebook, Amazon, Instagram, Spotify, dok je sajt Reddit u potpunosti napisan u Pythonu.

Srpski osnovci od 2017. godine, kroz obavezan predmet Informatika i računarstvo, upoznaju se sa tekstualnim programiranjem upravo preko Pythona. Neki od članova Fondacije Petlja su odigrali bitne uloge u procesu uvođenja ovog predmeta – samim tim i Pythona – u srpske škole. Kontaktirali smo Tea Šarkića, predsednika upravnog odbora Petlje, koji nam je više ispričao o tome zašto je baš Python izabran za naš nastavni program, ali i o razlozima njegove sve veće popularnosti u svetu.

Živ jezik sa jednostavnom sintaksom

Šarkić je izdvojio glavne razloge zašto je baš programski jezik Python izabran da se u njemu izrade materijali koji prate školski program.

  • Teo Šarkić, PetljaJednostavna sintaksa, ne mora da se pazi na tipove podataka (ili upravljanje memorijom), nema kompajliranja koda. Sve ovo smanjuje prag koji učenik/učenica treba da preskoči na samom početku učenja programiranja.
  • Vrlo brzo, nakon učenja osnovnih principa programiranja, se dolazi do atraktivnih primena, poseduje moćne biblioteke za rad. Npr. tu su biblioteke za 2D crtanje i pravljenje igrica (kao npr. PyGame), za obradu slike (kao OpenCV), zatim NumPy, Pandas i Matplotlib su tu za matematički i statistički aparat i vizuealizaciju podataka. Sve ove biblioteke se na najlakši mogući način uključuju u program. I sa vrlo malo dodatnog koda moguće je uz pomoć biblioteka postići puno.
  • Vrlo je živ programski jezik, koristi se u profesionalne svrhe, i popularnost mu već duži niz godina raste, što kod učenika povećava motivisanost za učenje. Prirodno je očekivati da učenici nemaju želju da uče programske jezike koji se van škole ne koriste.
  • Takođe, postoji i podrška da se Python kod izvršava u web strani. Ovo nam je bilo posebno bitno za skaliranje učenja programiranja po školama, i da naš sistem dopre do svih onih koji žele da uče programiranje. Zbog ovoga za naše materijale dovoljno je da imate računar (sa internet pristupom) i na njemu instaliran browser i već ste spremni da krenete da učite da programirate.

Šarkić je istakao kako je teško naći programski jezik koji pruža toliko prednosti za početnike. Takođe, za one koji žele detaljnije da se upoznaju sa razlozima koji su doveli do odlučivanja za Python, Šarkić preporučuje tekst Nebojše Vasiljevića, direktora Fondacije Petlje.

Pošto je Šarkić kao jedan od glavnih razloga za uvođenje Pythona u nastavu naveo da se dosta koristi u profesionalne svrhe, zanimalo nas je šta je dovelo do veće popularnosti baš ovog od mnogih programskih jezika.

Teo Šarkić, PetljaMislim da je to najpre zbog raznovrsnosti biblioteka i domena primene. Do skora je bilo nezamislivo postići toliko sa tako malo kucanja koda, a da je reč o besplatnom proizvodu.

Takođe, mnoge stvari su pojednostavljene, u samom jeziku, da je postao lak za korišćenje korisnicima koji nisu samo programeri, već i onima kojima je programiranje usputni alat, kao na primer ljudima koji se bave analizom podatka, raznim istraživanjima, ekonomijom itd.

Ovolikoj bibliotečkoj podršci je doprinelo to što je Python trasiran kao Open Source projekat na koji su se naslonili mnogi drugi takvi projekti. U ovom članku je naglašeno još prednosti Python-a koji su doveli do njegove popularnosti

Sporiji u izvršavanju, ali brži u pisanju

Kada se porede programski jezici, činjenica je da ne postoji jedan jezika koji odgovara svim potrebama. Svaki ozbiljni programski jezik ima domene primene u kojima dominira. Ipak, ovo ne sprečava kritičare da navode mane Pythona i tako pokušaju da ga diskredituju. O tome šta su najveće kritike upitali smo i Šarkića.

Teo Šarkić, PetljaDefinitivno je kritika da je Python sporiji u odnosu na C ili C++, pa i neke druge programske jezike. Jedan od problema koji se može javiti pri korišćenju je da je teško uskladiti verzije biblioteka koje se slažu međusobno, a i sa verzijom Python-a koju imate instaliranu. Te greške je ponekad teško uočiti i rešiti.

Zatim, neki programeri preferiraju C-oliku sintaksu što je već više stvar navike i ličnog izbora. No, ovo su sve problemi koji ne treba da brinu početnike.

Pošto je najčešća kritika da je previše spor, zanimalo nas je šta stoji iza ove mane Pythona.

Teo Šarkić, PetljaPython jeste sporiji od low level programskih jezika kao što su C i C++, i to višestruko. (Evo i jednog teksta Petlje na temu koliko je C++ brži od Python-a.)

Sporost Python-a može da bude objektivan problem, ali često je problem znatno manji nego što izgleda. Mnogi Python programi su sporiji samo zato što funkcionalnost Python-a i njegove standardne biblioteke nije pravilno iskorišćena. Na primer, matematičke i statističke operacije se mogu dramatično ubrzati upotrebom biblioteka poput NumPy i Pandas.

Poznata heuristika vezana za razvoj softvera je da se 90% vremena u izvršavanju programa vrlo često dešava u samo 10% koda programa, pa optimizacija tih 10% koda može dovesti do značajnog poboljšanja u vremenu izvršavanja. U Python-u možete ovaj deo programa koji je usko grlo (bottleneck) prepisati u C upotrebom na primer Cython projekta. Rezultat je često program sa veoma sličnim performansama u odnosu na isti takav čist C program, uz zadržavanje prednosti koje Python ima u odnosu na C (kao što je na primer čitljivost koda).

Takođe, ponekad se zanemaruje vreme koje je potrebno da se napiše ispravan program koji rešava problem. Python u odnosu na brže programske jezike pruža lagodnost u rešavanju problema, i ukoliko rešavate stvar koju ćete koristiti sporadično, Python može da vam uštedi u ukupnom vremenu i to na delu samog razvoja rešenja. Na primer Python program može da se izvrši za 5 sekundi u poređenju sa delićem sekunde koliko se izvršava u nekom bržem jeziku. No, može se desiti da je pisanje tog programa trajalo 10 minuta u Python-u u odnosu na sat vremena koje je potrebno izdvojiti za pisanje istog programa u nekom bržem programskom jeziku.

Za kraj Teo Šarkić je uporedio Python sa programskim jezicima za koje kritičari smatraju da su „ozbiljniji”, poput C, C++ ili Jave.

Teo Šarkić, PetljaSve zavisi od domena primene u kome želite da radite. I naravno, svaki jezik ima svoje limite i na žalost, po nas programere, ne postoji neki najbolji programski jezik koji je jednako dobar za sve potrebe. Pri dizajnu programskog jezika potrebno je napraviti više kompromisa, u zavisnosti šta kreator jezika želi da postigne. Rezultat ovoga je da programeri uglavnom vladaju sa više programskih jezika, koje koriste za različite primene. Tako da ako je potrebno da se program izvršava na uređaju sa ograničenim resursima (recimo neki embedded uređaj) ili pak imamo neku time-critical operaciju koju izvršavamo često i na velikom broju podataka (kao pri razvoju baza podataka) potrebno je pribeći nekom od low level programskih jezika koji su efikasni u izvršavanju.

Moja preporuka svima je da kad ovladaju jednim jezikom, da isprobaju neki drugi jezik koji je dovoljno drugačiji po karakteristikama od jezika koji već poznaju. To će im svakako podići nivo znanja, pružiti novu perspektivu i najbitnije obogatiti raznolikost aplikacija koje mogu da razvijaju.

Inače, u našem istraživanju programerske scene iz 2015. Python je bio na devetom po broju korisnika. Drugo istraživanje iz 2017. pokazalo je da se Python popeo na šesto mesto, ali i da je bio tehnologija u kojoj je najviše programera želelo da se razvija u budućnosti. Ovogodišnje istraživanje pokazalo je da je Python na petom mestu po broju korisnika, sa 8,9% svih ispitanika koji ga koriste.

Marko Marković

Objavio/la članak.

petak, 5. Jul, 2019.

IT Industrija

🔥 Najčitanije

Aleksa Vidović

ponedeljak, 8. Jul, 2019.

Odličan članak i odličan sagovornik, sa svime što je rekao se slažem, naročito sa delom vezanim za performanse. Pajton je izvikan kao "spor jezik", delom zaista opravdano. Ipak, što kaže Rejmond Hetinger, "nije pajton spor nego vi ne znate pravilno da ga koristite". U prilog tome govori i tekst sa Petljinog sajta koji ste linkovali, koji pokazuje da je problem daleko manje drastičan nego što deluje, pogotovo za neku opštu primenu gde nije baš svaka milisekunda presudna. Takođe, što se tiče multitredinga i multiprocesinga koji su rak rane performansi Pajton aplikacija, implementacijom PEP554 trebalo bi da se ti problemi u velikoj meri ublaže/otklone. Dobar članak na tu temu: https://hackernoon.com/has-the-python-gil-been-slain-9440d28fa93d