Kako jednostavno početi sa učenjem programskog jezika Python?

Kako jednostavno početi sa učenjem programskog jezika Python?

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.

U poslednjih nekoliko godina Python kao programski jezik sve je popularniji što na domaćem, što na svetskom IT tržištu, a sve veći broj ljudi koji ulaze u svet programiranja odlučuje da svoju karijeru započnu baš u ovoj tehnologiji. Otuda smo u razgovoru sa Nikolom Kolevskim, koji inače ima iskustvo rada u ovom jeziku, odlučili da detaljnije i bliže objasnimo o čemu je zapravo reč kada govorimo o Pythonu.

U intervjuu koji sledi, 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, šta tačno nudi, koji su mu limiti, kao i koja su dalja predviđanja kada je reč u upotrebi ovog jezika kako u svetu, tako i u Srbiji.

Python nudi čist interfejs, 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 – verovatno zato što je PHP delovao mnogo prirodnije”, započinje Nikola razgovor za Netokraciju prisećajući se svojih prvih koraka u ovoj tehnologiji. Međutim, kako dodaje, Python se ispostavio kao dovoljno opšt da zameni sve od navedenog, osim C-a za embedded i JS-a za browser.

Kako nam je otkrio, za njegovo razumevanje Pythona, ključan je bio Django web framework, dok je sam framework interno glomazan, interfejs koji pruža je iznenađujuće čist. Nikola dodaje:

Ispostavilo se da ovo važi za većinu popularnih biblioteka. Tad mi je Python konačno kliknuo – izuzetno čisti interfejsi koji omogućavaju brz rad u svom domenu u veoma sintaksno-sažetom jeziku. Neko će se verovatno nasmejati na “čisti interfejsi” u dinamičkom, slabo tipiziranom jeziku, ali zajednica uglavnom vrlo lepo dokumentuje, te je učenje lako.

Pored pomenute dokumentacije, našem sagovorniku je najviše pomogla lokalna zajednica, tačnije u Haklabu gde je Python bio dosta korišćen, te je imao gde da posmatra kolege kako barataju njime. “Python je bio čest izbor jer je idealan za brze eksperimentalne sesije. Tu je i Python Belgrade meetup koji nažalost ne posećujem dovoljno često ali su iskustva bila svakako sjajna – organizatorima možemo da se zahvalimo i za PyCon Balkan”, otkrio nam je Nikola.

Ono što smo uspeli da saznamo zahvaljujući našem sagovorniku jeste 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 da prati globalnu Python zajednicu.

Na pitanje Netokacije zašto, prema njegovom mišljenju, ovaj programski jezik poslednjih godina doživljava veliki rast na svetskom nivou, ali i kod nas, Kolevski odgovara:

Lak odgovor bi bio zbog značaja u novim oblastima, poput veštačke inteligencije, data science-a i sličnih oblasti gde je prioritet u ergonomiji razvoja. Velike količine podataka predstavljaju izazov koji nije lako napasti isključivo misaonom analizom – potrebno je okruženje u kom se možete poigrati sa podacima.

Prema mom mišljenju, najveći pokretač ovoga je bio IPython Notebook, kasnije preimenovan u Jupyter Notebook. Ovo okruženje je najsličnije laboratoriji, gde uz interaktivno istraživanje dolazite do formiranog naučnog rada, ili, po rečima autora, do komputacionog narativa. Nekima poznatiji primer bi bio Matlab ili čak Excel, samo sa poznatijim programskim jezikom za opštu primenu.

Kako je naveo, ovo bi mogao da bude lak odgovor, ali ne i kompletan s obzirom na to da se popularnost ne zaustavlja na naučnim krugovima. Štaviše, Nikola nam je otkrio da je prema StackOverflow vizuelizacijama od pre par godina sistemska administracija/DevOps još jedna od oblasti koja 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 sled 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 sa 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 Python-u se struktura opisuje prostorno. Uvlačenje reda podrazumeva 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 Python-a, je do 2018. godine bio Benevolent dictator for life (češće pisano kao BDFL), kada je otišao u penziju i predao kormilo Steering Council-u od pet ključnih programera koji rade na CPython-u.

Ovo znači da jedna (ili pet u slučaju Council-a) osoba ima konačnu odluku o bitnim stvarima. U realnosti proces uvođenja novih stvari i izmena postojećih se vodi kroz Python Enhancement Proposals. Kroz njih praktično svako (uz sponzorstvo ključnih programera) može dati svoju preporuku za izmene i standarde.

Tako nam je Nikola otkrio da su neki od poznatijih PEP-ova PEP8, koji definiše stil pisanja Python koda, i PEP20, takozvani Zen of Python, koji opisuje Guido-ve principe kroz 19 aforizama. Kroz Zen of Python je i zajednica počela da deli principe jezika, iz kojih bi naš sagovornik izdvojio sledeći: “There should be one– and preferably only one –obvious way to do it.”

Ovaj jezik je idealan za ulazak u svet programiranja

U nastavku smo sa Nikolom pričali i o tome da li postoje neke glavne predrasude zajednice programera u vezi ovog jezika i da li su, prema njegovom mišljenju, opravdane ili ne. Na primer da li je sporiji od ostalih i slično.

“Dok je u opštem slučaju to tač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 on, ovo efektivno znači da jedan Python proces ne može koristiti punu snagu multijezgarnih procesora koji su danas u praktično svakom računarskom sistemu.

“Srećom, ovo ne utiče previše na glavne upotrebe Python-a kojima je usko grlo ulaz/izlaz podataka, kao što su web serveri ili DevOps orkestracija. Naravno, brže je uvek 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 multiprocessing-a je odvojeni memorijski prostor i samim tim veća upotreba memorije, sporija promena 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 asinhronog programiranja, gde lako možemo pisati naizgled sinhron kod kojih zapravo prepušta kontrolu drugim ko-rutinama (asinhroni 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 zahteva.

Stvar je ovde tehnički malo složenija. “Python na način na koji biste ga koristili u školskom okruženju jeste 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 jeste da limiti za ovaj jezik, uslovno rečeno, ne postoje. Ono što nam je naš sagovornik otkrio jeste da to važi za svaki Tjuring potpun jezik. Ipak, prema njegovim rečima, postoje stvari za koje je jezik manje pogodan i on ga lično ne bi koristio za razvoj desktop aplikacija jer je generalna podrška za grafičke interfejse rudimentarna ili bolja u drugim jezicima.

Takođe, Nikola kaže da Python nije pogodan za embedded sisteme (npr. softver za industrijsku elektroniku), što zapravo važi za većinu interpretiranih jezika (JS, Ruby, PHP, Perl, itd.) jer im je memorijski otisak prevelik za specijalizovane uređaje koji imaju malo memorije na raspolaganju.

Sa druge strane, što se tiče prednosti koje ovaj jezik donosi, naš sagovornik dodaje da one takođe ne postoje ili sa bar ne razlikuju od specifičnosti s obzirom da se ovde radi o jeziku opšte namene sa vrlo zdravom zajednicom:

Ja najviše volim da ga koristim za backend development, posebno u ranim fazama gde još uvek 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 u Srbiji stoji situacija po pitanju upotrebe Pythona i da li broj kompanija koje traže programere koji poseduju ova znanja ide u korak sa interesovanjem programera za ovaj jezik (jer, po istraživanjima domaće scene, veliki broj developera bi voleo da nauči nešto više o ovoj tehnologiji)? Nikola kaže da je iz njegovog ugla potražnja veća nego interesovanje, posebno kada je reč 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 inostranstvo, što ne verujem da će se skoro promeniti. S obzirom da na inostranom 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 savet svima koji tek ulaze u svet programiranja, rekavši da ako ste novi u ovoj oblasti, treba ići samo napred, jer će Python dati zdravu podlogu i dobro razumevanje programiranja, bez opterećujućih detalja.

“Bilo da se zadržite na Python-u ili odaberete drugi jezik principi ostaju tu, a odlična zajednica će vas izvesti na pravi put. Ako ste pak iskusniji, i već imate jezik koji vam je tečan, Python može biti fina ekskurzija u odličnu zajednicu. Svakako “švajcarski nož” koji vam može dobro doći”, zaključio je na kraju Nikola.


Odgovori

Tvoja e-mail adresa neće biti objavljena.

Popularno

Tehnologija

Srpski HTEC Group podigao $140 miliona za dalje širenje kompanije

Srpska IT kompanija koja radi na razvoju softverskih rešenja HTEC Group, a koja ima sedište u SAD-u, saopštila je da je obezbedila 140 miliona dolara od investicione kompanije Brighton Park Capital u ugovoru o vlasničkom kapitalu kako bi ubrzala svoju globalnu ekspanziju.

Karijere

Jovan Krička živi i radi u Amsterdamu i otkriva šta čeka programere koji žele da nastave karijeru u Holandiji

Kako funkcioniše IT industrija u Holandiji i šta može da ponudi domaćim developerima?

Gaming

$12,7 milijardi vredna je akvizicija Zynge od strane Take-Two Interactive čiji je Nordeus ključan deo

Take Two Interactive, jedna od najvećih kompanija u globalnoj game dev industriji, najavila je akviziciju kompanije Zynga za 12,7 milijardi dolara. Na ovaj način pomenuti gigant bi mogao da proširi svoj već bogati portfolio firmi u sklopu kog se nalazi i srpski Nordeus.

Propustili ste

Startapi i poslovanje

Kako voditi korisničku podršku ako se vaš tim sastoji od samo nekoliko ljudi?

Iako ste mali tim, veoma je bitno obratiti pažnju na 'feedback' koji vam daju korisnici i postarati se da ste zaista tu za njih. Zato je segment korisničke podrške ponekada presudan.

Tehnologija

Srpski HTEC Group podigao $140 miliona za dalje širenje kompanije

Srpska IT kompanija koja radi na razvoju softverskih rešenja HTEC Group, a koja ima sedište u SAD-u, saopštila je da je obezbedila 140 miliona dolara od investicione kompanije Brighton Park Capital u ugovoru o vlasničkom kapitalu kako bi ubrzala svoju globalnu ekspanziju.

Intervju

Symphony organizuje interne tehničke zajednice za razmenu znanja – a uskoro i eksternu konferenciju ‘TechNote’

Ova kompanija je za svoje zaposlene organizovala tehničke zajednice čiji je cilj podela znanja i iskustva među članovima tima (QA, DevOps i Front-End community), a to je preraslo i u eksternu konferenciju 'TechNote' koja startuje od marta.

Tehnologija

Šta je to ‘bear market’ i kako se povezuje sa drastičnim padom kriptovaluta?

U prethodnim danima Bitcoin je doživeo nagli pad vrednosti, spustivši se na ispod 35.000 dolara. Štaviše, kompletno 'crypto' tržište je u padu, smanjujući vrednost gotovo svih kriptovaluta. Šta je uzrok ovom problemu i koji uticaj u svemu tome ima termin 'bear market'?

Office Talks Podcast

Prvi superklasteri u Srbiji i osvrt na Web3

Sa Aleksandrom Popović i Pavlom Batutom razgovarali smo o tome kako se zainteresovani startapi, predstavnici akademske zajednice i privrede mogu ujediniti u prve srpske superklastere.

Kultura 2.0

Inviggo svojim zaposlenima nudi stalnu podršku psihoterapeuta i time demistifikuje psihoterapiju

Kompanija Inviggo svojim zaposlenima omogućila je opciju da, ukoliko žele, mogu imati redovne razgovore sa psihoterapeutom. O tome, ali i značaju mentalnog zdravlja, razgovaramo sa direktorkom ove kompanije.