Kako je nastavnik iz 70-ih izumeo C, jedan od najuticajnijih programskih jezika

Ako ste mislili da je C vrsta jezika koju znaju samo šezdesetogodišnji belci, grešite. Da, to je dinosaurus među današnjim programskim jezicima, ali i dalje je vrlo aktivan u više oblasti nego što možete da pomislite. Kao prvo , Unix je napisan u C- u. Prvobitno napisan u asembleru, jezgro Unix je prepisano u C davne 1973. godine. Zbog toga je Unix mogao da se prenosi na različite uređaje, što mu je pomoglo da postane popularan. Da nije bilo toga, ne bismo imali sve ove prelepe operativne sisteme današnjice – pomislite na Linux , Mac OS X , Android , iOS , Chrome OS i sve ono što je potrebno za rad vašeg rutera.

Ako ste bilo kada radili sa bazama podataka, definitivno ste koristili i C, čak iako niste bili svesni toga! Sistemi za upravljanje bazama podataka, kao što su Oracle Database, MySQL i drugi, napisani su u C- u. Većina njih je od tada prepisana na C++ , koji je, takođe, direktni potomak C- a. Pa čak iako za sve što radite koristite samo Python, verovatno sve vreme koristite C. Ako se ne odlučite za Jython, IronPython ili PyPy, koristite CPython. To je originalna primena Pythona : pišete Python kôd, ali prevodilac – program koji prevodi vaš kôd u nešto što mašina razume – zapravo je ispisan C.

Ukratko, C je svuda. Nije to samo veliki debeli dinosaurus koji je nekako uspeo da preživi u modernom dobu. Neverovatno je uspešan jer je izuzetno koristan. Zbog toga biste mogli da se iznenadite kad vam kažemo da C do takvih visina nije došao preko niza uspešnih pokušaja, već preko desetogodišnjeg niza neuspeha. Možda ne bi ni postojao da nije bilo nastavnika koji je voleo da programira za vreme raspusta.

Nastavnik koji je bio prijatelj Alana Tjuringa

Upoznajte Kristofera Strejčija. Rođen je 1916. godine u uticajnoj britanskoj porodici, studirao je na Univerzitetu Kembridž i tamo upoznao mnoge poznate naučnike. Međutim, činilo se da je imao dugogodišnju tendenciju zanemarivanja studija, a njegove rezultate na ispitima ne treba ni spominjati. Verovatno zbog toga nije nastavio sa studijama kao mnogi njegovi vršnjaci. Umesto toga, ratne godine proveo je u istraživanjima upotrebe radara. Posle toga, zaposlio se kao nastavnik u školi i radio sve do 1951. godine.

Život mu se potpuno promenio kada ga je prijatelj upoznao sa britanskom Nacionalnom fizičkom laboratorijom. Strejči je školske raspuste i praznike provodio u laboratoriji sa Pilot ACE , prvim računarom sa automatskom računarskom mašinom Alana Tjuringa. Strejči je imao nameru da nauči računar kako da igra dame. Rešavanje takvog logičkog zadatka bilo je izuzetno u vreme kada su se računari koristili prvenstveno za brzo rešavanje jednačina. U prvom pokušaju nije uspeo jer Pilot ACE nije imao skladišni kapacitet za obavljanje takvog zadatka. Možda vam veličina memorije izgleda smešno, što je sasvim u redu, ali ne zaboravite, to su bile pedesete.

Strejči je uspeo da nabavi bolju mašinu, Ferranti Mark I, preko svog starog drugara Alana Tjuringa. Uz savete svog prijatelja, konačno je uspeo. Vest o tom neobičnom dostignuću brzo se proširila, a Strejči je uskoro dobio poziv da promoviše razvoj informatike za britansku vladu.

Tri Dejvida žele jezik

U međuvremenu, u Kembridžu, univerzitet želeo da kupi novi računar, što je u to vreme bio veliki poduhvat, a pošto je računar bio potpuno nov, razmišljali su o tome da izmisle novi jezik za njega. Bilo je jasno da je novom računaru potreban novi operativni sistem, ali ne nužno i novi jezik. Ipak, trojica istraživača, Dejvid Hartli, Dejvid Viler i Dejvid Baron, želeli su da se zabave stvarajući novi jezik. Pored toga, trojica Dejvida nisu pitali buduće korisnike o prednostima i nedostacima starih jezika. Na primer, Fortran IV se već tada koristio i bio bi pogodan za taj posao. Trojica Dejvida su mislili da bi bez problema mogli da naprave nešto bolje. Nazvali su ga CPL , skraćenica od Cambridge Programming Language, da bi kasnije promenio naziv u Combined Programming Language, pošto se nekoliko istraživača sa univerziteta u Londonu pridružilo trojici Dejvida. Prisećajući se tih dana, Dejvid Hartli kaže da je stvaranje novog jezika bila „totalna budalaština“.

Jezik se suviše zakomplikovao

Možda je postavljanje Kristofera Strejčija na čelo projekta, takođe, bila „totalna budalaština“. Nije se moglo sumnjati u njegove računske sposobnosti, ali izgledao je toliko naklonjen projektu da nije mogao da bude nepristrasan. Zbog toga se razvojni tim više bavio manjim problemima, umesto da se efikasno uhvati u koštac sa velikim. Uskoro je CPL bio poznat kao Christopher’s Programming Language.  Zbog svih sitnih detalja koje je tim primenio na Strejčijevo insistiranje, jezik je postao previše komplikovan. Kada su želeli da napišu kompajler, pokušaj i je propao, jer je izlazni mašinski kôd bio neefikasan.

Jezik je postao suviše jednostavan

Kada je Strejči otišao da nekoliko meseci provede na MIT- u, Martin Ričards se pridružio timu za razvoj CPL i odlučio da ga pojednostavi. Cilj je, naravno, bio napraviti nešto što daje dobar kompajler i efikasan mašinski kôd. Tako je Ričards napravio B CPL od CPL -a – Basic CPL . To je na neki način bio novi jezik – ali i priznanje da je stari CPL propao. Kada se, nešto kasnije, pridružio Strejčiju na MIT- u, kolega iz Bell Labs- a je došao da vidi šta njih dvojica rade. Njegov kolega, Ken Tompson, radio je na Multics- u, drugom operativnom sistemu od koga je trebalo da se odustane. (Na kraju je preživeo, ali to je druga priča.)

Tompson se, konačno, posvetio razvoju Unixa, jednog od najčešće korišćenih operativnih sistema do danas. Uspeo je da instalira Unix na mali računar, PDP- 7, ali BCPL je i dalje bio previše obiman da bi mogao da stane na tu istu mašinu. Ostavio je samo ona svojstva za koja je smatrao da su najvažnija, a novi jezik nazvao je B .

C je rođen – konačno

Denis Riči je, 1971. godine, usvojio B i dodavao mu funkcije da bi mogao da se koristi na moćnijim računarima. Taj jezik nazvao je NB – New B.  Tompson je u međuvremenu radio na prepisivanju Unixa na jezik visokog nivoa. U to vreme je većina operativnih sistema još uvek bila napisana na asembleru i zbog toga je svako morao da razvije novi operativni sistem kad god bi kupio novi računar. Za razliku od toga, Unix visokog nivoa radio je na bilo kom računaru. Tompson je pokušao da koristi NB za taj zadatak, ali nije uspeo. Riči i on su zatim dodavali jedno po jedno svojstvo u NB dok nije uspeo da napiše Unix. Treba naglasiti da su dodali strukture, kojih, u to vreme, nije bilo ni u jednom drugom jeziku. Pošto su strukture bile dovoljno velika promena, njih dvojica su mogli da objave da su napravili novi jezik. Tako je, 1973. godine, rođen C!

Sporo širenje požara

Brojni tvorci C- a – iako sigurni u sebe – nisu mogli da predvide da će se jezik toliko brzo proširiti. Jedan od faktora uspeha mogao je biti taj što je mini računar PDP-11 bio izuzetno popularan. Bilo je jeftino da se na njega instalira Unix, a C je došao sa Unixom.  S obzirom na to da se u to vreme većina računara koristila na univerzitetima, mnogi studenti su posle diplomiranja bili upoznati sa C- om, što mu je pomoglo da se proširi u mnogim privrednim granama, ali i mnogim kursevima na univerzitetima. Konačno, knjiga Programski jezik C, Brajana Kernigana i Denisa Ričija, bila je tanka i sažeta, posebno za priručnik o programskom jeziku. To je dodatno prokrčilo put za početnike.

Uprkos godinama, C je možda vitalniji od vašeg dede

Na kraju, C je uspeo iako je njegov razvojni put bio neobično trnovit. Uspeh ovog programskog jezika rezultat je neuspešnog razvoja CPL -a koji je bio previše komplikovan, B CPL -a koji je bio previše jednostavan, još jednostavnijeg B-a, i malo složenijeg, ali ipak jednostavnog NB-a. Da Tompson nije sebi postavio zadatak da prepiše Unix, C možda nikad ne bi ni nastao. Bivši nastavnik Kristofer Strejči je na početku suviše iskomplikovao mnogo što-šta i tako izazvao niz neuspeha. Ipak, bez njih, C možda ne bi ugledao svetlo dana. Karakteristike C- a su svuda. Veliki koncepti, kao što su strukture, ali i male stvari, kao što je ++ i operator povećanja i smanjenja, danas se mogu naći u mnogim jezicima. Ne bi ih bilo bez C- a. Njegovi potomci – C++ , C#, i tako dalje, takođe, ne bi postojali.

To je što se tiče naslednika C- a. Takođe je izuzetno brz i siguran jezik, zbog čega se neizbežno koristi u složenim oblastima, kao što su robotika, računarski vid, IoT i još mnogo toga. To ne znači da se i jezici, kao što je Python, ne koriste, posebno u početku. Ali završni korak – ona fina glazura – često je napisana u C- u ili C++ . Da, C je dinosaurus ako je kriterijum godište. Ipak, mogu da se opkladim da je spretniji i okretniji od vašeg dede! Možda čak i od vašeg unuka!

6421-kako-je-nastavnik-iz-70-ih-izumeo-xa-c-xa-jedan-od-najuticajnijih-programskih-jezika