Opravdov Programtoi neuvaj Pascal
(Tento dopis redakci vyel v asopise Datamation, ronk 29, slo 4, ervenec 1983. Autorem je Ed Post, Tektronix, Wilsonville, Oregon, USA)
Za starch dobrch as - ve zlat e pota - bylo snadn odliit mue od chlapc (v literatue oznaovanch "Opravdov Mui" a "Pojdai Kol"). Opravdov Mui byli ti, kte skuten rozumli programovn pota. Pojdai Kol byli ti, co tomu nerozumli. Opravdov potaov programtor kal vci jako "DO 10 I=1,10" a "ABEND" (vyslovoval to velkmi psmeny, abyste rozumli) a zbytek svta kal vci jako "potae jsou pro mne pli komplikovan" a nebo "nemohu se s potaem st, je tak neosobn". (V pedchoz prci [1] jest ukzno, e Opravdov Mui nejsou vzni na nic, neboj se bt neosobn.)
Ovem, jak je zvykem, asy se mn. Musme se smit se svtem, v nm me zskat pota mil star dma ve sv mikrovlnn troub a dvanctilet chlapec poraz Opravdovho Mue v he "Water Playing Asteroids" nebo "Pac-Man" a osobn pota si me koupit kad a tak mu me porozumt. Opravdov Programtoi jsou ohroeni vyhynutm, existuje nebezpe, e budou nahrazeni vysokokolskmi studenty s TRASH-80.
Je zejm, e je poteba ukzat rozdl mezi typickm, vysokokolsky vzdlanm hrem Pac-Mana a Opravdovm Programtorem. Uke-li se tento rozdl dostaten jasn, d se dtem ance, aby aspirovaly bt podobny svm otcm. Pome to rovn zamstnavatelm Opravdovch Programtor tm, e jim to ozejm chybu, kter se dopoutj, kdy nahrazuj Opravdov Programtory ve svm tmu mladmi hri her (a et tm platy).
Jazyky
Nejsnadnj zpsob, jak zjistit, kdo je v davu Opravdov Programtor, spov ve zjitn, jak programovac jazyk pouv. Pouv Fortran. Pojdai kol pouvaj Pascal. Niklaus Wirth, tvrce Pascalu, pi jedn sv pednce byl dotzn, jak vyslovovat jeho jmno. Odpovdl: "Mete m volat jmnem (vyslovte Virt') a nebo hodnotou (Worth)". Z tto poznmky je zejm, e N. Wirth je pojda kol. Opravdov Programtor uznv jedin mechanismus pedvn parametr "volnm hodnotou pi nvratu" tak, jak je to implementovno v kompiltorech IBM/370 Fortran G a H. Opravdov Programtor nepotebuje ke sv prci vechny tyto abstraktn pojmy, je pln astn, m-li drova ttk, kompiltor Fortran IV a pivo.
* Opravdov Programtor zpracovv seznamy ve Fortranu.
* Opravdov Programtor pracuje s texty ve Fortranu.
* Opravdov Programtor e zpracovn hromadnch dat (kdy u to dl) ve Fortranu.
* Opravdov Programtor e umlou inteligenci ve Fortranu.
Nejde-li nco ve Fortranu, napi to v assembleru. Nejde-li to v assembleru, nestoj to za nmahu.
Akademici v potaovch vdch v poslednch letech tvo vyjetou kolej "strukturovanho programovn". Tvrd, e programm lze snze porozumt, kdy se pi jejich psan pouvaj nkter speciln konstrukce a postupy. Ne vichni se ovem shodnou na tom, kter konstrukce; a pklady, kter pouvaj, aby ukzali svj konkrtn pohled na vc, se vdycky vejdou na jedinou strnku asopisu - jsou nepesvdiv. Kdy jsem opustil kolu, myslel jsem si, e jsem nejlepm programtorem na svt. Uml jsem napsat neporaziteln tic-tac-toe program, pouvat pt rznch programovacch jazyk a pst tiscidkov programy, kter pracovaly. (Opravdu!) Pak jsem piel do Opravdovho Svta. Mm prvnm kolem v Opravdovm Svt bylo pest si program ve Fortranu, kter ml 200 000 dk, porozumt mu a pak ho dvakrt urychlit. Kad Opravdov Programtor vm ekne, e veker Strukturovan Kdovn v celm svt vm v takovm ppad nepome - chce to talent. Nebo:
* Opravdovm Programtorm nevad pouvat GOTO.
* Opravdov Programtor me napsat cyklus DO na pt stran a nesplete se.
* Opravdov Programtor miluje aritmetick IF, dl program zajmavj.
* Opravdov Programtor pe samomodifikujc se programy; zvlt v tom ppad, kdy me uetit 20 nanosekund v nejvnitnjm cyklu.
* Opravdov Programtor nepotebuje poznmky - vlastn kd je zejm.
* Ponvad Fortran neobsahuje strukturovan IF, REPEAT...UNTIL, ani CASE, Opravdov Programtor nezn starosti s jejich pouitm. Krom toho, mohou bt v ppad poteby napodobeny pomoc GOTO s promnnm clem.
Abstraktn datov typy, struktury, ukazatele, seznamy, etzce - to jsou pojmy v jistch kruzch pomrn populrn. Wirth (ve zmnn Pojda Kol) skuten napsal celou knihu [2] o tom, jak pst programy zaloen na datovch strukturch a ne jinak. Jak v kad Opravdov Programtor, jedinou uitenou datovou strukturou je pole. etzce, seznamy, struktury, mnoiny - to ve jsou zvltn ppady pol a lze s nimi tak zachzet a nen nutn v programovac jazyk s nimi komplikovat. Nejhor vc na pedstav datovch typ je, e je nutno je deklarovat, zatmco jazyky pro Opravdov Programovn, jak vichni znme, maj implicitn urovn typu zaloen na prvnm znaku estiznakovho jmna promnn.
Operan systmy
Jak typ operanho systmu pouv Opravdov Programtor? CP/M? Boe chra - CP/M je pes vechny jeho klady hraikov operan systm. CP/M mohou pochopit dokonce i postar dmy a absolventi zkladn koly.
Unix je ovem ponkud komplikovanj - typick unixck pislek si nikdy nevzpomene, jak se nazv pkaz PRINT tento tden - ale kdy se mu podvte na zoubek, pak je Unix pouze glorifikovanou televizn hrou. Lid nepracuj na unixovch systmech serizn: poslaj si vtipy kolem svta pomoc st UUCP a p dobrodrun hry a vzkumn zprvy.
Ne, v Opravdov Programtor pouv OS/370. Dobr programtor ve svm manulu JCL nalezne popis chyby IJK305I a porozum mu. Velk programtor um pst JCL programy, ani by se podval do manulu. Opravdu vynikajc programtor um najt chybu v 6 megabajtech vpisu operan pamti, a to ani by pouil hexadecimln kalkultor. (Vidl jsem to skuten dlat.)
OS je vru znamenit operan systm. Lze na nm ztratit dny prce kvli jedn chybjc mezee, co podncuje programtorsk tm k ostraitosti. Nejlep zpsob styku se systmem je pes drova ttk. Nkte lid tvrd, e existuje vcelohov systm, kter b na OS/370, ale po pelivm studiu jsem dospl k zvru, e se tito lid ml.
Nstroje
Jak druh nstroj pouv Opravdov Programtor? Teoreticky plat, e Opravdov Programtor me potai zadvat svj program tlatky na pednm panelu potae. V dvn minulosti, kdy potae mly pedn panel, se to tak skuten obas dlalo. V typick Opravdov Programtor znal cel zavad v hexadecimlnm vyjden zpamti a namakal jej, kdykoli jej v program poruil (pipomeme si, pam byla pam - pi vypnut nezapomnala. Dnes pam buto zapomene vci, kter jste zapomenout nechtli, nebo si pamatuje vci dlouho pot, kdy by bylo lpe na n zapomenout). Legenda vypravuje, e Seymore Cray, tvrce superpotae Cray I a vtiny pota firmy Control Data, skuten namakal prvn operan systm do potae CDC 7600 pi jeho prvnm zapnut do st pes jeho pedn panel, a to zpamti. Nutno ci, e Seymore byl Opravdov Programtor.
Jednm z mch favorit na Opravdovho Programtora byl systmov programtor od Texas Instruments. Jednoho dne ho zavolal telefonem uivatel, jeho systm se zboural uprosted ukldn njak dleit lohy. Jim byl schopn opravit poruchu po telefonu, donutit uivatele, aby si namakal diskov vstupn/vstupn operace z panelu, opravil systmov tabulky v hexadecimlnm vyjden a aby mu peetl registry zpt po telefonu. Pouen z tto phody: zatmco Opravdov Programtor obvykle zahrnuje "do sv opravsk brany" drova ttk a tiskrnu, tho me doshnout telefonem a z pednho panelu.
V nkterch spolenostech u editovn text nespov v tom, e destky inenr stoj frontu na drova typu 029. Skuten, v budov, kde pracuj, nen jedin drova ttk. Opravdov Programtor v tto situaci mus vykonvat svoji prci programem "textov editor". Vtina systm nabz celou adu textovch editor, Opravdov Programtor si mus peliv vybrat ten editor, kter nejlpe odpovd jeho ivotnmu stylu. Mnoz lid v, e nejlep textov editory na svt byly napsny ve vzkumnm stedisku firmy Xerox v Palu Altu pro jejich potae Alto a Dorado [3]. Bohuel, dn Opravdov Programtor nikdy nepouije pota, jeho operan systm se jmenuje Vedn hovor a urit nebude hovoit k potai my.
Nkter mylenky pouit v editorech firmy Xerox byly zahrnuty do editor bcch pod mnohem vhodnji pojmenovanmi operanmi systmy - pkladem mohou bt EMACS a VI. Problm s tmito editory spov v tom, e Opravdov Programtoi povauj vlastnost "co vid, to dostane" za stejn patnou u textovch editor jako u en. Ne, Opravdov Programtor chce editor typu "o co sis ekl, to dostane" - editor komplikovan, tajemn, mocn, neodpoutjc, nebezpen. Pesnji eeno, TECO.
Zjistilo se, e posloupnost pkaz TECO pipomn mnohem vce poruchy na komunikan lince ne iteln text. Jedna ze zbavnjch her, kter lze hrt s editorem TECO, spov v tom, e zadte svoje jmno jako pkaz a zkuste uhodnout, co to udl. Zatmco budete rozprvt s TECO o chyb vstupnch dat, v program se pravdpodobn zru a nebo - co je hor - se do ji odladnho podprogramu zavleou nenpadn a tajemn chyby.
Z tohoto dvodu Opravdov Programtoi nejsou ochotni editovat program, jen u tm chod. Radji udlaj zplatu pmo do binrnho kdu programu na disku a to pomoc arokrsnho programu zvanho SUPERZAP (nebo pomoc jeho ekvivalentu na strojch jinch, ne jsou stroje IBM). Ten pracuje tak dobe, e mnoh inn programy systmu IBM nejsou v dnm vztahu ke svm pvodnm fortranovskm textm. Mnohdy nen u pvodn zdrojov text dostupn vbec. Kdy vyvstane poteba upravit takov program, dn manaer i f nebude ani na chvli uvaovat, e by na tuto prci poslal nkoho jinho ne Opravdovho Programtora - kterkoliv strukturovan programtor typu Pojda Kol by ani nevdl, kde m zat.
Co Opravdov Programtor nepouv?
* Fortranovsk preprocesory typu MORTRAN i RATFOR. Kuchask umn programovat - to je nco ohromnho pro dln kol. Viz poznmky o strukturovanm programovn ve.
* Ladic program na rovni symbolickho jazyka. Opravdov Programtor um st vpisy operan pamti.
* Kompiltor, kter kontroluje pekroen mez pol. Takov kompiltory dus tvoivost, znemouj vtinu zajmavch pouit pkazu EQUIVALENCE a znemouj dlat zmny do operanho systmu zadnm zpornho indexu. A co je nejhor, kontrola pekroen mez sniuje efektivnost.
* Systmy na sprvu zdrojovch program. Opravdov Programtor m svj program zamen na drnch ttcch, co mu znemouje ponechat svj program nesteen [5].
Opravdov programtor pi prci
Kde typick Opravdov Programtor pracuje? Jak typ programu je hoden sil tak talentovanho jedince? Mete si bt jisti, e dn Opravdov Programtor neume pi psan programu na zpracovn dat v Cobolu nebo pi tdn adrese pedplatitel pro asopis People. Opravdov Programtor si d kolu svtoborn dleitosti (doslova!)
* Opravdov Programtor pracuje pro Nrodn laborato v Los Alamos, kde pe programy simulujc atomov bomby na superpotach Cray I.
* Opravdov Programtor pracuje pro Nrodn bezpenostn ad a dekduje odposlouchan rdiov provoz Sovt.
* Bylo dleit, aby tisce Opravdovch Programtor pracovaly pro NASA, aby se Amerian dostali na Msc a zpt dve ne Rusov.
* Potae v raketoplnu byly programovny Opravdovmi Programtory.
* Opravdov Programtoi pracuj pro Boeing a navrhuj operan systm pro kiujc stely.
Nkte z nejdsivjch ze vech Opravdovch Programtor pracuj v Kalifornii v Jet Propulsion Laboratory. Mnoz z nich znaj cel operan systm kosmickch lod Pioneer a Voyager zpamti. S kombinac ohromnch pozemnch fortranovskch program a malch assemblerovskch program v kosmick lodi jsou schopni vykonat neuviteln navigan a improvizan skutky - strefit se do desetikilometrovho okna v ppad Saturnu, a to po esti letech pobytu ve vesmru, opravit nebo obejt pokozen idlo, vyslaku a baterie. k se, e jeden Opravdov Programtor zorganizoval v lodi Voyager doplnn programu pro rozpoznvn obrazu, a to do nkolika stovek nevyuitch slabik pamti. Doplnk programu nalezl, uril umstn a vyfotografoval nov msc Jupitera.
Souasn pln kosmick lodi Galileo m vyut gravitace, aby pomohla upravit drhu lodi kolem Marsu cestou k Jupiteru. Tato drha vede 803 km od povrchu Marsu. Nikdo nebude dvovat programu psanmu v Pascalu (nebo Pascalovskmu programtoru) tak, aby mu svil navigaci v tchto tolerancch.
Meme ci, e mnoz ze svtovch Opravdovch Programtor pracuj pro vldu Spojench stt - pedevm pro ministerstvo obrany. Tak to m bt. V posledn dob se ovem formuje na obzoru Opravdovch Programtor ern mrak. Vypad to tak, e nkte vysoce postaven pojdai kol v ministerstvu obrany rozhodli, e vechny obrann programy budou psny ve stejnm velkolepm unifikovanm jazyku zvanm "Ada" ((c), DoD). Prozatm se zd, e Ada byla orientovna tak, aby se stala jazykem, kter by bojoval proti poukm Opravdovho Programovn - jazykem se strukturou, jazykem s datovmi typy, s psnou typovou kontrolou a se stednky. Krtce, jazyk uren k ochromen tvoivosti typickho Opravdovho Programtora. Natst jazyk pijat ministerstvem obrany m dost zajmavch vlastnost, kter ho nein nebezpenm - je neuviteln sloit, zahrnuje metody, jak si vymovat zprvy s operanm systmem a jak peuspodat pam a Edsger Dijkstra ho nemiluje [6]. (Dijkstra, jsem si jist, e ho znte, je autorem "GOTOs Considered Harmful") - zkladn prce programovac metodologie opvovan jak Pascalovskmi Programtory, tak Pojdai Kol). Mimo to, Opravdov Programtor um pst fortranovsk programy v ktermkoliv jazyce.
Opravdov Programtor me pistoupit ke kompromism ve svch principech a me pracovat i na nem ponkud mn trivilnm, ne je znien ivota ve form, jak ho znme. To za pedpokladu, e to pinese dost penz. Existuje nap. nkolik Opravdovch Programtor tvocch televizn hry u firmy Atari. (Ale nehraj je, Opravdov Programtor v kadm okamiku v, jak nad strojem zvtzit - to nen dn problm.) Kad, kdo pracuje u firmy LucasFilm, je Opravdov Programtor. (Bylo by ztetn odmtnout penze od padesti milion fanouk filmu Star Trek.) Mnostv Opravdovch Programtor pracujcch v potaov grafice je ponkud pod normou; to pedevm proto, e dosud nikdo nenalezl pro potaovou grafiku vn pouit. Na druh stran, veker potaov grafika je psan ve Fortranu, take existuje mnostv lid, kte radji dlaj grafiku, ne aby psali programy v Cobolu.
Opravdov Programtor pi he
Obecn plat, e Opravdov Programtor si hraje stejnm zpsobem, jako pracuje - to je s potaem. Stle se div, e ho jeho zamstnavatel skuten plat za to, co by stejn dlal pro zbavu (i kdy peliv db na to, aby tento nzor nevyjadoval moc nahlas). Opravdov Programtor obas opust svou kancel, aby si doel na erstv vzduch a na pivo i dv. Mezi jist tipy, jak rozpoznat Opravdovho Programtora mimo vpoetn stedisko, pat:
* Na verku Opravdov Programtoi v koutku hovo o bezpenosti operanch systm a tom, jak ji obejt.
* Pi fotbalu Opravdov Programtor porovnv hru proti sv simulaci natitn na 11 a 14 stranch skldanho papru.
* Na pli kresl Opravdov Programtor do psku vvojov diagramy.
* Na pohbu je Opravdov Programtor ten, kdo k: "Uboh Ji. A ten tdic program mu tsn ped tm, ne dostal infarkt, u skoro chodil."
* V obchod Opravdov Programtor trv na tom, e si na pokladn namak cenu konzervy sm. Nikdy nev, e by drovaka nco vydrovala napoprv sprvn.
Pirozen domov Opravdovho Programtora
V jakm prosted Opravdov Programtor nejlpe funguje? Pro fa Opravdovch Programtor je to velmi dleit otzka. Kdy uvme, kolik penz stoj udren jednoho jedince v tmu, je snaz dt ho (nebo ji) do prosted, kde me dlat svoji prci pohodln.
Typick Opravdov Programtor ije u terminlu. Mezi to, co obklopuje tento terminl, pat:
* Vpisy vech program, na kterch Opravdov Programtor kdy dlal, nakupen v piblin chronologickm poad na kadm volnm mst podlahy kanvele.
* Nkolik tm i pln plnch lk studen kvy, obas v tto kv plave paek nedokouen cigarety. Nkdy takov lek obsahuje i slupky z pomerane.
* Pokud nen velmi dobrm programtorem, pak zde budou vtisky manul JCL a Princip operac oteven na nkterm zajmavm mst.
* Na stn vis kalend na rok 1969 titn dkovou tiskrnou s obrzkem Snoopyho.
* Po koberci jsou pohzeny obaly od msla a plnnch srovch tyinek (takovch, kter se nechaj zvtrat a vyschnout jet v obchod, aby se u nemohly vce pokazit v automatu).
* Na stole le ablona na kreslen vvojovch diagram. Tu zde nechal pedchoz obyvatel kancele. (Opravdov Programtoi p programy, ne dokumentaci. To nechvaj na lidech od drby.)
Opravdov Programtor je schopen pod ntlakem ve stresu pracovat 30, 40 i 50 hodin v kuse. Je fakt, e tento zpsob prce preferuje. Dlouh doba odpovdi Opravdovho Programtora neobtuje, dv mu anci, aby si mezi kompilacemi zdmnul. Nen-li vyvinut na Opravdovho Programtora dostaten tlak, pak m snahu komplikovat vci tm, e pracuje na stle stejn, mal, ale zajmav sti problmu prvnch devt tdn a zbytek pak dodl za tden. To nezpsobuje peklo pouze jeho fovi, kter zouf nad tm, e se projekt nedokon, ale vytv to i vhodnou omluvu, pro se nedl dokumentace. Obecn plat:
* dn Opravdov Programtor nepracuje od devti do pti (tedy ve dne).
* Opravdov Programtoi nenos kravaty.
* Opravdov Programtoi nenos boty s podpatkem.
* Opravdov Programtoi pichzej do prce na obd.
* Opravdov Programtor me, ale nemus znt jmno sv eny. Zn ovem zpamti celou kdovou tabulku ASCII i EBCDIC.
* Opravdov Programtor neum vait. Obchody s potravinami nejsou oteveny rno ve ti hodiny.
Budoucnost
Jak je budoucnost? Opravdovm Programtorm ovem psob urit obavy, e nov generace programtor nen vychovvna se stejnm nzorem na ivot jako jejich star kolegov. Mnoz z nich u ani nevidli pedn panel potae. Souasn absolventi stednch kol neumj eit aritmetick operace v estnctkov soustav bez vhodn kalkulaky. Souasn absolventi vysokch kol jsou mkc, jsou chrnni ped programtorskou realitou ladicmi systmy na rovni zdrojovho jazyka, editory, kter potaj zvorky, a uivatelsky pjemnmi operanmi systmy. A co je nejhor, mnoz z domnlch potaovch vdc dlaj ve pro to, aby bylo mon absolvovat vysokou kolu bez znalosti Fortranu. Jsme ureni k tomu, abychom se stali oborem unixckch pislk a pascalovskch programtor?
Na zklad svch zkuenost mohu ci, e budoucnost Opravdovch Programtor je svtl. Ani OS/370, ani Fortran neprokazuj dn znamen stupu, a to navzdory vekermu sil pascalovskch programtor na celm svt. Ztroskotaly i mnoh zludn triky, jako je pidn strukturovanch dicch konstrukc do Fortranu. Samozejm, mnoz vrobci pota pichzej s kompiltorem Fortranu 77, ale kad takov kompiltor m zpsob, jak pemnit sama sebe zpt na kompiltor Fortranu 66 (zadnm pkazu na ttku) - a kompilovat cyklus DO tak, jak Bh mnil, e se to m dlat.
Unix u dle neme bt tak nedobr k Opravdovm Programtorm, jako byl. Posledn verze Unixu je pro Opravdov Programtory z hlediska operanho systmu vysoce cenn - nabz dv rzn a vzjemn nekompatibiln uivatelsk rozhran, tajemn a komplikovan ovlada dlnopisu a virtuln pam. Kdy pomineme skutenost, e Unix je "strukturovan", programy v C mohou Opravdov Programtoi ocenit: dn kontrola typ, jmna mohou mt 7 (10? 8?) znak a pidan uitek datovho typu ukazatel je na vyhozen - podobn jako mt na jednom mst nejlep sti jazyka Fortran a assembleru (a to nemluvm o nkterch z tvoivjch zpsob pouit #DEFINE).
Ne, budoucnost nen tak patn. Pro v poslednch nkolika letech dokonce i populrn tisk komentuje skvlou novou rodu potaovch pprd a pislk vychzejcch z mst jako je Stanford nebo MIT ([7] a [8]) do Opravdovho Svta? Ze vech dkaz plyne, e duch Opravdovho Programovn ije dl v tchto mladch much a ench. Pokud existuj patn definovan cle, bizarn chyby a nereln plny, jsou zde Opravdov Programtoi, ochotn piskoit a Vyeit Ten Problm, dokumentaci nechaj na pozdji. A ije Fortran!
Literatura
[1] Feirstein, B., "Real Men don't Eat Quiche", New York, Pocket Books, 1982. 
[2] Wirth, N., "Algorithms + Data Structures = Programs", Prentice Hall, 1976. 
[3] Ilson, R., "Recent Research in Text Processing", IEEE Trans. Prof. Commun., Vol. PC-23, No. 4, Dec. 4, 1980. 
[4] Finseth, C., "Theory and Practice of Text Editors - or - a Cookbook for an EMACS", B.S. Thesis, MIT/LCS/TM-165, Massachusetts Institute of Technology, May 1980. 
[5] Weinberg, G., "The Psychology of Computer Programming", New York, Van Nostrand Reinhold, 1971, p. 110. 
[6] Dijkstra, E., "On the GREEN language submitted to the DoD", Sigplan notices, Vol. 3, No. 10, Oct 1978. 
[7] Rose, Frank, "Joy of Hacking", Science 82, Vol. 3, No. 9, Nov 82, pp. 58-66. 
[8] "The Hacker Papers", Psychology Today, August 1980. 
Podkovn
Rd bych podkoval Janovi E., Davovi S., Richovi G., Richovi E. za jejich pomoc ve vystien rys Opravdovho Programtora, Heather B. za ilustraci, Kathy E., e to vydrela, a atd!avsdS:mark za poten inspiraci.
