Informatisk julekalender: Luke 13


mandag 13. desember 2010 Julekalender

backus

Dagens luke er en hyllest til mannen som ledet utviklingen av det programmeringsspråket man normalt tenker på som det første.

John Backus begynte å jobbe for IBM i 1950. Hans første prosjekt var å skrive et program for å kalkulere månens posisjon. I 1953 utviklet han språket Speedcoding, som var det første høyerenivå-språket laget for en IBM-maskin. Året etter samlet han sammen et team for å definere og utvikle Fortran, som ble det første høyerenivå-språket som ble allment tilgjengelig og allment brukt.

"Much of my work has come from being lazy. I didn't like writing programs, and so, when I was working on the IBM 701, writing programs for computing missile trajectories, I started work on a programming system to make it easier to write programs."

Fortran (utledet av IBM Mathematical Formula Translating System) er et imperativt programmeringsspråk spesielt egnet for numeriske beregninger og vitenskapelig programmering. Språket har vært og er fortsatt i bruk innenfor områder som krevet tunge utregninger – som f.eks. værvarsling. Det er også et av de mest populære språkene når man trenger ekstremt høy ytelse, og Fortran brukes bl.a. til å rangere verdens raskeste supercomputere.

Her er en liten smakebit på litt kode skrevet i FORTRAN II, som ble lansert i 1958:

 1 C AREA OF A TRIANGLE WITH A STANDARD SQUARE ROOT FUNCTION 
 2 C INPUT - CARD READER UNIT 5, INTEGER INPUT
 3 C OUTPUT - LINE PRINTER UNIT 6, REAL OUTPUT
 4 C INPUT ERROR DISPLAY ERROR OUTPUT CODE 1 IN JOB CONTROL LISTING
 5       READ INPUT TAPE 5, 501, IA, IB, IC
 6   501 FORMAT (3I5)
 7 C IA, IB, AND IC MAY NOT BE NEGATIVE
 8 C FURTHERMORE, THE SUM OF TWO SIDES OF A TRIANGLE
 9 C IS GREATER THAN THE THIRD SIDE, SO WE CHECK FOR THAT, TOO
10       IF (IA) 777, 777, 701
11   701 IF (IB) 777, 777, 702
12   702 IF (IC) 777, 777, 703
13   703 IF (IA+IB-IC) 777,777,704
14   704 IF (IA+IC-IB) 777,777,705
15   705 IF (IB+IC-IA) 777,777,799
16   777 STOP 1
17 C USING HERON'S FORMULA WE CALCULATE THE
18 C AREA OF THE TRIANGLE
19   799 S = FLOATF (IA + IB + IC) / 2.0
20       AREA = SQRT( S * (S - FLOATF(IA)) * (S - FLOATF(IB)) *
21      +     (S - FLOATF(IC)))
22       WRITE OUTPUT TAPE 6, 601, IA, IB, IC, AREA
23   601 FORMAT (4H A= ,I5,5H  B= ,I5,5H  C= ,I5,8H  AREA= ,F10.2,
24      +        13H SQUARE UNITS)
25       STOP
26       END

Backus hadde også et annet, viktig bidrag: I andre halvdel av 50-tallet var han medlem av den internasjonale kommiteen som utviklet ALGOL 58 og ALGOL 60, som raskt ble en de facto standard for publiseirng av algoritmer, og som også er forløperen til en hel familie med programmeringsspråk som inkluderer Pascal, Simula, C etc. Som en del av dette arbeidet utviklet han det som kalles Backus-Naur Form, en formell notasjonsteknikk for å beskrive programmeringsspråk. Backus-Naur Form hadde stor betydning for utviklingen av kompilatorer, og Backus fikk Turing-prisen for dette arbeidet.


comments powered by Disqus