Software

Den dovne sprogkonstruktør

Dansk-canadieren Rasmus Lerdorf er manden bag scriptsproget PHP, der anvendes i stor stil til webprogrammering. En fodboldskade og en medfødt dovenskab var baggrunden for udviklingen af et sprog, som egentlig ikke var planlagt.

En god programmør er en doven programmør. Sådan lyder et it-mundheld. En doven programmør vil eksempelvis ikke kaste sig ud i at kode mere end højst nødvendigt, men koncentrerer sig i stedet om at udvikle små, generelle rutiner. Små generelle rutiner, der kan genanvendes i et eller flere systemer. Derved forhindres redundant kode, der er et vedligeholdelsesmæssigt mareridt. En doven programmør vil også forsøge at udvikle hjælpeværktøjer og -rutiner, der kan tage sig af meget af det kedelige rutinearbejde som programmering også består af. Rasmus Lerdorf er et godt eksempel på den dovne programmør. Han er faktisk så doven, at han skrev et helt programmeringsssprog!

Udviklingen af PHP
Rasmus Lerdorf er nemlig ophavsmanden til PHP. Ifølge Netcraft anvendes PHP i dag på flere end 22 millioner websites. Det er tæt på en trediedel af alle websteder som Netcraft har registreret. Da Rasmus Lerdorf tilbage i 1994 begyndte at skrive små C-rutiner, der skulle hjælpe ham med at løse problemer, som han mødte igen og igen i sit arbejde som internetudvikler, var det ikke noget som han havde forestillet sig i sin vildeste fantasi. Han havde end ikke planer om at skrive et programmeringssprog.

- Jeg troede aldrig, at jeg skulle skrive et sprog; jeg ved ikke, hvordan man skriver et sprog. Det er fyre som Larry Wall [skaberen af Perl], der ved noget om den slags, siger Rasmus Lerdorf. PROSAbladet har mødt ham i London i forbindelse med, at han skal holde et indlæg på LinuxWorldExpo.

Han starter med at undskylde sit danske sprog. Han flyttede til Canada, da han var omkring 13 år og har sjældent brugt sit danske modersmål i de 25 år, han har boet i Canada, USA og Brasilien. Selvom en amerikansk accent farver hans danske sprog, har han dog ingen problemer med at mestre modersmålet. Han fortæller, hvordan udviklingen af PHP startede.

- Når jeg stødte på et problem i forbindelse med webudvikling, skrev jeg et C-bibliotek, der kunne tage sig af det. I HTML-koden havde jeg små makroer, der kaldte de forskellige C-rutiner. Det kunne eksempelvis være at få vist tiden. Så havde jeg en makro, der hed time. Så i starten var der ikke tale om et programmeringssprog; blot små makroer, fortæller Rasmus Lerdorf.

Mængden af små makroer voksede efterhånden og med tiden fik Rasmus Lerdorf også brug for at kunne skelne mellem forskellige browsertyper.

- Der var behov for at lave if-sætninger som eksempelvis "if IE then ..." og "if Netscape then...". Det var svært at stoppe. Med en if skulle jeg også have variable. Med en if kommer else selvfølgelig med; hvorfor så ikke else-if? Derfra er springet til en switch case ikke så stor. Et while-loop er meget ligesom en if-betingelse, der blot looper tilbage. Dernæst kom behovet for subrutiner, siger Rasmus Lerdorf.

Naiv og modig
Han smiler lidt af sin naive indstilling dengang:

- Da jeg begyndte, tænkte jeg, at det ikke kunne være så svært. Det blev dog svært meget hurtigt. Eksempelvis når man har udtryk som 2+2*3. Her kan man ikke bare læse fra venstre mod højre og løbende udregne resultatet på grund af operatorpræcedens i matematik (2*3 skal udregnes inden der lægges 2 til, red.)

Rasmus Lerdorf fandt ud af, at han nok blev nødt til at sætte sig lidt mere ind i, hvordan man kan skrive et sprog. Han læste en bog om yacc og omskrev PHP ved hjælp af yacc. Det blev version 2 af PHP.

Grundkonstruktionen i Rasmus Lerdorfs PHP-projekt var blevet mere stabil, men det forhindrede ikke to israelere, Zeev Suraski og Andi Gutmans, i at kontakte ham. De tilbød at hjælpe med at omskrive PHP i 1997.

- De sagde, at de havde set på min PHP-engine, og de var overrasket over, at den overhovedet virkede, siger Rasmus Lerdorf med et grin og fortsætter:
- De havde studeret sprogkonstruktion, og da de tilbød at omskrive PHP-enginen, sagde jeg ja tak.

Resultatet af de to israeleres arbejde blev PHP version 3, som var klar i 1997. I dag er den nyeste udgave af PHP version 5.1. Hvis Rasmus Lerdorf i sin tid havde vidst mere om sprogkonstruktion, var det ikke sikkert, at PHP ville være blevet til noget. Hans lettere naive indstilling, og det faktum at han ikke var bange for at lægge sin kode ud til offentlig beskuelse på nettet, var med til at gøre PHP til en succes.

- Det er nok halvdelen af datalogistuderende, der har prøvet at skrive sit eget sprog. De fleste tror, de skal være færdige, inden de slipper deres sprog løs. Men tingene bliver aldrig færdige. Det er en fordel at gøre det ad hoc og ikke være bange for at lægge koden ud til andre. Man skal ikke være bange for at få vide, at det er en crap-kode, man har lavet, mener Rasmus Lerdorf. Han fortsætter:

- Det (PHP) ville nok ikke være blevet et sprog men en mere formel, struktureret fremgangsmåde.

Pragmatisk problemløsning
Der er ingen tvivl om, at Rasmus Lerdorf har en meget pragmatisk, problemorienteret tilgang til tingene. For ham drejer det sig om at få lavet noget kode, der løser et problem; ikke så meget om at fortabe sig i teoretiske overvejelser.

- Der er mange folk, der ser på et problem og straks begynder at tænke: Vi skal have et abstraktionslag, vi skal have et framework; nu skal vi have en masse ting, der kan hjælpe os med at løse problemet. Men i processen glemmer de, hvad det egentlige problem er. Jeg er måske for fokuseret på problemet, mens andre fokuserer for meget på UML, frameworks og så videre, siger Rasmus Lerdorf. Som eksempel nævner Rasmus Lerdorf en oplevelse, han havde, da han arbejdede som konsulent under dot-com-boblen, inden den brast.

- Jeg var ude hos det her firma, der havde 20-30 javaprogrammører med de nyeste state-of-the-art applikationsservere som WebSphere og Weblogic. Der var tale om store softwaresuiter. Jeg spurgte: Tjener I penge på at skrive java-programmer? Nej, vi sælger blomster, var svaret. Men der var ingen, der vidste noget om blomster, beretter Rasmus Lerdorf. Derimod var udviklerne meget optaget af at udvikle et framework, der kunne skalere, så de kunne sælge millioner af blomster. Ifølge Rasmus Lerdorf var de simpelthen for fokuserede på teknikken frem for den egentlige opgave: at sælge blomster.

- Måske ville de have været bedre tjent med en meget simpel webside med et telefonnummer til sekretærer, der kunne tage imod ordrer, mener Rasmus Lerdorf.

Det enkles elegance
Rasmus Lerdorf hylder ideen om, at teknologien skal være så enkel som mulig. Som der står på hans website:

- Jeg kan lide ting, som jeg kan tage og begynde at bruge til noget nyttigt i løbet af en time eller to. Måske er det fordi, jeg ikke kan bevare koncentrationen i længere tid, men hvis jeg skal læse 300 siders specifikation, inden jeg kan skrive et "Hello World"-program, så er det ikke noget for mig. Eller jeg skal i det mindste have en masse penge for at gøre det. Jeg tror, folk kalder det umiddelbarhed. Jeg tror, det mest er et spørgsmål om dovenskab. Rasmus Lerdorf har prøvet at arbejde med teknologier der er umiddelbart svært tilgængelige. I år 2000 arbejdede han for IBM og skulle i den forbindelse arbejde med Enterprise Java Beans. Det var ikke noget for ham.

- Jeg arbejdede med WebSphere, og det tog mig tre uger at få skrevet min første EJB (Enterprise Java Bean). Det var meget svært og besværligt, beretter Rasmus Lerdorf, der dog nævner, at EJB-udvikling er blevet nemmere med årene. I de ti måneder Rasmus Lerdorf var hos IBM, forsøgte han at få dem til at anvende PHP. På det tidspunkt var det ikke noget for IBM. Det er det blevet siden. I starten af sidste år annoncerede IBM et samarbejde med firmaet Zend, der blev grundlagt af de to israelere Andi Gutmans og Zeev Suraski, der skrev PHP version 3. I dag er firmaet en af de ledende kræfter i PHP-miljøet. I juli 2005 annoncerede IBM så det gratis produkt Zend Core, der er PHP bundlet sammen med IBM's databaser DB2 og Cloudscape. Så der er solid opbakning til PHP. Et sprog, der måske ikke ville være udviklet, hvis Rasmus Lerdorf ikke havde fået en fodboldskade.

Fodboldskade startede it-karrieren
Mens tilblivelsen af PHP til dels kan tilskrives Rasmus Lerdorfs dovenskab, var det nemlig en fodboldskade, der startede Rasmus Lerdorfs interesse for it. Rasmus Lerdorf spillede fodbold i Canada og fik på et tidspunkt en knæskade, der betød, at han skulle ligge stille i nogle uger. I de uger begyndte han at lege med en Texas Instrument-computer med en kilobyte lager til rådighed.

- Der var ikke så mange programmer til rådighed dengang, så jeg begyndte hurtigt at programmere. Jeg startede med at skrive Basic-programmer, men med en kilobyte til rådighed blev man nødt til at programmere i Assembler for at få mest ud af det, siger Rasmus Lerdorf. Fra Texas Instruments gik turen over Vic 20, Commodore 64 og QNX-maskiner. QNX var en unix-udgave, som var udviklet af det canadiske selskab Quantum Software Systems. Rasmus Lerdorf fik adgang til en QNX-maskine på sin canadiske skole og begyndte at skrive en masse QNX-software. På skolen fulgte han et computerkursus, hvor underviseren selv gik på aftenskole for at lære om computere og programmering. Underviserens aftenskole var omkring en uge foran skolens kursus. Meget hurtigt overtog Rasmus Lerdorf kurset "introduktion til programmering". På det tidspunkt var QNX langt bedre end eksempelvis DOS.
- Da jeg så min første DOS-maskine, blev jeg skuffet. Den kunne slet ikke så meget som QNX. Jeg prøvede så vidt muligt at undgå DOS.

Memory-håndteringen var helt umulig; man skulle page ting frem og tilbage. Det var alt for besværligt, mindes Rasmus Lerdorf.

Arbejdet hos Yahoo
I dag arbejder Rasmus Lerdorf hos Yahoo, hvor han har været ansat som infrastrukturudvikler siden 2002. Han har selvfølgelig arbejdet en del med PHP og Apache, men har generelt rimeligt frie tøjler og kaster sig over de ting som interesserer ham. For tiden er det, hvad der betegnes med det lidt tyndslidte begreb web 2.0.

- Jeg ser meget på det programmerbare net eller web 2.0. Det skal være nemmere for almindelige folk at sammensætte - remixe - forskellige services fra nettet og tilføre dem deres egne ideer. Det skal være muligt for folk at skrive deres egen web-frontend og trække på bagvedliggende webservices, siger Rasmus Lerdorf. Rasmus Lerdorfs egen website lerdorf.com er opbygget med services fra eksempelvis Flickr.com og Yahoo!News. Det passer fint med Rasmus Lerdorfs filosofi:

Man skal ikke bare tale om tingene, men gøre det i praksis - gerne på en nem måde.

- Rasmus Lerdorfs foretrukne øl
I Californien findes der til Rasmus Lerdorfs store glæde mange små mikrobryggerier. Han fremhæver Sierra Nevada Pale Ale.

- Dansk-canadierens sportsinteresser

Selvom en fodboldskade fik Rasmus Lerdorf til at interessere sig mere for computere end fodbold, følger han stadig interesseret med i fodbold. Som dansk-canadier følger han også med i ishockey. Som han siger:

- Jeg holder med Danmark, når det gælder fodbold og Canada når det gælder ishockey.

- Yacc

Yet Another Compiler Compiler. Ved at anvende Backus-Naur Form (BNF) kan man beskrive grammatikken for et sprog. Med et BNF-input genererer Yacc en såkaldt parser, der er en vigtig del af en compiler. Læs mere på dinosaur.compilertools.net

- Blå bog
1968: Født på Grønland af danske forældre.
1970: Boede i Frederikssund, Danmark.
1980: Flyttede med sine forældre til Canada.
1990: Chief Support Engineer hos Digital Media Networks, Canada.
1991: Communications Engineer hos NovAtel Communications, Canada
1991: Unix-programmør. Nutec Informatica, Brasilien.
1994: It-konsulent hos Online Construction, Canada. Starter udvikling af PHP.
1996: It-konsulent hos Bell Global Solutions, Canada.
1999: Arbejde hos IBM som Senior Software Engineer, USA.
2000: Arbejde hos Linuxcare. Arkitektur for largescale applikationer, USA.
2001: Far til Carl. Forældreorlov
2002: Arbejder for Yahoo som infrastruktur-arkitekt, USA.