Most recent comments
Liveblogg nyttårsaften 2017
Tor, 11 months, 1 week
Jogging og blogging
Are, 1 year, 11 months
Liveblogg nyttårsaften 2016
Are, 1 year, 11 months
Reading in dark times
Are, 2 years
Moldejazz 2016
Camilla, 2 years, 4 months
Dørskilt
Karoline, 2 years, 4 months
Halifax
Tor, 2 years, 5 months
Sony Smartwatch 3 review
Tor, 2 years, 6 months
Numerikk, takk
Tor, 2 years, 6 months
Topp tur
Camilla, 2 years, 8 months
50 book challenge
Camilla, 11 months, 1 week
Ten years ago
Pics or it never happened!
Tor
Controls
Register

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
sudo rm -r /

vil du antagelig bli spurt om du egentlig vet hva du driver med, mens hvis du skriver
sudo rm -rf /

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

Hm

Camilla,  27.09.10 13:42

Problemet mitt med Windows var ikke at den spurte meg om å brekrefte ting, men at den bare antok at jeg var dum og bestemte seg for å gjøre noe med det uten å konsultere meg.

Men ja, Fortran høres ikke noe særlig hyggelig ut. Det er ikke det spor koselig når du mistenker at maskinen sitter og ler av deg med vennene sine.
Tim,  27.09.10 22:53



Alternative text: "Real programmers set the universal constants at the start such that the universe evolves to contain the disk with the data they want."
Tor,  27.09.10 23:41

I use TextMate. But I know more or less how to use emacs. My office mate uses vim, though, so I suppose he's one better.

Interesting story about pagers:



A pager is a command line program that displays the contents of a text file, with no option to change anything. One of the first (or the first?) of these were called "more". I have no idea why, as basically all it did was display text, with fantastic features like scrolling (but only forwards) and, well, that's about it.

Later on, someone wrote another pager called "less", because less is more. less had the groundbreaking ability to scroll backwards, and also other nice features like search, and an easy way to open a file in an editor. less is now included as standard on all decent operating systems.

Even later, someone wrote "most", which is also a pager, and which can scroll sideways, in addition to forwards and backwards. It doesn't come pre-installed with OS X, so I'm guessing it wasn't a great hit.

Huh

Camilla,  27.09.10 23:43

I have a sneaking suspicion some of these tech guys were English majors on the side.
Are,  29.09.10 03:44

The more/less thing is a good example of how insider humor tends to upstage sensibilities within the Linux community :p

Tor: You have my sympathies. I've done some C and assembler, and it was only after that I really appreciated Java (and other modern languages with helpful mechanisms like array bound checking and garbage collection).
Tor likes this
Category
Technology
Tags
python
numerisk fysikk
programmering
fortran
Views
2735
Google hits
1
Last google search
hvor raskt er python i forhold til fortran