Među programskim jezicima postoje velike razlike kako u samom procesu rada, tako i u krajnjim rezultatima. U razgovoru sa Nikolom Kolevskim, otkrivamo zašto je Python sve popularniji među programerima i šta ga izdvaja od drugih tehnologija te kako možeš naučiti Python online.
U posljednjih nekoliko godina Python kao programski jezik sve je popularniji što na domaćem, što na svjetskom IT tržištu, a sve veći broj ljudi koji ulaze u svijet programiranja odlučuje svoju karijeru započeti baš u ovoj tehnologiji. Otuda smo u razgovoru s Nikolom Kolevskim, koji inače ima iskustvo rada u ovom jeziku, odlučili detaljnije i bliže objasniti o čemu je zapravo riječ kada govorimo o Pythonu.
U intervjuu koji slijedi, između ostalog, dotakli smo se i onoga što će najviše zanimati sadašnje i buduće programere, a to je koliko se zapravo Python razlikuje od ostalih jezika, što točno nudi, koja su mu ograničenja, kao i koja su daljnja predviđanja kada je riječ u upotrebi ovog jezika kako u svijetu, tako i kod nas.
Škola programiranja Smartninja nudi python online uz tečaj Web Development 1.
Python nudi čisto sučelje, a idealan je za brze eksperimentalne sesije
„Python mi se pojavio na radaru po preporuci. Do tada sam mahom koristio C ili C# za desktop i PHP uz JS za web. U retrospektivi, ne znam zašto nisam koristio C# za web – vjerojatno zato što je PHP djelovao mnogo prirodnije“, započinje Nikola razgovor za Netokraciju prisjećajući se svojih prvih koraka u ovoj tehnologiji. Međutim, kako dodaje, Python se ispostavio kao dovoljno općenit da zamijeni sve od navedenog, osim C-a za embedded i JS-a za browser.
Kako nam je otkrio, za njegovo razumijevanje Pythona, ključan je bio Django web framework, dok je sam framework interno glomazan, sučelje koji pruža je iznenađujuće čisto. Nikola dodaje:
Ispostavilo se da ovo vrijedi za većinu popularnih biblioteka. Tad mi je Python konačno kliknuo – izuzetno čista sučelja koja omogućavaju brz rad u svojoj domeni u vrlo sintaksno sažetom jeziku. Netko će se vjerojatno nasmijati na „čista sučelja“ u dinamičkom, slabo tipiziranom jeziku, ali zajednica uglavnom vrlo lijepo dokumentira, te je učenje lako.
Pored spomenute dokumentacije, našem sugovorniku je najviše pomogla lokalna zajednica, točnije Haklab gdje je Python bio dosta korišten, te je imao gdje promatrati kolege kako njime barataju. „Python je bio čest izbor jer je idealan za brze eksperimentalne sesije. Tu je i Python Belgrade meetup koji nažalost ne posjećujem dovoljno često, ali su iskustva bila svakako sjajna – organizatorima se možemo zahvaliti za PyCon Balkan“, otkrio nam je Nikola.
Ono što smo uspjeli saznati zahvaljujući našem sugovorniku je da mu programi kao što su Python Weekly i GitHub trending stranica za Python (kroz GitHunt New Page ekstenziju za Chrome) i dan danas pomažu u praćenju globalne Python zajednice.
Na pitanje Netokacije zašto, prema njegovom mišljenju, ovaj programski jezik posljednjih godina doživljava veliki rast na svjetskom nivou, ali i kod nas, Kolevski odgovara:
Lak odgovor bi bio zbog značaja u novim područjima, poput umjetne inteligencije, data sciencea i sličnih područja gdje je prioritet u ergonomiji razvoja. Velike količine podataka predstavljaju izazov koji nije lako napasti isključivo misaonom analizom – potrebno je okruženje u kojem se možete poigrati s podacima.
Prema mom mišljenju, najveći pokretač ovoga bio je IPython Notebook, kasnije preimenovan u Jupyter Notebook. Ovo okruženje je najsličnije laboratoriju, gdje uz interaktivno istraživanje dolazite do formiranog znanstvenog rada, ili, po riječima autora, do komputacijskog narativa. Nekima poznatiji primjer bi bio Matlab ili čak Excel, samo sa poznatijim programskim jezikom za opću primjenu.
Kako je naveo, ovo bi mogao biti lak odgovor, ali ne i potpun s obzirom na to da se popularnost ne zaustavlja na znanstvenim krugovima. Štoviše, Nikola nam je otkrio da je prema StackOverflow vizualizacijama od prije par godina sistemska administracija/DevOps još jedno od područja koje sve više koristi Python, kao i da je činjenica da se spominje češće i u različitim krugovima uzrokovala rast popularnosti samog jezika.
Otuda smo se, kao logičan slijed događaja, zapitali po čemu je zapravo Python specifičan u odnosu na popularne programske jezike? Šaljivo, Nikola kaže da je popularan baš po tome što nije specifičan. Šalu na stranu, on kaže da je prva razlika s kojom se programer susreće zapravo sintaksa.
„Godine rada u C-olikim jezicima su nas navikle da strukturu opisujemo simbolima, najčešće vitičastim zagradama ({}). U Pythonu se struktura opisuje prostorno. Uvlačenje reda podrazumijeva da je kod u dubljem leksičkom bloku“, kaže Nikola i dodaje:
Sa strane zajednice specifičan je način „upravljanja“. Guido van Rossum, kreator Pythona, je do 2018. godine bio Benevolent dictator for life (češće pisano kao BDFL), kada je otišao u penziju i predao kormilo Steering Councilu od pet ključnih programera koji rade na CPythonu.
Ovo znači da jedna (ili pet u slučaju Councila) osoba ima konačnu odluku o bitnim stvarima. U realnosti proces uvođenja novih stvari i izmjena postojećih vodi se kroz Python Enhancement Proposals. Kroz njih praktički svatko (uz sponzorstvo ključnih programera) može dati svoju preporuku za izmjene i standarde.
Tako nam je Nikola otkrio da su neki od poznatijih PEP-ova PEP8, koji definira stil pisanja Python koda, i PEP20, takozvani Zen of Python, koji opisuje Guidove principe kroz 19 aforizama. Kroz Zen of Python je i zajednica počela dijeliti principe jezika, iz kojih bi naš sugovornik izdvojio sljedeći: „There should be one– and preferably only one –obvious way to do it.“
Ovaj jezik je idealan za ulazak u svijet programiranja
U nastavku smo sa Nikolom pričali i o tome postoje li neke glavne predrasude zajednice programera u vezi ovog jezika i jesu li, prema njegovom mišljenju, opravdane ili ne. Na primjer, je li sporiji od ostalih i slično.
„Dok je u općem slučaju to točno, radi se o prevelikoj generalizaciji. Jedan od razloga je Global Interpreter Lock“, smatra Nikola. On dalje dodaje da u referentnoj implementaciji, zvanoj CPython, GIL sprečava izvršavanje više od jedne programske niti u jednom trenutku. Zapravo, kaže, ovo efektivno znači da jedan Python proces ne može koristiti punu snagu multijezgarnih procesora koji su danas u praktički svakom računalnom sustavu.
„Srećom, ovo ne utječe previše na glavne upotrebe Pythona kojima je usko grlo ulaz/izlaz podataka, kao što su web serveri ili DevOps orkestracija. Naravno, brže je uvijek bolje, te postoje neki načini da se umanje efekti GIL-a“, kaže Kolevski za Netokraciju i objašnjava:
Ukoliko je u pitanju čista računska obrada, multiprocessing: biblioteka ugrađena u jezik omogućava pokretanje računskih operacija u zasebnim procesima koji se ne utrkuju oko istog GIL-a. Loša strana multiprocessinga je odvojeni memorijski prostor i samim tim veća upotreba memorije, sporija promjena konteksta i složenija komunikacija između procesa.
Ako je pak ulaz/izlaz usko grlo, Python pruža:
asyncio biblioteku od verzije 3.4. asyncio uvodi mogućnost asinkronog programiranja, gdje lako možemo pisati naizgled sinkroni kod koji zapravo prepušta kontrolu drugim ko-rutinama (asinkroni pandan nitima) kad god naiđemo na operaciju koja čeka na ulaz/izlaz. Ovo je slično načinu rada Node.js-a i vrlo pogodno za pisanje web servera koji obrađuju veliki broj zahtjeva.
Stvar je ovdje tehnički malo složenija. „Python na način na koji biste ga koristili u školskom okruženju jest nepogodan za razvoj softvera visokih performansi, ali sam jezik pruža dovoljno mogućnosti za bolje performanse“, kaže nam Nikola.
Ipak, ono što je dobro je da limiti za ovaj jezik, uvjetno rečeno, ne postoje. Ono što nam je naš sugovornik otkrio je da to vrijedi za svaki Turing potpun jezik. Ipak, prema njegovim riječima, postoje stvari za koje je jezik manje pogodan i on ga osobno ne bi koristio za razvoj desktop aplikacija jer je generalna podrška za grafička sučelja rudimentarna ili bolja u drugim jezicima.
Također, Nikola kaže da Python nije pogodan za embedded sisteme (npr. softver za industrijsku elektroniku), što zapravo vrijedi za većinu interpretiranih jezika (JS, Ruby, PHP, Perl, itd.) jer im je memorijski otisak prevelik za specijalizirane uređaje koji imaju malo memorije na raspolaganju.
S druge strane, što se tiče prednosti koje ovaj jezik donosi, naš sugovornik dodaje da one također ne postoje ili se bar ne razlikuju od specifičnosti s obzirom da se ovdje radi o jeziku opće namjene sa vrlo zdravom zajednicom:
Ja ga najviše volim koristiti za backend development, posebno u ranim fazama gdje još uvijek istražujem proizvod. Django je savršen za izuzetno brz i ergonomičan razvoj CRUD aplikacija (koje prestavljaju veliku većinu onoga šta tržište traži).
Pred sam kraj razgovora, Kolevskog smo upitali kako prema njegovom mišljenju kod nas stoji situacija po pitanju upotrebe Pythona i da li broj kompanija koje traže programere koji posjeduju ova znanja ide u korak sa zanimanjem programera za ovaj jezik (jer, po istraživanjima domaće scene, veliki broj developera bi htio naučiti nešto više o ovoj tehnologiji)? Nikola kaže da je iz njegovog kuta potražnja veća nego ponuda, posebno kada je riječ o potrebama za seniornijim kandidatima:
Naravno, moj pogled na trenutno stanje tržišta nije sveobuhvatan, ali svakako je teško naći kandidate. Do sada je domaće tržište bilo usko vezano za inozemstvo, što ne vjerujem da će se uskoro promijeniti. Budući da na inozemnom tržištu potražnja za upotrebom Pythona samo raste, očekujem da će se isto oslikati i na našem.
Sumirajući ovaj razgovor, Nikola je dao savjet svima koji tek ulaze u svijet programiranja, rekavši da ako ste novi u ovoj oblasti, treba ići samo naprijed, jer će Python dati zdravu podlogu i dobro razumijevanje programiranja, bez opterećujućih detalja.
„Bilo da se zadržite na Pythonu ili odaberete drugi jezik, principi ostaju, a odlična zajednica će vas izvesti na pravi put. Ako ste pak iskusniji i već imate jezik kojim vladate, Python može biti fina ekskurzija u odličnu zajednicu. Svakako ‘švicarski nož’ koji vam može dobro doći“, zaključio je na kraju Nikola.