BIZIT 11 - prvi dan

Od Beograda preko Larnake do Marsa

MySQL je baza podataka na kojoj počiva veliki deo savremenog Interneta. To je strateški alat koji se neprekidno razvija, a jedan od vodećih inženjera koji rade na ovom projektu je Siniša Milivojević.

PCPress.rs Image

Sa gospodinom Milivojevićem razgovarali smo pre 23. godine, a intervju je objavljen u PC#61. Tada je radio na velikom novitetu, ugnježdenim SQL upitima poznatijim kao subqueries. U međuvremenu su ugnježdeni upiti postali „obična stvar“, a javilo se i mnogo novih, još efektnijih ideja…

Kako ste počeli da se bavite razvojem softvera, a naročito softvera otvorenog koda?

Moj rad je počeo još davne 1992. godine. Kolega i ja smo koristili sav GNU softver koji je tada postojao, na raznim platformama, mada ne i na Linux-u koji je bio tek u povoju. Želeli smo da damo doprinos GNU projektu. Napisali smo niz makroa koji su omogućavali strukturno programiranje u asembleru, pri čemu smo pokrili Intel i SPARC arhitekture procesora. Zatim smo napisali biblioteku za projektovanje i generisanje dijaloga za unos podataka, prikaz podataka i izveštaje. To je radilo na MS-DOS-u i bilo kom Unix-u koji podržavao biblioteku kompatibilnu sa curses.

Radio sam u Švedskoj firmi TcX SE, koja je pravila MySQL. Bio je to romantični period, pa nam nije bilo teško da radimo i po 16 sati dnevno, šest dana nedeljno

Tokom godina su došle druge stvari. Razvio sam serverski program za rad sa faksovima. Zatim je došlo doba HTTP-a, pa sam dodao par modula za Apache server i proširio Web proxy, koji je tada imao puno smisla jer je većina Web stranica bila statična. Proxy-ju sam dodao i auditing funkcionalnost, tako da je rukovodstvo firme svaki dan moglo da pogleda koliko je koji zaposleni proveo vremena i potrošio megabajta šetajući po Internetu. Nisam preskočio Linux, gde sam kraće vreme radio na fajl sistemu, pa i diskutovao sa Linus-om.

Za većinu tih proizvoda sam koristio MySQL, pa sam počeo i njima da šaljem patch-eve koji rešavaju bagove i donose novu funkcionalnost. Ponudili su mi posao, pod uslovom da prođem testiranje. Testiranje je trajalo puna tri meseca! To je tada bilo pravilo za svakog ko bi se javio na konkurs. Devedeset posto prijavljenih nije nikada izdržalo više od dve nedelje rada. Ja sam za ta tri meseca napravio niz stvari, uključujući i novi klijent-server protokol, INSERT sa vise tuplova.

Kako je dalje tekao Vaš rad na MySQL-u?

Početak je bio predivan. Radio sam u Švedskoj firmi TcX SE, koja je pravila MySQL. Bilo nas je dvojica zaposlenih koji smo radili kompletan razvoj i tehničku podršku. Treći zaposleni je bio direktor, koji je vodio finansije, administraciju i sve ostalo. Bio je to romantični period, pa nam nije bilo teško da radimo i po 16 sati dnevno, šest dana nedeljno. MySQL je bio besplatan za sve operativne sisteme izuzev za Windows, gde se izvršni program naplaćivao po mašini. I pored takve politike, naša baza je svakog meseca donosila vrlo lep profit. Tih godina je tehnologija bila daleko značajnija od marketinga. Nije smela da izađe ni jedna podverzija za koju bismo sumnjali da sadrži bag.

PCPress.rs Image

Posle četiri godine takvog rada MySQL je postao besplatan za sve, što je odmah dovelo do gubitaka. Nakon toga je odlučeno da firmu preuzme profesionalni CEO, što je donelo gomilu negativnih pojava. Marketing je postao daleko bitniji od sadržaja. To je kulminiralo verzijom 5.0, koja je imala neviđeni broj bagova, bila je nestabilna… Nakon sedam godina takvog rada kupila nas je ogromna korporacija, koja je imala uhodana pravila i tehnologiju rada, što je rezultiralo vrlo stabilnim razvojem u poslednjih 11 godina. Pokazalo se da je olakšanje kada ti je čitav posao određen gomilom pravila. Slediš ih i ne brineš ni za šta drugo, osim za kvalitet posla koji obavljaš. Što se mene tiče, priča ima sretan završetak.

Ispričajte nam o nekom zanimljivom poslu na kome ste radili.

NASA nema veliki budžet, kada se poredi sa vojnim budžetom, pa gledaju da uštede na čemu god mogu. Tako su usvojili MySQL kao bazu za svoje rovere na Marsu. Ja sam napisao C API specijalno za tu misiju, na operativnom sistemu koji je isključivo bio namenjen za embedded sisteme. Testirali smo taj sistem na udaljeni (remote) način. Posle toga smo dobili informaciju da sledi sletanje rovera Spirit i da neko od nas iz tima treba da pomogne kod sletanja.

Relacione baze podataka će se prilagođavati računarstvu u cloud-u. Recimo clustering, umrežavanje puno nezavisnih čvorova koji će se predstavljati kao jedan

Na svu sreću, nisam morao da putujem u SAD (a ni na Mars), već sam učestvovao u sletanju od svoje kuće. Dežurao sam od 16 sati popodne i pratio na svom ekranu šta se dešava. U 5 sati izjutra, sledećeg dana, dobio sam zahtev da testiram radi li punjenje MySQL baze u Hjustonu od strane rovera na Marsu. Logovao sam se na rover, izvršio niz komandi i posmatrao šta se dešava na serveru u Hjustonu. Svetlost putuje sporo kada se radi o takvim rastojanjima, ali kada sam video da su svi probni podaci stigli, poslao sam poruku kontroli leta. Svi su skočili od radosti i saopštili mi da je moj posao završen. Otišao sam u krevet u 6 sati izjutra i supruga me je pitala „Da li je sleteo?“ na šta sam kroz san rekao samo „Da“. Probudio sam se u 17 sati, pojeo nešto i nastavio da radim. NASA je tada napravila Web stranicu zahvalnosti, pa sam se i ja našao na spisku.

Šta se u svetu relacionih baza podataka izmenilo u poslednjih dvadesetak godina?

Moram da priznam da mi se ne sviđa pravac razvoja koji je uzeo maha u zadnje vreme. Relacione baze podataka se prilagođavaju aplikacijama koje treba da pokrivaju hiljade ili milione vrsta proizvoda. Znamo koje su to e-commerce kompanije koje prodaju sve, od igle do lokomotive – knjige, elektroniku, nameštaj itd. Ne zaboravimo da je sve krenulo sa jezikom za pristup podacima i sa optimizacijom entiteta odnosno relacija. To je donelo puno toga pozitivnog, kao sto je specijalizacija SQL-a, bogatstvo novih načina pristupa i tome slično. Za mene su najkorisniji oni delovi teorije koji se bave normalizacijom relacija. Matematička teorija koja se nalazi ispod toga omogućava znatno brže izmene u entitetima, dakle dodavanje, izmenu, brisanje i tome slično.

Na sastanku komiteta za standardizaciju SQL-a pojavljuje se jedna od dve najznačajnije osobe iz tog komiteta i ushićeno izjavljuje da „Član svake relacije može biti neka nova relacija, čiji članovi takođe mogu biti neke treće relacije i tako dalje“ . Dakle, sve sto smo do sada uradili je smuti pa prospi. Zašto? Koliko firmi prodaje i cipele i računare i automobile i foto-aparate? Po mom mišljenju vrlo malo. Sa druge strane, ima proizvoda koji ne koriste SQL, a dobro zadovoljavaju te potrebe. Bilo je i pozitivnih promena. Pre svega, pronađeni su novi algoritmi koji koji omogućavaju stvaranje novih funkcionalnosti, bez usporenja
postojećih funkcionalnosti.

PCPress.rs Image

Relacione baze podataka će se prilagođavati računarstvu u cloud-u. Recimo clustering, umrežavanje puno nezavisnih čvorova koji će se predstavljati kao jedan. Kako je memorija sve jeftinija, pojavljuju se nove tehnike pretraživanja koje se ne zasnivaju na klasičnim stablima, čvorovima i listovima, već na novim metodama skeniranja memorije.

A razvoj programskih jezika?

Jezik C++ je doživeo pravu revoluciju, nažalost u totalno krivom smeru. Postaje sve komplikovaniji i glomazniji. Od verzije 11 do verzije 20 ima i taj gadan nedostatak da vuče sa sobom obaveznu kompatibilnost, što ga čini glomaznim i sporim. Postoje elementi tog jezika za koje danas postoje znatno bolja rešenja. Na primer, templates, auto_ptr i tako dalje. Tu je Linus Torvalds u pravu (harmful.cat-v.org/software/c++/linus).

Sve to važi za sistemski software. Ako pravite klasičnu GUI aplikaciju, C++ je dobar izbor. Ja sam još 1992. napisao tri GUI aplikacije u Borland C++-u koje su radile na OS/2. Onda se pojavio Windows i te aplikacije su za tri dana proradile i u tom okruženju. Slično sam uradio i u MySQL-u, 1998 i 1999, napravivši tada jedini alat za nadzor rada MySQL servera, Radio je na svakom Unix-u, Linux-u, Windows-u, starom Apple OS 9 i novom OS X.

Pratim razvoj najnovijeg standarda, C23. To je interesantno, kao da pratite fudbalsku utakmicu. Dolaze predlozi za nove ključne i rezervisane reči i čitate zašto se neki predlozi odbijaju, drugi prihvataju a treći se pojave u standardu nakon značajnih izmena

Jezik C je doživeo pravu renesansu. Dobio je puno sjajnih novih rešenja, standardnih funkcija i novu sintaksu. Koristim standard C17 (neki ga zovu C18) i pratim razvoj najnovijeg standarda, C23. To je interesantno, kao da pratite fudbalsku utakmicu uživo. Dolaze predlozi za nove ključne i rezervisane reči, svaka sa posebnom namenom, i čitate zašto se neki predlozi odbijaju, drugi prihvataju a treći se pojave u standardu nakon značajnih izmena.

Na čemu danas radite, šta razvijate?

Ovih dana najviše radim na rešavanju bagova u MySQL serveru. Sređivao sam neke bagove u klijent – server protokolu, jedan u sort-merge algoritmu, popravio sam izlaz iz upita u brzom modu… Radim i na razvoju alata za praćenje rada servera, što je dugoročan projekat. Aktivno učestvujem u definisanju novih mogućnosti našeg servera, kao i tehničkim diskusijama o najboljim rešenjima.

Koje razvojne alate koristite?

Ja radim na dve platforme, macOS-u i Linux-u. Na prvom koristim XCode i to pretežno CLang, kao i ugrađeni vizuelni dibager. CMake koristim znatno više nego Make, a od dibagera najviše koristim LLDB i GDB. Za oba imam složene konfiguracione zapise, koji mi omogućavaju da sa vrlo malo kucanja dobijem prilično opširan izveštaj o svemu što je bitno na nekoj liniji koda. Koristim LLVM kompajler za C/C++ na macOS-u. CLang i LLVM podržavaju aktuelni standard jezika C.

Od editora za izvorni kod, koristim XEmacs na Linux-u, koji je toliko modifikovan da se „normalni“ korisnik Emacs-a ne bi snašao. Na macOS-u nemam zadovoljavajući editor izvornog koda, pa sam prinuđen da sam menjam jedan editor, za koji imam kompletan izvorni kod. Za brzo editovanje pojedinačnih zapisa, kako programskih tako i konfiguracionih, koristim Joe’s editor.

Imate li neke savete za programere koji tek počinju?

Počeo bih od saveta koji nisam uspeo da primenim – treba imati najbolje moguće obrazovanje. Vrhunskih univerziteta je malo, ali ih ima i u zemljama koje nisu preskupe. Otići na studije ili postdiplomske studije na KTH (Švedska) ili Cirišku Politehniku bi svakom programeru dalo sjajnu osnovu.

PCPress.rs Image

Posle toga… „Učiti, učiti i samo učiti“. Krenuo sam u sistemski softver s nedovoljnim znanjem. Zato sam u prvih 10 godina, pored rada, učio 3 do 4 časa dnevno, svaki bogovetni dan, uključujući vikende i praznike. I danas učim svaki dan, ali se to svelo na jedan čas dnevno. Obavezno treba pročitati knjigu Design Patterns koji je napisala takozvana „četvoročlana banda“, Erich Gamma, Richard Helm, Ralph Johnson i John Vlissides. Posle je izašao još niz knjiga na istu temu, ali je original ostao najbolji.

Ustanovio sam da veština slepog kucanja mnogo pomaže. Uz nju, proces prenošenja ideja u bilo koju vrstu editora nekako ide sam od sebe. Meni je mnogo važnije kakvu tastaturu i kakav monitor koristim; snaga računara je manje bitna. Najviše volim ergonomske tastature sa klik tasterima. Međutim, mnoge od tih tastatura se brzo kvare. Zadnjih godina koristim isključivo Microsoft Sculpt. Nema klik tastere, ali ovi kontakt tasteri imaju jako kratak hod i prva tastatura je izdržala tri godine. Kako Microsoft ima običaj da izbacuje nove modele koji su gori od prethodnih, kupio sam dve rezervne Sculpt tastature, za svaki slučaj.

Koliko je COVID pandemija uticala na Vaš rad i, uopšte, na IT svet?

COVID pandemija je veoma uticala na moj život, ali nije uopšte uticala na moj rad. Ja radim od kuće još od 1997. godine. Sve to vreme mi je radna soba ujedno bila i kancelarija. Kada gledam širu sliku, ljudi su više vremena provodili kod kuće, zureći u ekran, što je rezultiralo zahtevima za nizom novih funkcionalnosti, kao i za poboljšanjem performansi. Ovo ne vazi samo za baze podataka, već i za sve ostale elemente u lancu.

Autor: Goran Dujkić

Facebook komentari:
Računari i Galaksija
Tagovi: , ,