Programmering for ekte menn
Ingen liker å bli behandlet som en idiot. For eksempel, når Vista kom lagde Apple den festlige
Cancel or Allow?-reklamen, som spilte på at Vista ba deg om å bekrefte alt mulig rart (så vidt jeg vet. Jeg har knapt noen personlig erfaring med Vista, så jeg vet ikke om det er sant.). På unix kan man naturligvis ofte velge om man vil ha slike tullete spørsmål eller ikke. For eksempel, hvis du skriver
vil du antagelig bli spurt om du egentlig vet hva du driver med, mens hvis du skriver
indikerer du at ja, du har tenkt gjennom dette, og ja, du ønsker virkelig å slette hele harddisken din. Eller i alle fall så mye som du rekker før maskinen krasjer.
I det siste har jeg imidlertid ønsket at maskinen min kunne snakket nedsettende til meg litt oftere. Jeg driver nemlig og programmerer i fortran, og i den sammenhengen er jeg jo faktisk en idiot, jeg er i alle fall foreløpig ikke spesielt dreven. Fortran er nemlig slik skrudd sammen at hvis du ikke eksplisitt sier (via et kompilatorflagg) at du er usikker på hva du driver med, ja, da antar den at du har tenkt nøye over saken.
Problemet mitt er naturligvis at jeg kommer fra Python, som jeg forøvrig blir mer og mer begeistret for for hver feil jeg fjerner i fortran-koden min. Python er et veldig vennlig språk, som håndterer ganske mye av tenkingen for deg, og hvis det dukker opp et tilfelle der du ber det om å gjøre noe det ikke greier å håndtere sier det fra om det. Så for eksempel hvis du prøver å kalle en funksjon som krever to variable, men du bare oppgir én, sier Python «Oisann, her har du glemt en variabel, lille venn.» Eller egentlig sier det noe slikt som
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: test() takes exactly 2 arguments (1 given)
men i forhold til fortran er det mye det samme. Fortran sier nemlig ingenting, men jeg ser for meg at det tenker noe slikt som «Jaja, det her går åpenbart til helvete, men han vet sikkert hva han driver med.» Og så spiser det opp alt minnet ditt og krasjer. Eller, hvis du lager en liste som inneholder 11 tall, og så prøver du å lese tall nummer 12 fra den listen, vel, da leser fortran uten å nøle det som tilfeldigvis måtte befinne seg på neste sted i minnet. Eller enda værre, hvis du skriver utenfor en liste skriver fortran, fremdeles uten å nøle, til det stedet i minnet du angir, uten å tenke for mye på hva som måtte befinne seg der fra før.
Det er naturligvis grunner til at det er slik. En ting er at fortran ble skrevet i steinalderen, før mennesket hadde utviklet praktisk sans, og en annen ting er at det går mye fortere når programmet slipper å hele tiden sjekke om brukeren har gjort noe teit. Og jeg setter naturligvis pris på dette når jeg kan kutte kjøretiden min fra fire timer til fire minutter ved å flytte to for-løkker fra python til fortran. Jeg merker likevel at jeg gleder meg vi får kvantedatamaskiner, og jeg kan skrive tingene mine i qPython uten å tenke på effektivitet fordi det uansett vil være raskt nok til alle praktiske formål. Med mindre Gustafsons lov kommer og tar meg.
-Tor Nordam
Comments