onsdag, mars 21, 2007

Fortrans fader, John W Backus, död

John W. Backus, som ledde arbetsgruppen bakom utvecklingen av Fortran, dog i helgen. Fortran är, tillsammans med C/C++, det dominerande programmeringsspråket för krävande vetenskapliga beräkningar. Det släpptes 1957 och lade grunden till en revolution: programmeringsspråk som var begripliga för människor och inte krävde expertkunskap.

Fortran var det första moderna och brett använda programmeringspråket. Det flyttade fokus från programmering som ett sätt att ge minutiösa steg-för-steg-instruktioner till ett sätt att uttrycka sina idéer och formler i text på ett sätt som datorn förstod. Språket utvecklades för teknisk och vetenskaplig användning - så många andra användningsområden fanns i och för sig inte då - och är "still going strong", om än i uppdaterad version (men många forskare använder fortfarande Fortran 77). Men minst lika viktigt var att Fortran var nästan lika snabbt som maskinkod - och det berodde på kompilatorn (programmet som översätter språkkod till kod som datorn förstår).
 
John Backus började som programmerare, men blev frustrerad över det då mycket komplicerade arbetet med att skriva kod. Han bad sin chef om att få leda ett forskningsprojekt som skulle hitta ett bättre sätt. Arbetsgruppen bestod av folk från alla möjliga håll, med en gemensam förmåga: problemlösning. I februari 1957 presenterades Fortran på en konferens där gruppen också demonstrerade att Fortrankod kunde vara nästan lika snabb, eller till och med lika snabb, som handskriven kod. Det hade tidigare ansetts omöjligt.
 
Idag används nog inte Fortran främst för sin begriplighet, utan för att det fortfarande är snabbt. Mycket snabbt. Många vetenskapliga problem kräver stora och långa beräkningar som helt enkelt inte är praktiskt genomförbara under en viss hastighet. Ute i den "vanliga världen" ligger en stor del av fokus på användarvänlighet för den som skriver koden. I och med att datorer snabbt blir snabbare blir programmerarnas arbete ofta den dyra och tidsbegränsande biten, och "vanliga" program skrivs sällan i Fortran nuförtiden.
 
John Backus gjorde också flera andra stora insatser; till exempel utvecklingen av Backus-Naur-form som är ett sätt att beskriva syntax hos programmeringsspråk. Men det är knappast något som haft så fundamental inverkan både på programmeringsvärlden och på forskarvärlden som Fortran.
 
Länkar
New York Times om John W Backus
IBM Archives om John Backus
About.com om Fortrans historia (del 1, del 2, del 3)
 

9 kommentarer:

Daniel sa...

Jag tyckte väl mina modeller har gått långsamt denna veckan. Inte lätt att göra beräkningar när koden sörjer.

Malin Sandström sa...

:-)

Jesper sa...

Det är en vanlig myt att svårigheten att programmera beror på vilket programmeringsspråk man använder. Det har sagts vid lanseringen av i princip alla programmeringsspråk, både före och efter Fortran. Faktum är att programmering kommer att vara svårt, oavsett vilket språk eller andra verktyg man använder.

Fred Brooks konstaterade detta i den klassiska boken "The Mythical Man-month":

http://inst.eecs.berkeley.edu/~maratb/readings/NoSilverBullet.html

Malin Sandström sa...

"Faktum är att programmering kommer att vara svårt, oavsett vilket språk eller andra verktyg man använder."

Det är väl därför alla nybörjarkurser i programmering använder sig av Assembler ;-)

Skämt åsido, åtminstone jag skulle skriva program i Fortran bra mycket snabbare än program i Assembler eller liknande, vilket i princip var enda alternativet för forskningssimuleringar innan Fortran kom. Är det likvärdigt för dig, så... fine. (Inte för att jag tror att det är helt sant)

Brooks talar för övrigt bara om (stora) mjukvaruprojekt, iallafall i länken du lade in. De har väl ändå en komplexitet som inte bara beror på programmeringen i sig, utan att de har många delar och involverar många personer. Och det verkar vara hans huvudpoäng. Det problemet kan man såklart inte komma undan med ett byte av programmeringsspråk.

Magnus sa...

För att vara lite plump: Är det inte dags att Fortran går samma väg som Backus, i graven?

Nej, nej, jag vore den sista att förringa Backus insats, eller Fortrans betydelse. Dock är det som Malin säger: Fortran har varit med sedan hålkortens tid på 50-talet och används fortfarande, trots att modernare och bättre programspråk finns tillgängliga. Bakåtkompatibilitet i all ära, men Fortrans långa historia är idag mera belastning än hjälp.

Jag talar av erfarenhet när jag säger detta. Jag har bredvid mig en låda med den min nyss spikade doktorsavhandling. Samtliga resultat i denna vinröda skapelse är framtagna med Fortran-program, och den erfarenhet jag har av Fortran är att den enda anledningen till att Fortran används idag är att alldeles för många forskare är självlärda hobbyprogrammerare som håller fast vid den Fortan-blandning de lyckats lära sig (och som deras nedärvda programkoder är skrivna i) och det faktum att det finns massor av beräkningsbibliotek till Fortran.

Jesper har rätt när han säger att programmering alltid kommer att vara svårt oavsett språk. Det är naturligtvis sant, men det betyder inte att valet av språk är betydelselöst för programmeringsprocessen. Vissa saker är smidigare att göra i vissa språk. Framför allt har dock möjligheterna i programmeringsspråken utvecklats. Det går att göra bättre lösningar i moderna språk än i gamla, även om det måhända inte är "lättare".

En sista observation är också att svårigheten i programmeringen definitivt är beroende av hur maskinnära programmering man gör. Det är lättare att skriva ett beräkningsprogram i ett högnivåspråk som C++ eller Fortran, än att skriva det i ett lågnivåspråk som Assembler. Och just detta var ju poängen med Fortran en gång i tiden, och det är kanske för den insatsen vi bör minnas Backus.

Malin Sandström sa...

"den erfarenhet jag har av Fortran är att den enda anledningen till att Fortran används idag är att alldeles för många forskare är självlärda hobbyprogrammerare som håller fast vid den Fortan-blandning de lyckats lära sig (och som deras nedärvda programkoder är skrivna i)"

Ja, det kan nog mycket väl stämma. :-)

Den enda gång jag själv använt Fortran var i en kurs i beräkningfysik/kvantkemi för ett antal år sedan, och då handlade det om att modifiera ett program skrivet i Fortran 77 som verkligen känns uråldrigt om ens främsta referens är Java och Matlab (det enda jag då hade använt). När jag föreslog att man skulle skriva om koden till Fortran 90 såg kursledaren synnerligen frågande ut, och inte så lite förskräckt....

(För övrigt: väl formulerad kommentar, Magnus)

JesperE sa...

Naturligtvis har programmeringsspråk utvecklats till att vara smidigare att använda idag än för 50 år sedan, och valet av programmeringsspråk är långt ifrån betydelselöst.

Det jag i huvudsak reagerade mot var uttrycket "som var begripliga för människor och inte krävde expertkunskap". Programmering kommer aldrig att bli någonting som "mannen på gatan" pysslar med, oavsett hur balla och smidiga programmeringsspråk vi uppfinner.

Rekommenderat läsning: Why Can't Programmers... Program?

Malin Sandström sa...

Det kanske är vår beskrivning av "expertkunskap" som skiljer sig? Det finns trots allt ganska många steg mellan "mannen på gatan" och en ren programmeringsexpertis.

I jämförelsen mellan programmering i Fortran och det som fanns innan skulle jag nog säga att det med Fortran krävdes mindre kunskap att för att själv kunna skriva något som fungerade. Som forskare ser jag det som det viktiga steget, för att det gör ens projekt möjligt. En "ren" programmerare (som jag antar att du är) kan naturligtvis se det annorlunda.

JesperE sa...

Moderna programmeringsspråk har gjort programmering tillgänglig för en större grupp människor, det håller jag med om. Det är ju bra när det möjliggör forskningsprojekt som annars skulle varit omöjliga.

Men jag måste nog medge att jag som "ren" programmerare mest sett den dåliga sidan av detta, dvs. all skräpkod som producerats av låtsasprogrammerare.