Ljubavno pismo učenju

Drugi deo: Hrabri vizionari koji su izgradili digitalni svet
Ljubavno pismo učenju
IX. Programski jezici, web i otvoreni digitalni svet
38. Guido van Rossum – čitljivost kao filozofija: Python

Krajem osamdesetih godina računarstvo je već raspolagalo moćnim programskim jezicima, ali je između ljudske zamisli i njenog pretvaranja u program često stajao čitav zid tehničkih pojedinosti. Jezici poput C-a pružali su programerima veliku slobodu i preciznu kontrolu nad memorijom i hardverom, uz cenu koja se plaćala obimnim kodom, ručnim upravljanjem resursima i greškama sposobnim da dugo ostanu skrivene. Drugi jezici bili su pristupačniji početnicima ili pogodni za kratke skripte, ali su se teško povezivali sa operativnim sistemima, postojećim bibliotekama i velikim softverskim projektima. Za zadatak koji je čovek mogao jasno da opiše u nekoliko rečenica neretko je trebalo napisati mnoštvo naredbi čiji se najveći deo odnosio na zahteve mašine, a veoma malo na suštinu problema.

Guido van Rossum radio je u holandskom Centru za matematiku i računarstvo, poznatom kao CWI, upravo na mestu gde su se susrela dva dragocena iskustva. Jedno je poticalo iz projekta ABC, obrazovnog programskog jezika osmišljenog da ljudima bez velikog prethodnog znanja pruži čisto i prijatno okruženje za rad. ABC je imao čitljivu sintaksu, korisne ugrađene tipove podataka i mogućnost interaktivnog isprobavanja naredbi, ali je ostao suviše zatvoren prema širem softverskom svetu. Drugo iskustvo dolazilo je iz rada na distribuiranom operativnom sistemu Amoeba, gde su istraživačima bili potrebni praktični alati za povezivanje računara, upravljanje procesima i automatizovanje poslova. Komandne skripte bile su ograničene, dok je C za svakodnevne pomoćne programe zahtevao nesrazmerno mnogo truda.

Između pedagoške jasnoće ABC-a i stvarnih potreba sistemskog programiranja otvorio se prostor za novu zamisao. Tokom božićnih praznika 1989. godine Van Rossum je počeo da piše interpreter za jezik koji će zadržati lakoću čitanja i neposrednost interaktivnog rada, a istovremeno omogućiti pristup datotekama, procesima, mrežama i bibliotekama napisanim u drugim jezicima. Python je zamišljen kao jezik opšte namene u kojem kratka skripta može prirodno da preraste u ozbiljan program, bez potrebe da autor promeni čitav način razmišljanja čim njegov projekat postane složeniji.

Ime je poteklo iz Van Rossumove naklonosti prema britanskoj humorističkoj seriji Monty Python’s Flying Circus. Kratko, pamtljivo i oslobođeno tehničke ukočenosti, ono je projektu dalo vedrinu koja će ostati prisutna u primerima, dokumentaciji i kulturi zajednice. Iza tog razigranog imena stajala je pažljivo promišljena ambicija: programiranje bi trebalo da omogući čoveku da se usredsredi na problem koji rešava, dok jezik preuzima veliki deo ponavljajućeg tehničkog tereta.

Najprepoznatljivija Van Rossumova odluka odnosila se na uvlačenje redova kao sastavni deo sintakse. Programeri su i ranije koristili razmake kako bi ljudskom oku pokazali koji redovi pripadaju istoj celini, dok su računaru strukturu saopštavali zagradama ili posebnim ključnim rečima. Zbog toga je program mogao da izgleda kao da ima jednu organizaciju, a da interpreter ili kompajler u njemu vidi sasvim drugačiju. Python je uklonio taj raskorak: vizuelni raspored koda postao je njegova stvarna logička struktura. Ono što vidi čovek usklađeno je sa onim što razume mašina.

Ta odluka otkriva mnogo dublju filozofiju od običnog pravila o razmacima. Čitljivost je u Pythonu postala funkcionalna osobina softvera, povezana sa pouzdanošću, saradnjom i trajanjem programa. Kod se napiše jednom, a zatim se čita mnogo puta: čitaju ga kolege, budući održavaoci, ljudi koji traže grešku, novi članovi tima i sam autor nakon što su mu prvobitne pretpostavke izbledele iz sećanja. Program razumljiv ljudima lakše se proverava, sigurnije menja i jednostavnije prenosi sledećoj generaciji saradnika.

Python je programeru ponudio dinamičke tipove, automatsko upravljanje memorijom, bogate strukture podataka i interaktivni interpreter u kojem se ideja može odmah isprobati. Liste, rečnici, skupovi, tekst i datoteke dobili su pregledne načine obrade, dok su izuzeci omogućili da se greške uoče i rešavaju na mestima gde zaista mogu biti smisleno obrađene. Programer je zahvaljujući tome mogao da misao razvija postepeno: da napiše mali deo programa, pogleda rezultat, ispravi pretpostavku i tek potom izgradi složeniji postupak.

Pristupačnost jezika nije ograničila njegovu izražajnost. Python je dobio funkcije, module, pakete, klase i podršku za više programskih stilova, pa su se proceduralni, objektno orijentisani i funkcionalni pristupi mogli koristiti u skladu sa prirodom problema. Moduli su velike sisteme delili na razumljive celine, dok su paketi omogućili da se srodne mogućnosti organizuju i ponovo koriste. Jezik je pružao dovoljno slobode da podrži raznovrsne oblasti, a ipak je čuvao prepoznatljiv način izražavanja zahvaljujući kojem programi različitih autora mogu da ostanu međusobno razumljivi.

Jedna od presudnih osobina Pythona bila je njegova otvorenost prema postojećem softveru. Najrasprostranjenija implementacija, CPython, napisana je u jeziku C, a dodatni moduli mogli su da povežu Python sa kompajliranim bibliotekama i sistemskim funkcijama. Zahtevni proračuni mogli su da se izvršavaju velikom brzinom u nižim slojevima, dok je korisnik njima upravljao kroz sažet i čitljiv Python program. Jezik je tako postao svojevrsno vezivno tkivo digitalnog sveta, sposoban da poveže različite biblioteke, servise, baze podataka, formate i operativne sisteme.

Kada je u februaru 1991. godine rana verzija Pythona objavljena u diskusionoj grupi alt.sources, zajedno sa izvornim kodom, projekat je napustio granice instituta u kojem je nastao. Korisnici su mogli da proučavaju interpreter, prijavljuju greške, šalju zakrpe i predlažu nove mogućnosti. Jezik se razvijao kroz razgovor između autora i zajednice, pri čemu je Van Rossum dugo čuvao njegovu celovitost i donosio završne odluke kada saglasnost nije mogla da se postigne. Njegova uloga u šali je nazvana „dobroćudni doživotni diktator”, ali je taj neobični naslov podrazumevao mnogo više odgovornosti nego samovolje: svaku novu ideju trebalo je sagledati kroz njen uticaj na milione budućih programa i korisnika.

Zajedno sa jezikom rasla je i standardna biblioteka, vođena zamisli da korisnik odmah po instaliranju dobije bogatu radionicu spremnu za stvaran rad. Izraz „baterije su uključene” opisivao je mogućnost da se bez dugog traganja za dodatnim alatima obrađuju datoteke i tekst, koriste internet protokoli, radi sa podacima, testira program ili automatizuje operativni sistem. U vreme kada je preuzimanje i povezivanje spoljnih biblioteka zahtevalo mnogo više ručnog rada nego danas, takva spremnost bila je izuzetno važna. Put od pitanja do prvog upotrebljivog rezultata postao je kraći, a radoznalost je češće dobijala brzu i ohrabrujuću nagradu.

Filozofiju jezika Tim Peters je 1999. godine sažeo u aforizme poznate kao „Zen Pythona”. Među njima se nalaze misli da je čitljivost važna, da jasno izraženo ima prednost nad prećutanim, da jednostavnost zaslužuje prednost pred složenošću i da praktičnost ponekad nadvlada strogu čistotu. Ti aforizmi nisu napisani kao nepromenljiv ustav, već kao duhovit i sažet izraz vrednosti koje su se već prepoznavale u jeziku. Oni podsećaju da elegancija programa počiva na meri: rešenje treba da bude dovoljno snažno za ozbiljan zadatak i dovoljno razgovetno da drugi čovek može da razume njegovu nameru.

Sličnu ulogu dobio je PEP 8, vodič za stil Python koda koji su oblikovali Guido van Rossum, Barry Warsaw i Alyssa Coghlan na osnovu ranijih smernica i iskustva zajednice. Izbor imena, razmaci, raspored elemenata i način organizovanja programa postali su deo zajedničkog dogovora. Stil je time dobio praktičnu svrhu: kada veliki broj ljudi piše prema srodnim pravilima, manje vremena troši se na prilagođavanje tuđim navikama, a više na razumevanje problema i kvaliteta rešenja.

Razvoj jezika vremenom je dobio i institucionalno pamćenje kroz dokumente poznate kao Python Enhancement Proposals, odnosno PEP-ove. Svaka značajna promena mogla je da bude predstavljena dokumentom u kojem se objašnjavaju njen cilj, predloženo rešenje, alternative, posledice i odnos prema postojećem kodu. Tehničke rasprave tako su postale dostupne i ljudima koji u njima nisu neposredno učestvovali. Budući programeri mogu da vide zbog čega je neka mogućnost prihvaćena, zašto je druga odbačena i kakvu cenu zajednica smatra razumnom kada menja jezik koji koriste milioni ljudi.

Pythonova blaga početna kriva učenja otvorila je vrata programiranju ljudima koji sebe ranije nisu smatrali programerima. Učenik je mogao brzo da razume promenljivu, petlju i funkciju, a zatim da isti jezik sretne na univerzitetu, u laboratoriji ili profesionalnom timu. Naučnici su mogli da oblikuju algoritme bez dugog bavljenja upravljanjem memorijom, administratori da ponavljajuće poslove zamene pouzdanim skriptama, a novinari, ekonomisti, lingvisti i istraživači da ispituju podatke sredstvom koje ne zahteva potpunu promenu njihove stručne pripadnosti. Programiranje je postalo dodatni način mišljenja i izražavanja, dostupan mnogo širem krugu ljudi.

U naučnom računarstvu Python je izrastao u zajednički jezik disciplina koje se međusobno veoma razlikuju. Biblioteke za numeričke proračune omogućile su da se složene operacije izvršavaju u optimizovanom kompajliranom kodu, dok ih istraživač povezuje kroz razumljive naredbe. Na toj osnovi razvijeni su alati za statistiku, astronomiju, biologiju, medicinu, obradu signala, simulacije, vizuelizaciju i simboličku matematiku. Interaktivne beležnice spojile su objašnjenja, formule, kod, grafikone i rezultate u dokument koji se može čitati, proveravati, menjati i ponovo izvršiti, čime je i sam put do naučnog zaključka postao vidljiviji.

Isti obrazac presudno je uticao na razvoj mašinskog učenja i savremene veštačke inteligencije. Najzahtevniji proračuni izvršavaju se u bibliotekama napisanim u jezicima C i C++ ili u kodu prilagođenom grafičkim procesorima, dok Python pruža sloj u kojem se modeli opisuju, podaci pripremaju, eksperimenti organizuju, a rezultati analiziraju. Čitljivost jezika ubrzala je prelazak ideja iz naučnih radova u prototipove, otvorene biblioteke, nastavu i proizvodne sisteme. Stručnjaci iz različitih disciplina dobili su mogućnost da sarađuju na istom problemu bez potrebe da svi najpre postanu sistemski programeri.

Python se istovremeno proširio u veb-programiranju, automatizaciji i računarskoj infrastrukturi. Razvojni okviri poput Djanga i Flaska omogućili su stvaranje veb-aplikacija kroz pregledne modele podataka, ruta i korisničkih zahteva. Administratori su njime upravljali datotekama, mrežama i serverima, dok su ga razvojni timovi ugradili u testiranje, analizu koda i postupke isporuke softvera. Posebno se dobro snašao u prostorima između velikih sistema, gde treba povezati programski interfejs, bazu podataka, dokument, servis i ljudski radni postupak.

Python Package Index i alati poput programa pip pretvorili su hiljade pojedinačnih projekata u ogroman međuzavisan ekosistem. Programer može da objavi biblioteku, a drugi da je preuzmu i uključe u sopstveni rad bez ponovnog izmišljanja već rešenog problema. Takva dostupnost ubrzava razvoj, ali istovremeno zahteva zrelost: zavisnosti treba proveravati, verzije pažljivo usklađivati, a poreklo paketa i bezbednost lanca distribucije ozbiljno razmatrati. Otvorenost pruža veliku stvaralačku slobodu, dok odgovornost zajednice čuva poverenje bez kojeg takav ekosistem ne bi mogao da opstane.

Osnivanjem Python Software Foundation 2001. godine jezik je dobio organizacioni okvir sposoban da nadživi pojedinačne poslodavce, projekte i generacije saradnika. Fondacija čuva prava povezana sa Pythonom, podržava infrastrukturu, konferencije, obrazovanje i razvoj zajednice. PyCon konferencije i brojna lokalna okupljanja stvorili su mesta na kojima se znanje prenosi između kontinenata, zanimanja i generacija. Python je prerastao delo jednog autora i postao zajedničko dobro koje održavaju programeri interpretera, tvorci biblioteka, nastavnici, pisci dokumentacije, prevodioci, organizatori i korisnici spremni da prijave problem ili podele rešenje.

Prelazak sa Pythona 2 na Python 3 pokazao je koliko je teško popravljati temelje tehnologije na kojoj već počiva ogroman broj programa. Novi model rada sa tekstom i bajtovima bio je primereniji globalnom digitalnom svetu, ali je zahtevao izmene postojećeg koda i biblioteka. Dve grane jezika godinama su živele paralelno, dok su održavaoci razvijali alate, pisali smernice i pomagali organizacijama da pređu na novu verziju. Završetak zvanične podrške za Python 2 početkom 2020. godine označio je uspeh jednog od najvećih zajedničkih poduhvata u istoriji otvorenog softvera.

Van Rossum se u julu 2018. povukao iz uloge konačnog arbitra, posle iscrpljujuće rasprave o novom sintaksičkom mehanizmu. Pythonova zajednica potom je usvojila model upravljanja putem izabranog Upravljačkog saveta. Jezik je time pokazao institucionalnu zrelost: odgovornost za njegov smer mogla je da se prenese sa osnivača na uređeni proces u kojem ključni saradnici biraju ljude zadužene za najvažnije odluke. Autor je ostao značajna ličnost projekta, dok je zajednica dobila mogućnost da samostalno čuva vrednosti koje je sa njim izgradila.

Savremeni razvoj CPythona nastavlja tu tradiciju pažljivog menjanja složenog sistema. Podrška za izvršavanje bez globalne brave interpretera, odnosno GIL-a, uvedena je kao posebna konfiguracija u Pythonu 3.13, a u grani 3.14 dobila je status zvanično podržane, i dalje neobavezne mogućnosti. Takav rad zahteva prilagođavanje interpretera i velikog broja ekstenzija, očuvanje bezbednosti niti i pažljivo merenje performansi. Promena se sprovodi postepeno, kroz javne PEP dokumente, testiranje i saradnju čitavog ekosistema.

U julu 2026. godine stabilna grana Python 3.14 nastavlja da dobija održavajuća izdanja, dok je Python 3.15 stigao do završne beta verzije i priprema se za fazu kandidata za izdanje. Današnji jezik sadrži asinhrono programiranje, anotacije tipova, sve preciznije poruke o greškama, nove mogućnosti konkurentnog izvršavanja i brojne optimizacije koje prvobitni interpreter nije mogao da predvidi. Te osobine razvile su generacije saradnika, ali se i dalje procenjuju u odnosu na temeljnu vrednost koju je Van Rossum ugradio u projekat: moć jezika treba da raste bez nepotrebnog zatamnjivanja ljudske misli izražene u programu.

Python je promenio očekivanja koja imamo od programskih jezika. Pokazao je da jasnoća nosi tehničke, ekonomske i društvene posledice, jer razumljiv kod brže ulazi u upotrebu, lakše se proverava i sigurnije predaje novim saradnicima. U otvorenom softveru, gde se ljudi različitih jezika, kultura i nivoa iskustva susreću u istom projektu, čitljivost postaje oblik gostoprimstva. Ona čoveku omogućava da tuđu zamisao razume dovoljno dobro da je proveri, popravi, prilagodi i nastavi.

Najdublje Van Rossumovo nasleđe zato se nalazi u načinu na koji je približio izražajnu moć računara ljudskoj potrebi za jasnoćom. Python je učeniku omogućio da bez zastrašujuće prepreke načini prve korake, istraživaču da proveri zamisao, stručnjaku da automatizuje posao, a velikom timu da izgradi sistem čiji kod može da se deli i održava. Njegova jednostavnost proistekla je iz velikog dizajnerskog napora, iskustva ranijih neuspeha i spremnosti da se sluša zajednica. U toj vezi između čitljivosti, otvorenosti i saradnje nalazi se razlog zbog kojeg Python i dalje pripada učionici, laboratoriji, industriji i svetu veštačke inteligencije.

← Prethodna priča Povratak na sadržaj Sledeća priča →