Tosiohjelmoija

Tämä bloggaaminen näyttää menevän hupaisien sähköpostispammien jakeluksi mutta antakaa anteeksi, muuhun ei ole aikaa. ;)

———-8<----------8<----------8<----------8<----------8<---------- 1. TOSIOHJELMOIJA EI KÄYTÄ PASCALIA

Ennen hyvään aikaan — tietokoneiden "Kulta-aikaan", oli helppoa erottaa miehet pojista (joskus kutsumanimet ovat "Tosi Mies" ja "Idun Narskuttaja"). Tällöin Tosi Miehet olivat niitä, jotka tiesivät ohjelmoinnista, Idun Narskuttajat niitä, jotka eivät. Tosiohjelmoija käytti kieltä, kuten "DO 10 I=1,10" ja "ABEND" (he todella – ymmärrettävästi – puhuivat ISOIN kirjaimin.) Muut ihmiset olivat sitä mieltä, että "tietokoneet ovat liian monimutkaisia minulle" ja "en ikinä alistu käyttämään tietokonetta – ne ovat niin persoonattomia". (Aiemmat tutkimukset (1) osoittavat, että Tosiohjelmoijat eivät "alistu" mihinkään – eivätkä pelkää olla persoonattomia.)

Mutta niin kuin aina: ajat muuttuvat. Nyt me elämme maailmassa, jossa pienet vanhat tädit saavat tietokoneen mikroaaltouuninsa mukana, 12-vuotiaat pennut voittavat Tosiohjelmoijan Asteroids- tai Pac-Man -pelissä, ja kuka tahansa voi ostaa ikioman kotitietokoneen ja jopa ymmärtää sen käyttäytymistä. Tosiohjelmoija on siis vaarassa kadota kokonaan, jäämässä peruskoulussa TRASH-80:een tutustuneiden jalkoihin.

Niinpä onkin tarpeen osoittaa eroja tyypillisen peruskoululaisen Pac-Man-pelaajan ja Tosiohjelmoijan välillä. Jos tämä ero tuodaan kyllin selvästi esille, se antaa näille lapsille jonkin tavoitteen johon pyrkiä –> rooli, malli, IsäHahmo. Siitä on myös apua selvitettäessä työnantajille, miksi olisi iso virhe korvata Tosiohjelmoijat 12-vuotiailla Pac-Man -pelaajilla (jolloin palkkamenot tosin pienenisivät huomattavasti).

2. KIELET

Helpoin tapa tunnistaa Tosiohjelmoija joukosta on ohjelmointikieli, jota
hän käyttää. Tosiohjelmoija käyttää FORTRAN:ia. Idun Narskuttajat
käyttävät PASCAL:ia. Nicklaus Wirth, PASCAL -kielen kehittäjä, joutui kerran esitelmöidessään vastaamaan kysymykseen "Miten lausutte nimenne?". Hän vastasi "Joko kutsutte nimellä, lausuen 'Veert' tai arvon mukaan 'Worth'." Tästä kommentista voidaan suoraan päätellä, että NW on Idun Narskuttaja. (Nimihän lausutaan 'Nickles Worth', eli ei kovin tärkeä tyyppi.

Ainoa oikea Tosiohjelmoijien hyväksymä parametrien välitysmekanismi on arvonvälitys, kuten se on toteutettu IBM/370 FORTRAN -kääntäjässä. Tosiohjelmoijat eivät tarvitse kaikkia turhia käsitteellisiä keinoja hommien tekemiseen — he ovat täydellisen tyytyväisiä paperipäätteeseen, FORTRAN IV -kääntäjään ja olueeseen.

  • Tosiohjelmoijat tekevät Listojen käsittelyä FORTRANilla
  • Tosiohjelmoijat tekevät Merkkijonokäsittelyä FORTRANilla
  • Tosiohjelmoijat tekevät Käytönseurantaohjelmia FORTRANilla (jos he tekevät niitä ollenkaan.)
  • Tosiohjelmoijat tekevät Tekoälyohjelmia FORTRANilla Jos jotain ei voi tehdä FORTRANilla, tee se assembly -kielellä.
  • Jos ohjelmaa ei voi kirjoittaa assembly -kielellä, se ei ole tekemisen
    arvoinen.

3. RAKENTEINEN OHJELMOINTI

Tietojenkäsittelyn akateemiset piirit ovat takertuneet "rakenteinen
ohjelmointi" juttuun viime vuosina. He väittävät, että ohjelmat ovat
helppolukuisempia, jos ohjelmoija käyttää joitain erityisiä kielen
ominaisuuksia ja oikeata ohjelmointitekniikkaa. He eivät tietenkään ole
samaa mieltä siitä millaisia rakenteita tulisi käyttää ja esimerkit,
joilla he tuovat oman kantansa esille ovat lyhyitä ohjelmia, jotka
yleensä sopivat jonkin alan lehden sivun nurkkaan — selvästikään ei
tarpeeksi näyttöä saadakseen ketään vakuuttuneeksi asiasta.
Kun minä pääsin ulos koulusta osasin kirjoittaa lyömättömän tic-tac-toe
-ohjelman, käyttää viittä eri ohjelmointikieltä ja tehdä 1000 riviä
pitkiä ohjelmia, jotka TOIMIVAT. (Ihan totta!).
Sitten jouduin ulos Todelliseen Maailmaan. Ensimmäinen hommani
Todellisessa Maailmassa oli tutustua 200,000 riviä pitkään FORTRAN
-ohjelmaan ja tuplata sen toimintanopeus. Kuka tahansa Tosiohjelmoija
voi vakuuttaa sinulle, että kaiken maailman rakenteinen ohjelmointi ei
auta sinua eteenpäin tällaisessa ongelmassa – siihen tarvitaan
todellista lahjakkuutta. Muutama nopea huomio Tosiohjelmoijasta ja
rakenteisesta ohjelmoinnista.

  • Tosiohjelmoijat eivät epäröi käyttää GOTO -lausetta.
  • Tosiohjelmoija kirjoittaa 5 sivua pitkiä DO -silmukoita ilman että sekaantuu ajatuksissaan hiukkaakaan.
  • Tosiohjelmoijat pitävät Aritmeettisesta IF -lauseesta — niiden
    avulla koodi saadaan mielenkiintoisemmaksi.
  • Tosiohjelmoija kirjoittaa itseään muuttavaa koodia, varsinkin jos sillä säästää 20 ns tiukan silmukan sisällä.
  • Tosiohjelmoijat eivät tarvitse kommentteja – koodi on itsestään selvää.
  • Koska FORTRANissa ei ole rakenteita IF, REPEAT … UNTIL tai CASE-lausetta, Tosiohjelmoijan ei tarvitse huolehtia niiden käytöstä.
    Sitäpaitsi, nehän ovat kaikki tarpeen vaatiessa korvattavissa sijoitetulla GOTO -lauseella.

Tietorakenteiden käyttö on myöskin tullut vahvasti esille. Käsitteiset
tietotyypit, Rakenteet, Osoittimet, Listat ja Merkkijonot ovat hyvin
suosittuja joissakin piireissä.
Wirth (edellä mainittu Idun Narskuttaja) jopa kirjoitti kokonaisen
kirjan (2), jonka sisältö käsittelee ohjelman rakentamista
tietorakenteiden pohjalta eikä päinvastoin. Kuten kaikki Tosiohjelmoijat
hyvin tietävät, ainoa käyttökelpoinen tietorakenne on Vektori.
Merkkijonot, Listat, Rakenteet, Joukot — kaikki ne ovat vain
vektoreiden erikoistapauksia, ja niitä voidaan käsitellä vektoreina
ilman että pitää tehdä kieleen joitakin tarpeettomia monimutkaisia
lisäyksiä. Ikävin asia hassuissa tietotyypeissä on, että ne pitää
määritellä ja Tosi Ohjelmointikielissä – kuten hyvin tiedämme – on
implisiittinen tyypitys, jonka määrää (kuusimerkkisen) muuttujannimen
ensimmäinen kirjain.

4. KÄYTTÖJÄRJESTELMÄT

Millaista käyttöjärjestelmää Tosiohjelmoija sitten käyttää? CP/M?
MS/DOS? Luoja paratkoon — loppujen lopuksi, nehän ovat lelukäyttöjärjestelmiä. Jopa pienet vanhat tädit ja lukio-opiskelijatkin
ymmärtävät ja osaavat käyttää niitä.

Unix taas on paljon monimutkaisempi – tyypillinen Unix hacker ei ikinä
muista, mitä PRINT -komento tällä viikolla tekee – mutta tarkkaan
tutkien Unix on vain kirjava video-peli. Unixilla ei tehdä vakavaa
työtä: käyttäjät vain lähettelevät vitsejä ympäri maailmaa UUCP
-verkkoon ja kirjoittelevat seikkailupelejä sekä tutkimusjulkaisuja.

EI, Tosiohjelmoija käyttää OS/370:tä. Hyvä ohjelmoija osaa löytää ja jopa ymmärtää IJK305I -virheen selvityksen, jonka hän on juuri löytänyt JCL -manuaalistaan. Tosi taitava ohjelmoija hallitsee JCL:n käytön ilman manuaalia. Erittäin hyvä ohjelmoija löytää ilman heksalaskinta virheet, jotka ovat hautautuneet 6 MB -kokoiseen muistivedokseen. (Näin on ihan oikeasti tapahtunut.)

OS on todella huomattava käyttöjärjestelmä. On mahdollista tuhota
päivien työ yhdellä väärin sijoitetulla välilyönnillä, joten
henkilökuntaa kehotetaan olemaan tarkkana. Paras tapa käyttää ko.
järjestelmää on paperipäätteen välityksellä. Jotkut väittävät, että
OS/370 on ajanjakojärjestelmä, mutta pitkien tutkimusten jälkeen olen
vakaasti sitä mieltä, että he ovat väärässä.

5. TYÖKALUT

Millaisia työkaluohjelmia Tosiohjelmoija käyttää? Periaattessa
Tosiohjelmoija voisi ajaa ohjelmansa naputtamalla sen sisään tietokoneen
naamataulun kytkimistöltä. Kun tietokoneissa vielä oli etupaneelissa
kytkimet, näin jopa joskus todella tehtiin. Tyypillinen Tosiohjelmoija
muisti ulkoa koko käyttöjärjestelmän latausohjelman heksamuodossa ja
syötti sen uudelleen sisään aina kun hänen oma ohjelmansa sattui
tärvelemään käyttöjärjestelmäkoodin. (Silloin muisti oli Muistia – se ei
tyhjentynyt kun virrat menivät. Nykyään muistista katoaa aivan liian
helposti, kaikkea tarpeellista tai säilyy pitkään, jotain mikä olisi
ollut syytä tuhota jo ajat sitten.)

Huhu kertoo, että Seymour Gray, Cray I tietokoneen ja muidenkin Control
Datan supertietokoneiden kehittäjä, todella syötti CDC7600 -tietokoneen
ensimmäisen käyttöjärjestelmän etupaneelista sisään – ulkomuistista.
Seymour – lienee tarpeetonta mainita – on Tosiohjelmoija.

Eräs mieleenpainuvista Tosiohjelmoijista oli systeemiohjelmoija Texas
Instrumentsilla. Eräänä päivänä hän vastaanotti kaukopuhelun
asiakkaalta, jonka systeemi oli kaatunut kesken tärkeän työn
tallentamista. Jim korjasi vian puhelimen välityksellä, ohjaten
asiakkaan koneen etupaneelin luo antamaan tarvittavat I/O -käskyt,
korjaamaan systeemin tilatiedot heksana, ilmoittaen tarvittavien
rekisterien sisällöt puhelimen välityksellä.

Tarinan opetus: Tosiohjelmoija yleensä työskentelee paperipäätteen ja
rivikirjoittimen kera, mutta hätätilanteessa puhelin ja koneen
etupaneelikin riittävät.

Joissain firmoissa tekstinkäsittelyyn ei enää käytetä tapaa, jossa useat
työntekijät ovat rivissä käyttämässä 029 paperipäätteitä. Itse asiassa
rakennuksessa, jossa olen töissä ei ole enää yhtään paperipäätettä.
Tosiohjelmoijan pitää tällaisessa ympäristössä tyytyä käyttämään
"kuvaruutueditori" -ohjelmaa. Useimmissa järjestelmissä on useita
sellaisia tarjolla ja niinpä Tosiohjelmoijan pitää olla tarkkana
valitessaan "se" parhaiten omia tottumuksia mukaileva. Monien mielestä
parhaat editorit on tehty Xeroxin Palo Alto Research Center -nimisessä
paikassa heidän Alto ja Dorado -tietokoneisiinsa (3). Valitettavasti
kukaan Tosiohjelmoija ei ikinä tule käyttämään tietokonetta, jonka
käyttöjärjestelmää kutsutaan Smalltalkiksi (suom. tyhjänpäiväinen
lörpöttely säästä tms.), eikä varmasti juttelisi koneen kanssa hiiren
avulla.

Jotkin näiden Xeroxin editoreiden piirteistä on siirretty editoreihin,
jotka toimivat hiukan järkevämmän nimisissä ympäristöissä — EMACS ja VI
kaksi nimetäkseni. Ongelma näiden editoreiden kohdalla on, että
Tosiohjelmoijan mielestä "mitä näet on mitä saat" on ihan yhtä huono
juttu Tekstieditoreiden kohdalla kuin se on Naisten kohdalla. Ei,
Tosiohjelmoija haluaa "pyysit sitä, sait mitä halusit" editorin —
monimutkaisen, kryptisen, voimakkaan, anteeksiantamattoman ja
vaarallisen. TECO:n tarkemmin ottaen.

On havaittu, että TECO:n ohjauskäskyt muistuttavat enemmän linjakohinaa
kuin lukukelpoista tekstiä (4). Eräs hupipeleistä TECO:n kanssa on antaa
oma nimi komennoksi ja yrittää arvata mitä tapahtuu. Melkeimpä mikä
tahansa TECO:lle väärin kirjoitettu komento todennäköisesti tuhoaa koko
ohjelmasi, tai mikä vielä pahempaa — tuo pikkuisia, mystisiä virheitä
kerran jo toimineeseen aliohjelmaan.

Siksi Tosiohjelmoija ei mielellään enää editoi ohjelmaa, joka on jo
melkein valmis. Heidän mielestään on paljon helpompaa muuttaa binääristä
objektikoodia suoraan, käyttäen suurenmoista ohjelmaa nimeltä SUPERZAP
(tai sen vastinetta ei-IBM -koneilla). Tämä tapa toimii niin hyvin, että
monilla IBM -koneissa toimivilla ohjelmilla ei ole mitään tekemistä
alkuperäisen FORTRAN -lähdekieliohjelman kanssa. Usein lähdekielikoodia
ei ole edes saatavilla. Kun tällaisesta ohjelmasta pitää sitten korjata
joitakin puutteita, ei johtajalle tule mieleenkään laittaa asialle
ketään muuta kuin Tosiohjelmoija — kukaan Ituja Narskutteleva
rakenteista ohjelmointityyliä käyttävä ohjelmoija ei ikinä edes
selvittäisi kuinka aloittaisi homman. Tätä kutsutaan "työn varmistamiseksi".

Alla joitakin työkaluja, joita Tosiohjelmoija EI käytä:

  • FORTRAN esiprosessorit kuten MORTRAN ja RATFOR. Ohjelmoinnin riippukiviä — suurenmoisia työkaluja Itujen aikaansaamiseen. Katso edellä olleita kommentteja rakenteisesta ohjelmoinnista.
  • Lähdekielivianetsimet. Tosiohjelmoija lukee suoraan muistivedoksia. – Kääntäjät, jotka tukevat indeksirajojen tarkistamista. Ne tuhoavat luovuuden, estävät EQUIVALENCE-lauseen "hyötykäytön", eikä sitten enää ole mahdollista muunnella käyttöjärjestelmää käyttäen negatiivisia indeksejä. Ja mikä pahinta, indeksien tarkistelu ei ole tehokasta koodia
  • Lähdekielikoodin hallintajärjestelmä. Tosiohjelmoija pitää koodinsa turvassa naapurin arkistokaapissa luottaen siihen, että naapuri kyllä pitää omastaan huolta (5).

6. TOSIOHJELMOIJA TYÖSSÄÄN

Missä tyypillinen Tosiohjelmoija sitten työskentelee? Millaiset ohjelmat
ovat niin tärkeitä, että niinkin lahjakas ohjelmoija käy sen kimppuun?
Voit olla varma, että yksikään Tosiohjelmoija ei jää pölyttymään
kirjoittelemaan jotakin tiliohjelmistoa COBOL:lla, tai järjestelemään
People-lehden postituslistoja. Tosiohjelmoija haluaa hommia, joilla on
koko maailmaa hätkähdyttävä merkitys (kirjaimellisesti!).

  • Tosiohjelmoijat työskentelevät Los Alamos National Laboratoryssa
    tehden atomipommien käyttäytymisen mallinnusohjelmia Cray I:lle.
  • Tosiohjelmoijat työskentelevät Eila Kännön laskuun tutkien kaikkia Suomeen saapuvia levykkeitä.
  • Tuhansien Tosiohjelmoijien ahkeran työn tulosta on, että NASAn pojat pääsivät kuuhun ja takaisin ennen venäläisiä.
  • Tosiohjelmoijat ovat ohjelmoineet avaruussukkulan tietokoneet.
  • Tosiohjelmoijat työskentelevät Boeingilla tehden käyttöjärjestelmiä risteilyohjuksille.

Jotkut kaikkein kunnioitetuimmista Tosiohjelmoijista tekevät duunia Jet
Propulsion Laboratoryssa Kaliforniassa. Monet heistä osaavat ulkoa
Pioneer ja Voyager avaruusalusten ohjelmistot. Laajojen FORTRAN
maa-asemaohjelmistojen ja suppeiden assemblyllä tehtyjen
avaruusalusohjelmien yhdistelmällä he pystyvät mielikuvitukselliseen
suunistus- tarkkuuteen ja improvisointiin — alus menee 10 kilometrin
leveän ikkunan kohdalta Saturnuksen kohdalla kuuden vuoden avaruusmatkan
jälkeen, he korjaavat ja ohittavat rikkoutuneita anturiryppäitä,
radioita ja akkuja. Väitetään, että eräs Tosiohjelmoija sai ängettyä
Voyager-aluksen käyttämättömään muutaman sadan tavun tilaan
hahmontunnistusohjelman, joka etsi, paikallisti ja kuvasi erään
Jupiterin uuden kuun.

Galileo-aluksen tämänhetkiseen suunniteltuun reittiin kuuluu käyttää
gravitaation avustamaa ohitusrataa Marsin ohi kohti Jupiteria. Tämä rata
kulkee 80 ± 3 kilometriä Marsin pinnan yläpuolella. Kukaan ei luota
PASCAL-ohjelmaan (tai PASCAL -ohjelmoijaan) kun on kyse suunistuksesta
näillä toleransseilla.

Niinkuin tietänette monet maailman Tosiohjelmoijista tekevät töitä USA:n
hallitukselle — pääasiassa puolustusministeriölle. Niin pitääkin.
Viimeaikoina on kuitenkin noussut musta pilvi horisonttiin. Näyttää
siltä, että joku puolustusministeriössä korkeassa asemassa oleva Idun
Nakertaja on saanut läpi päätöksen, että kaikki ohjelmat tulee siellä
kirjoittaa jollain uudella mahtavalla kielellä, jonka nimi on "ADA"
((r), DOD). Hetken aikaa jopa näytti siltä, että ADA:n kohtalona on olla
kieli joka sotii kaikkia Tosiohjelmoijan vaalimia periaatteita vastaan
— rakenteinen kieli, kieli jossa on tietotyyppejä, vahva tyypitys ja
puolipisteitä. Lyhyesti, kieli joka tuhoaa kokonaan tyypillisen
Tosiohjelmoijan luovuuden. Onneksi kuitenkin DOD:n lopullisesti
hyväksymässä kielessä on tarpeeksi mielenkiintoisia piirteitä, jotta se
olisi lähestyttävissä — se on tajuttoman laaja ja monimutkainen, siinä
on piirteitä, joilla voi tarvittaessa ohjailla käyttäjärjestelmää ja
muistia ihan itse, lisäksi Edsgar Dijkstra ei pidä ko. kielestä (6).
(Dijkstra, kuten varmaan tiedät, oli kirjan "Goto's Considered Harmful"
kirjoittaja — kirjan, joka on ohjel- mointimetodologioiden yksi
virstanpylväs (ehkäpä Virtsapylväs), jota PASCAL -ohjelmoijat ja muutkin
Itujen Narskuttajat ylistävät.) Sitä paitsi päättäväinen Tosiohjelmoija
pystyy kirjoittamaan FORTRAN -ohjelmia millä tahansa kielellä.

Tosiohjelmoija voi tosin hiukan tinkiä periaatteistaan ja tehdä työtä
jonkin hiukan yksinkertaisemman asian parissa kuin elämän tuhoaminen
siinä muodossa kuin me sen tunnemme, edellyttäen, että siitä maksetaan
tarpeeksi. Atarilla on useita Tosiohjelmoijia tekemässä Videopelejä.
(Mutta he eivät pelaa niitä — Tosiohjelmoija tietää kuinka koneen saa
häviämään joka kerta; pelaaminen ei siis ole kovinkaan haastavaa.)
Jokainen LucasFilmin työntekijä on Tosiohjelmoija. (Olisi typerää hylkiä
50 miljoonan Star Trek fanin rahoja.) Tosiohjelmoijien määrä
tietokonegrafiikan parissa on hiukan normaalia alhaisempi, koska kukaan
ei ole keksinyt tosikäyttöä tietokonegrafiikalle – vielä. Toisaalta
tietokonegrafiikkaohjelmia tehdään FORTRANilla, joten kohtalainen osa
grafiikkaohjelmoijista tekee juuri sitä välttyäkseen kirjoittamasta
COBOL -ohjelmia.

7. TOSIOHJELMOIJA VAPAALLA

Yleensä Tosiohjelmoija viettää vapaa-ajan samoin kuin työajan —
tietokoneen ääressä. Hän jatkuvasti hämmästelee, että työnantaja maksaa
hänelle siitä mitä hän tekisi muutenkin (tosin tuota ei sanota ikinä
lujaan ääneen.) Silloin tällöin Tosiohjelmoija lähtee haukkaamaan hiukan
raitista ilmaa ulos ja juomaan oluen tai pari. Joitakin vinkkejä, mistä
tuntee Tosiohjelmoijan, kun hän ei ole päätteen ääressä:

  • Juhlissa Tosiohjelmoijat ovat keskenään nurkassa juttelemassa käyttöjärjestelmien suojauksista ja niiden kiertämisestä.
  • Jalkapallopelissä Tosiohjelmoija vertailee todellista peliä tekemäänsä mallinnukseen, joka on tulostettu taitellulle A3 -paperille.
  • Rannalla Tosiohjelmoija piirtelee lohkokaavioita hiekkaan.
  • Tosiohjelmoija menee diskoon seuraamaan valoshowta.
  • Hautajaisissa Tosiohjelmoija on se, joka valittelee: "Jussi parka. Hän kun miltei sai lajittelu-ohjelmansa toimimaan ennen sydänveritulppaa".
  • Maitokaupassa Tosiohjelmoija on se, joka vaatii, että kaikki tuotteet pitää laittaa hinnanlukijan läpi, koska tietää, että ensimmäinen näppäily menee kuitenkin aina väärin.

8. TOSIOHJELMOIJAN LUONTEENPIIRTEET

Millaisessa ympäristössä Tosiohjelmoija toimii tehokkaimmin? Tämä on
hyvin tärkeä tieto heidän esimiehilleen. Kun otetaan huomioon rahamäärä,
mikä Tosiohjelmoijaan sijoitetaan on parasta antaa hänelle käyttöön
ympäristö, jossa hän saa aikaan kaikkein eniten.

Tyypillinen Tosiohjelmoija elää tietokonepäätteensä ääressä.
Päätteen ympärillä on:

  • Listaukset kaikista Tosiohjelmoijan milloinkaan tekemistä ohjelmista pinottuna kutakuinkin kronologiseen järjestykseen toimiston jokaisella mahdollisella tasaisella pinnalla.
  • Puolisentusinaa puoliksi kylmää kahvia täynnä olevia kuppeja. Joskus kahvin joukossa saattaa olla lillimässä savukkeen tumppeja. Ja joskus kupeissa voi olla appelsiinimurskaa.
  • Ellei hän ole todella taitava, kopiot OS JCL -manuaalista ja Käyttöjärjestelmän perustoimintoja käsittelevä kirja avoinna joltakin erityisen mielenkiintoiselta sivulta.
  • Seinällä listaus vuoden 1969 Ressu -kalenterista.
  • Lattialla on levällään revittyjä pähkinävoitäytteisten juustotankojen käärepapereita — sellaisia, jotka esiväljähdytetään valmiiksi jo leipomolla, jotta ne eivät enää automaateissa huonone.
  • Piilossa pöydän oikean käden alimmassa laatikossa on taskumatti kolmasti kirkastettua erityistilanteita varten.
  • Matin alla on lohkokaaviomalline, jonka sinne on jättänyt toimiston aiempi asukki. (Tosiohjelmoijat kirjoittavat ohjelmia, eivät
    dokumentteja. Ne jätetään ylläpitohenkilökunnan murheeksi.)

Tosiohjelmoija pystyy työskentelemään yhtämittaisesti 30, 40 tai jopa 50
tuntia, vieläpä kovan paineen alla. Itseasiassa hän nauttii siitä.
Koneen huono vasteaika ei häiritse Tosiohjelmoijaa — se tarjoaa hänelle
mahdollisuuden ottaa pienet nokkaunet käänösten välillä. Jos töillä ei
tunnu olevan Tosiohjelmoijan mielestä tarpeeksi kiirettä, hän tekee
tekee hommat haastavimmiksi työskentelemällä jonkin mielenkiintoisen
pikkuseikan parissa ensimmäiset yhdeksän viikkoa, sitten tehden työn
loppuun viimeisellä viikolla muutamalla 50 tunnin maratonilla. Paitsi
että tällä tavalla saa pomon todella hermostumaan josko tehtävä
ollenkaan valmistuu, saa myös hyvän selityksen dokumentoinnin
puutteellisuuteen.

Yleisesti:

  • Kukaan Tosiohjelmoija ei työskentele 9:stä 5:een (ellei kyseessä ole yö.)
  • Tosiohjelmoijat eivät pidä kravatteja.
  • Tosiohjelmoijat eivät pidä korkeakorkoisia kenkiä.
  • Tosiohjelmoija tulee töihin sopivasti lounasaikaan.
  • Tosiohjelmoija saattaa unohtaa ystävättärensä nimen, mutta hän ei ikinä unohda yhdenkään ASCII (tai EBCDIC) merkin koodia.
  • Tosiohjelmoija ei osaa kokata. Maitokaupat eivät ole auki kello 3:n aikaan aamuyöstä.
  • Tosiohjelmoija pärjää pipareilla ja kahvilla.

9. TULEVAISUUS

Entäs tulevaisuus? Vanhojen Tosiohjelmoijien keskuudessa on syntynyt
huolta siitä, että nuori polvi ei enää mukaudu samaan muottiin kuin
vanhat parrat. Monet nuoret eivät ole eläessään edes nähneet
tietokonetta, jossa on oikea etupaneeli. Tuskin kukaan koulusta pääsevä
nykyään osaa heksalaskuja ilman laskinta. Alaa opiskelevat ovat nykyään
pehmoja — heitä suojellaan todelliseen ohjelmointityöhön perehtymiseltä
mm. lähdekielivianetsimillä, editoreilla, jotka laskevat sulkutasapainon
ja "käyttäjäystävällisillä" käyttöjärjestelmillä. Ja mikä
kauhistuttavinta, jotkut näistä ns. "tietokoneammattilaisista" saavat
tittelinsä ilman että ikinä oppivat FORTRANia. Olemmeko tulevaisuudessa joukko Unix -hackereita ja PASCAL -ohjelmoijia?

Kokemuksieni mukaan Tosiohjelmoijalla on kuitenkin valoisa tulevaisuus.
Ei OS/370n eikä FORTRANin katoamisesta ole näkyvissä merkkiäkään vaikka
kaiken maailman PASCAL -ohjelmoijat siihen pyrkivätkin. Jopa sellaiset
kierot temput kuin rakenteisten piirteiden lisääminen FORTRAN -kieleen
on epäonnistunut. Niin, jotkut tietokonevalmistajat ovat siirtyneet
käyttämään FORTRAN 77 -kääntäjiä, mutta kaikilla heillä on kuitenkin
olemassa helppo takaportti siirtyä tarvittaessa takaisin FORTRAN 66:n
käyttöön — kääntämään DO silmukan siten kuin Luoja on asian tarkoittanut.

Unixkaan ei ole enää yhtä paha Tosiohjelmoijalle kuin aiemmin.
Viimeisimmät Unix -versiot tarjoavat jopa Tosiohjelmoijan tarpeet
täyttävän ympäristön — useita erilaisia yhteensopimattomia
käyttäjäliityntöjä, mystinen ja monimutkainen pääteajuriohjelmisto,
virtuaalimuisti. Jos ei välitä siitä, että 'C' on "rakenteinen"
ohjelmointikieli, niin jopa Tosiohjelmoija pystyy arvostamaan 'C'
-ohjelmointia. Kaiken kaikkiaan, C:ssä ei ole tyyppitarkistuksia,
muuttujanimet saavat olla seitsemän (kymmenen? kahdeksan?) merkkiä
pitkiä ja kaiken lisäksi plussana on mielenkiintoinen Osoitintyyppi —
Ihan kuin olisi yhdistetty FORTRAN:in ja assembly-kielen parhaat
ominaisuudet. (Puhumattakaan joistakin kehittävistä tavoista käyttää C:n
esiprosessoria.)

Ei, tulevaisuus ei näytä ollenkaan pahalta. Miksi, kun viime vuosina
näyttää käyneen niin, että jopa lehdistökin on kommentoinut uuden
ohjelmoijasadon aikaansaannoksia ((7) ja (8)), joka on nyt
levittäytymässä Todelliseen Maailmaan pois Stanfordista ja M.I.T.sta.
Aihetodisteiden mukaan Tosiohjelmoijien henki edelleenkin elää ja voi
hyvin näiden nuorten miesten ja naisten keskuudessa. Niin kauan kuin on
kieroutuneita tavoitteita, mystisiä virhetilanteita ja epärealistisia
aikatauluja on myös olemassa Tosiohjelmoijia, jotka ovat valmiita
tulemaan ratkaisemaan ongelman, ja murehtimaan dokumentoinnista joskus
jälkeenpäin.
Kauan eläköön FORTRAN!

10. VIITTEET

  1. Feierstein, 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/PM-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
  9. sdcarl!lin, "Real Programmers", UUCP-net, Thu Oct 21 16:55:16 1982

Vapaasti suomentanut alkuperäisestä: Jaffa

Pahoittelen kirjoitusvirheitä, joita tekstissä varmaan (vieläkin) on. Ei
niitä kaikkia jaksa etsiä. Tavutusvirheet ovat nroff:in tekemiä. Niistä
en ota vastuuta itselleni.

PS. Termi Idun Nakertelija on korvike englanninkieliselle "Quiche Eater"
sanonnalle, joka on perua kirjan "Real Men Don't Eat Quiche" -nimestä
(vapaa suomennos: "Tosi mies ei ole kani"). Siis halventava huomautus
muista kuin "Tosiohjelmoijista".

Kaikki yllä olevassa ei ole enää (välttämättä) kovin ajankohtaista,
koska koneet ovat hiukan muuttuneet 5 vuoden mittaan, mutta yrittäkää
sietää pahimmat mokat.