BIZIT 11 - prvi dan

Pravi Programeri vs. Žderači Pite – RETRO

Bilo je jednom vreme pre društvenih mreža, Interneta, pre mobilnih telefona, pre tableta, pre BBS-ova, pre personalnih računara… Dobro, možda je postojao poneki personalni računar. Hakeri su i tada živeli, zabavljali se, tračali… I ovo je jedan od prvih “tračerskih” tekstova koji je stigao do naših krajeva. Objavljen je u Računarima 9, novembra 1985. godine (da, pre samo 30 godina i par meseci) i mnogo je čitan i komentarisan. Što bi se reklo današnjim jezikom, kao neka viralna sličica na Fejsu.

ibm370

 

Tekst se odnosio na one koji programiraju “na stari način”, u FORTRAN-u ili, još bolje, u asemberu – to su pravi programeri – i nove generacije koje programiraju strukturirano, na Pascal-u i sličnim jezicima – to su žderači pite. Uostalom, pročitajte…

UPDATE: Otkuda termin “Žderači pite”?


 

Hakerski manifest

Neki cinik je programiranje nazvao zamenom za seks, a ovaj tekst, koji tajno kruži među programerima širom sveta, prvim primerkom računarske pornografije. Poput svih škakljivih stvari, tekst sadrži zabranjena nemoralna razmišljanja kojima ispravan građanin – to jest, struktuirani programer – ne bi trebalo da se bavi.

U starim dobrim danima – “zlatnoj eri” kompjutera – bilo je lako razlikovati odra­sle muškarce od dečaka, Prave ljude od Žderača Pite. Pravi ljudi su bili oni koji su razumeli kompjutersko programiranje, a Žderači Pite nisu. Pravi Programer je govorio DO 10 I=1, 10 i ABEND (govorilo se, znate, velikim slovima). Ostatak sveta govorio je ovako: “Meni su kompjuteri suviše komplikovani”; ili: “Ne mogu da uspostavim od­nos sa kompjuterima, jer su tako bezlični”. U jednom ranijem radu ukazano je da Pravi ljudi nisu ni “uspostavljali odnos”, niti su se plašili “bezličnosti”.

Ali, kao i uvek, vremena se menjaju. Danas živimo u svetu u kome male stare dame mogu da imaju kompjuter u svojoj mikrotalasnoj peći, dvanaestogodišnji dečaci mogu da izbace Prave ljude iz vode igrajući Asteroide i Pakmena, a svako može da kupi, pa čak i da razume svoj ama-baš-sasvim lični kompjuter. Pravi Pro­gramer je u opasnosti da postane iščezla vrsta, da bude zamenjen studentima koji imaju TRASH-80 [popularno ime za TRS-80].

Postoji očigledna potreba da se ukaže na razlike između tipičnog visokoškolskog mladog igrača Pakmena i Pravog Progra­mera. Ako se ova razlika razjasni, to će onim prvima pružiti nešto čemu mogu da teže – pravi uzor, sliku oca. Takođe će pomoći da se objasni poslodavcima Pravih Programera zašto bi bilo pogrešno da ih zamene dvanaestogodišnjim igračima Pakmena (uz znatnu uštedu u plati).

Jezici

Pravi Programer može najlakše da se razlikuje od gomile po programskom jeziku koji koristi. Pravi Programer koristi fortran, a Žderač Pite upotrebljava paskal. Niklaus Virt (Niclaus Wirth), projektant paskala, bio je jednom upitan: “Kako izgovarate svoje ime”? Odgovorio je: “Možete me zvati po imenu, izgovarajući ga kao Virt, ili po vrednosti, kao Vort (worth = vredan) Na osnovu ovog komentara odmah se zna da je Nikolas Virt Žderač Pite. Jedini mehanizam prenošenja parametara u pro­grame koje Pravi Programeri prihvataju je POZOVI POTPROGRAM – PRENESI VREDNOST – VRATI SE, kao što je ugrađeno u IBM-370 FORTRAN-G i slične kompajlere. Pravim Programerima nisu potrebne sve apstraktne koncepcije koje je Virt izmislio da bi obavili svoj posao! Oni su savršeno srećni sa matorim FORTRAN IV kompajlerom i pivom.

  • Pravi Programeri obrađuju ulančane liste na fortranu.
  • Pravi Programeri manipulišu sa stringovima na fortranu.
  • Pravi Programeri rade poslovne proračune (ako ih uopšte rade) na fortranu.
  • Pravi Programeri razvijaju veštačku inteligenciju na fortranu.

Ako nešto ne možete da uradite na fortranu, učinite to na asembleru. A ako ne možete na asembleru, onda sve to i nije vredno truda.

Struktuirano programiranje

Akademici u nauci o kompjuterima ušli su u struktuirano programiranje tek u poslednjih nekoliko godina. Oni smatraju da se programi mnogo lakše razumeju ako programer koristi neke naročite jezičke konstrukcije i postupke. Oni se, naravno, ne slažu u pogledu vrsta tih konstrukcija i ilustruju svoje ideje primerima od kojih svaki staje na jednu stranu nekog opskur­nog časopisa – jasno, jedan primer nije dovoljan da ma koga u nešto uveri. Kad sam napustio školu, mislio sam da sam najbolji programer na svetu. Mogao sam da napišem nenadmašan program krstić-kru­žić, koristeći pet različitih kompjuterskih jezika i sastavljam programe od 1.000 redo­va koji FUNKCIONIŠU. (Doista!)

Zatim sam prešao u stvarni svet. Moj prvi zadatak u stvarnom svetu bio je da pročitam i shvatim program od 200.000 linija na fortranu, a zatim to ubrzam sa faktorom dva. Svaki Pra­vi Programer će ti objasniti da svo struktuirano programiranje na svetu neće pomoći da rešiš takav problem, jer je za to potreban talenat. Neka letimična zapažanja o Pravim Programerima i struktuiranom programiranju:

  • Pravi Programeri se ne plaše da koriste GOTO.
  • Pravi Programeri mogu da pišu pet strana duge DO petlje a da se ne zbune.
  • Pravi Programeri vole aritmetičke IF naredbe, koje program čine zanimljivim.
  • Pravi Programeri pišu samomodifikujući kod, naročito ako mogu da prištede 20 nanosekundi u sredini tesne petlje.
  • Pravim Programerima nisu potrebni komentari, jer je kod očigledan.

realprogrammers

Pošto FORTRAN IV nema struktuirani IF, DO … WHILE, ili CASE, Pravi Programeri ne treba da brinu što ih ne koriste. Osim toga, kada je potrebno, ovo možete da simulirate korišćenjem naredbi poput GO­ TO A.

Strukturiranje podataka je takođe dobilo dosta publiciteta. Apstraktni podaci, struk­ture, pointeri, liste i stringovi postali su u nekim krugovima popularni. Virt (gore-pomenuti Žderač Pite) je doista napisao čitavu jednu knjigu u kojoj je tvrdio da možete da napišete program zasnovan na strukturama podataka, umesto obrnuto. Kao što svi Pravi Programeri znaju, jedina upotrebljiva struktura podataka je matrica. Stringovi, liste, strukture, skupovi – sve su to specijalni slučajevi matrica i mogu lako da se tretiraju na taj način, bez upropašćivanja vašeg programskog jezika svakovrsnim komplikacijama. Najgora stvar sa kitnjastim tipovima podataka je što morate da ih deklarišete, a pravi programski jezici, kao što svi znamo, imaju implicitno deklarisanje koje se zasniva na prvom slovu imena promenljive.

Operativni sistemi

Koju vrstu operativnog sistema koristi Pravi Programer? CP/M? Bože sačuvaj… na kraju krajeva, CP/M je u osnovi operativ­ni sistem za klince. Čak i male stare dame i osnovci koriste CP/M.

Unix je mnogo složeniji (tipi­čan Unix haker nikada ne može da se seti kako se naredba PRINT zove ove sedmice), ali kada ga se latite, i to svim srcem, Unix postaje divna igra. Ljudi ne rade ozbiljne poslove na Unix sistemima – oni samo razmenjuju kompjutersku poštu preko UUCP mreže i pišu igre-avanture.

Ne, Pravi Programeri koriste OS/370. Dobar programer zna šta je IJK305I greška bez zavirivanja u JCL priručnik. Pravi Programer može da piše JCL i bez korišćenja priručnika! Stvarno izvanredan Pravi Programer može da bez heksadecimalnog kalkulatora otkrije bagove zakopa­ne u skladištu od šest megabajta (svojim sam to očima video).

OS/370 je doista izvanredan operativni si­stem. Moguće je upropastiti mesec dana posla jednim greškom otkucanim blanko simbolom, pa se u poslu programiranja savetuje oprez. Najbolji pristup sistemu je bušač kartica. Neki tvrde da postoji sistem za rad u raspodeljenom vremenu koji se izvršava na OS/370, ali sam posle pažljivog proučavanja došao do zaključka da su bili u zabludi!

Programske alatke

Kakvu vrstu oruđa koristi Pravi Progra­mer? U teoriji, on svoje programe može da izvršava unoseći ih na konzoli kompju­tera. U ono vreme kada su računari imali konzole, to se povremeno zaista i radilo. Tipični Pravi Programer je znao ceo Boot napamet u heks-kodu i ukucavao ga kad god bi na njegov program uništio. U to doba memorija je bila stvarno memorija – nije odlazila u nepovrat kad nestane struje. Danas memorija zaboravi stvari kada to najmanje želite, ili ih se seti kada bi već odavno bilo najbolje da su zaboravljene.

Legenda kaže da je Seymore Cray, pronalazač superkompjutera “Krej 1” i većine računara firme Control Data, ukucao prvi operativni sistem na konzoli CDC7600 iz glave čim je prvi put uključen u struju. Sejmor je, ne treba to ni reći, Pravi Programer.

Jedan od mojih omiljenih Pravih Progra­mera bio je sistem programer firme Texas Instruments. Jednog dana pozvao ga je korisnik izdaleka čiji je sistem krahirao usred presnimavanja jednog važnog rada. Džim je bio u stanju da kvar popravi telefonom, tako što je korisniku rekao koje I/O naredbe za disk da ukuca na konzoli da bi korigovao sistemske tablice čiji je heksadekadni sadržaj čitan preko telefona. Naravoučenije: mada Pravi Pro­gramer u svoj komplet alatki obično uklju­čuje bušač kartica i linijski štampač, on, u slučaju nužde, može da se snađe samo sa konzolom i telefonom.

Kod nekih kompanija editovanje teksta se više ne obavlja tako što deset inženjera čeka na red ispred 029 bušaća kartica. U stvari, zgrada u kojoj sam radio nije posedovala ni jedan bušač kartica! Pravi Programer je u ovakvoj situaciji morao da obavi posao posredstvom tekst-editora. Većina sistema nudi nekoliko tekst editora i Pravi Programer mora da bude pažljiv i pokupi onaj koji odražava njegov lični stil. Mnogi ljudi veruju da su najbolji tekst editori na svetu napisani u istraživačkom centru Xerox Palo Alto za upotrebu na njihovim računarima “alto” i “dorado”. Na nevolju, nikada nijedan Pravi Programer nije kori­stio kompjuter čiji se operativni sistem naziva “ćaskanjem” (SmallTalk), i zasigurno nije sa kompjuterom razgovarao pomoću miša.

Neki od koncepata iz ovih Xerox edi­tora bili su ugrađeni u editore koje su pogonili operativne sisteme sa mnogo ra­zumnijim nazivom – EMACS i vi, da nave­demo dva. Problem sa ovim “vidite ono što ćete dobiti” jeste jednako loša koncepcija kod tekst editora kao i kod žena. Ne, Pravi Programer želi “Tražili ste, dobili ste” tekst editor… komplikovan, tajanstven, moćan, nemilosrdan, opasan – TECO, da budemo precizni.

Uočeno je da sekvenca TECO komand­nih kodova mnogo više podseća na smetnje u vezama nego na razložan tekst. U jednoj od najzabavnijih igara u kojoj se koristi TECO treba da otkucate svoje ime kao direktnu komandu i pokušate da pogodite šta ona radi. Gotovo svaka greška u kucanju dok koristite TECO će po svoj prilici razoriti vaš program ili, što je još gore, ubaciti suptilne i misteriozne bagove u potprogram koji je ranije funkcionisao.

Iz ovog razloga, Pravi Programeri nerado prepravljaju fortran program koji gotovo funkcioniše. Po njihovom uverenju, lakše je krpiti objektni kod direktno, koristeći kra­san program nazvan SUPERZAP (ili njego­ve ekvivalente na mašinama koje nisu IBM-ove). Ovo tako dobro dejstvuje da mnogi izvršni programi na IBM sistemima više i nemaju vezu sa originalnim izvornim fortran kodom. Kad dođe vreme da se prepravi pro­gram poput tog, svakom šefu će odmah pasti na um da je najbolje da na taj posao pošalje Pravog Programera – nijedan struktuirani programer, Žderač Pite, ne bi znao odakle da počne! To se naziva “sigu­ran posao”.

Pravi Programeri NE koriste neke alatke za programiranje:

  • Fortran pretprocesore kao što su MORTRAN i RATFOR. Kuhinjska majstorija programiranja, odlična za pravljenje pi­te. Videti prethodni komentar o struktuiranom programiranju.
  • Debagere izvornog koda. Pravi pro­grameri umeju da čitaju iz jezgara magnet­ne memorije.
  • Kompajlere koji kontrolišu dimenzije matrica. Oni guše kreativnost, razaraju naj­ veći deo zanimljivih upotreba naredbe EQIVALENCE i čine nemogućim modifikovanje koda operativnog sistema korišćenjem negativnih indeksa. Najgore od svega, provera dimenzija je bezuspešna!
  • Sisteme za šifrovanje izvornog koda. Pravi programer koristi bušene kartice, pa može da čuva svoj program zaključan u ormanu.

Pravi Programer na delu

Gde radi tipični Pravi Programer? Koja vrsta programa je vredna napora tako talentovanog čoveka? Možete biti sigurni da nijednog Pravog Programera nećete zateći u pisanju programa na kobolu ili razvrsta­vanju pošte za neki časopis. Pravi Programer hoće zadatke koji doslovce potresaju svet.

  • Pravi Programeri rade za Nacionalnu laboratoriju Los Alamos, gde pišu simulaciju atomskih eksplozija na superkompjuteru Krej 1.
  • Pravi Programeri rade za CIA, gde dešifruju sovjetske poruke.
  • Zahvaljujući upravo naporima hiljada Pravih Programera koji rade za NASA, ame­rički momci su pre Sovjeta stigli na Mesec i vratili se.
  • Pravi Programeri rade za Boing gde projektuju operacione sisteme za krstareće rakete.

Neki od Pravih Programera koji ulivaju najveće strahopoštovanje rade za Labora­toriju za mlazni pogon u Kaliforniji. Mnogi od njih znaju napamet čitav operativni sistem na letelicama “Pionir” i “Vojadžer”. Kombinovanjem opširnih fortran programa na tlu i malih mašinskih programa na letelici, oni su u stanju da izvršavaju neverovatne podvige u navigaciji i improvizaciji: da pogode deset kilometara širok “prozor” na Saturnu posle šest godina boravka u kosmosu, ili poprave (odnosno zaobiđu) oštećene senzorske platforme, radio-uređaje i baterije. Jedan Pravi Programer uspeo je, navodno, da program za analizu spektra ugura u nekoliko stotina bajtova neiskorišćene memorije na letelici “Vojadžer”, pomo­ću njega pretraži prostor i fotografiše novi Jupiterov mesec!

Kao što se zna, mnogi Pravi Programeri na svetu rade za američku vladu… uglav­nom za Ministarstvo odbrane. Tako i treba da bude. Odnedavno, međutim, nad hori­zontom Pravih Programera nadvio se crni oblak. Izgleda da su neki Žderači Pite na visokim mestima u Ministarstvu odbrane odlučili da svi budući odbrambeni programi budu pisani na nekakvom potpuno objedi­njenom jeziku nazvanom ADA. Jedno vreme je izgledalo da će ADA imati sudbinu da postane jezik koji će biti u suprotnosti sa svim pravilima Pravog Programiranja – je­zik sa strukturama, jezik sa tipovima poda­taka i obaveznim tačkama i zarezima iza svake naredbe. Ukratko, jezik projektovan da onesposobi kreativnost tipičnog Pravog Programera. Srećom, jezik koji je prihvatilo Ministarstvo odbrane ima dovoljno zani­mljivih karakteristika da postane pristupačan: neverovatno je složen, uključujući metode za zamajavanje sa operativnim si­stemom i primenljivom strukturom memori­je. Što je najvažnije, Edgar Dikstra ne voli jezik ADA (Siguran sam da znate da je Dikstra napisao rad “GOTO naredba se smatra štetnom” – kamen međaš u metodologiji struktuiranog programiranja, kome aplaudiraju programeri u paskalu i drugi Žderači Pite). Osim toga, odlučni Pravi Programer može da piše fortran programe na bilo kom jeziku.

Pravi Programer ponekad nalazi kom­promis sa svojim principima i radi na nečemu malo trivijalnijem od razaranja ži­vota za koji znamo, pod uslovom da na taj način može dovoljno da zaradi. Postoji nekoliko Pravih Programera koji prave video igre na Atariju, na primer (ali ih ne igraju … Pravi Programer uvek zna kako da bije mašinu! U tome nema izazova). Svako ko radi za “Lukas Film” je Pravi Programer – bilo bi glupo odbiti novac od pedeset miliona ljubitelja “Zvezdanih ratova”. Udeo Pravih Programera u kompjuter­skoj grafici je nešto niži nego što je uobiča­jeno, pretežno zbog toga što još niko nije otkrio za šta da je koristi.

Budućnost

A šta da se kaže za budućnost? Pravi Programeri su dosta zabrinuti zbog toga što poslednja generacija kompjuterskih programera nije stasala sa istim pogledima na život kao njihovi stariji. Mnogi od njih nisu nikada videli kompjuter sa konzolom. Teško da iko ko danas diplomira može da radi heks-aritmetiku bez kalkulatora. Svrše­ni studenti su ovih dana neki softverski mekušci: asembleri, disasembleri i dibageri su ih odvojili od programiranja na izvornom nivou, tekst editori im prebrojavaju zagra­de, a kompajleri ih štite od svih mogućih grešaka. Što je najgore, neki od navodnih “kompjuterskih naučnika” uspevaju da steknu diplomu a da i ne nauče fortran. Jesmo li mi osuđeni da postanemo industrija Unix hakera i paskal programera?

Iz sopstvenog iskustva mogu jedino da saopštim da je budućnost svugde svetla za Prave Programere. NI OS/370 ni fortran ne pokazuju znake izumiranja uprkos svim naporima paskal programera širom sveta. Čak su i suptilniji trikovi kao što je dodava­nje DO-WHILE i IF-THEN-ELSE-ENDIF struktura fortranu omanuli. Oh, si­gurno, neki kompjuterski torbari izašli su sa FORTRAN 77 kompajlerima, ali svaki od njih ima načina da se vrati na FORTRAN 66 jednostavnim izbacivanjem jedne kontrolne kartice.

Čak i Unix za Prave Programere ne mora da bude tako loš kao ranije. Posled­nja verzija Unix-a ima sve potencijale ope­rativnog sistema vrednog Pravog Progra­mera: dva različita i suptilno nekompati­bilna korisnička interfejsa, tajanstven i komplikovan drajver za tastaturu i virtualnu memoriju. Ako zanemarite činjenicu da je “struktuiran”, Pravi Programeri cene čak i jezik nazvan C. Na kraju krajeva, tu ne postoji provera tipova, imena promenljivih su sedam (deset? osam?) znakova duga, a ubačena je i dodatne premija u vidu pointera – kao kad bi se najbolji delovi fortrana i asemblera stekli na jednom mestu. Da i ne pominjemo razne kreativne upotrebe naredbe DEFINE.

Ne, budućnost uopšte nije loša. U poslednjih nekoliko godina popularna štampa donosila je komentare o novom soju hakera koji napuštaju mesto na Stanfordu i MIT-u i odlaze u stvarni svet. Na osnovu svih činje­nica može se reći da duh Pravog Programi­ranja živi u tim mladim ljudima. Sve dok postoje problematični ciljevi, bizarni bagovi i nerealni rasporedi vremena, postojaće i Pravi Programeri spremni da uskoče i rešavaju Problem, ostavljajući dokumentaciju za kasnije. Neka živi fortran!

Napomena

Ovaj tekst prepisan je sa papira koji je, nepotpisan, kružio po Bedfordu. Ima indicija da je autor Unix haker, i da mu je korisničko ime avsdS:mark. Zna li neko odakle ovo potiče?

 


 

Uz današnji Internet lako je naći ovaj tekst u originalu, recimo ovde, e sad ko je autor… izgleda da se i dan-danas ne zna 🙂

UPDATE

PS Kolega Zdravko Smilevski je na Facebook-u lepo dopunio ovu priču objasnivši termin Quiche Eaters koji je preveden kao Žderači pite. Quische je francuska pita koja je postala veoma popularna u Americi par godina pre nego sto je napisana knjiga Real Men Don’t Eat Quiche, na šta aludira ovaj tekst. Strukturirano programiranje je “nova moda” koju pravi programeri treba da odbace, kao što pravi muškarci odbacuju fancy francuske pite.

Facebook komentari:
Računari i Galaksija

Dejan Ristanović

www.dejanristanovic.com

1 thoughts on “Pravi Programeri vs. Žderači Pite – RETRO

  • 14. 03. 2016. at 16:00
    Permalink

    Može li neko da preporuči programera za fortran? Hvala.

Comments are closed.