Table of Contents Previous Chapter

uLPC - Ett lättanvänt kraftpaket

uLPC-kod är väldigt lik C-kod men fungerar väldigt annorlunda. För det första så behöver man inte kompilera uLPC. uLPC interpreteras av programmet /usr/local/bin/ulpc och för att man ska kunna skriva skriva scripts i uLPC så kan man skriva #!/usr/local/bin/ulpc på första raden i sitt uLPC-program.

Det som händer när uLPC startas med ett uLPC-program som argument är att funktionen main() i det programmet anropas. På så sätt kan man skriva programmet 'hello_world' som följer:

#!/usr/local/bin/ulpc

int main()

{

  write("Hello world.\n");

}

Funktionen write() är en fördefinierad funktion som skriver ut den sträng man ger som argument till stdout.

Kort men användbart exempel

Programmet på nästa sida rsif (Replace String In File) kommer med uLPC.

Här kan vi se exempel på if-satser och for-loopar. Som synes fungerar de precis som sina motsvarighter i C. Detta gäller även för while, do-while och return.

Inbyggda typer

uLPC har många trevliga och kraftfulla typer. Dessa typer är inbyggda och är inte 'objekt' i objektorienterad mening. Någon typsäker objektorientering finns inte, inte heller 'operator overloading'.

Notera att index och värden inte ham nar i någon speciell ordning i en map ping, så bara för att man skriver index och värden i en speciell ordning så kan man inte få ut dem i den ordningen senare.

Notera att det inte finns några explicita pekare. Arrayer, mappings, program, object och funktioner skickas dock runt ungefär som om man skickade runt pekare till dem. Detta märks inte i hur man skriver, vilket är smidigt men kan verka förvillande för somliga.

Masterobjektet

Innan ditt program laddas laddas masterobjektet. Masterobjektet finns nomalt i filen /usr/local/lib/ulpc/master.lpc. Mycket av uLPCs beteende kan ändras genom att modifiera masterobjektet. Om man vill kan man ange vilket masterobjekt som skall användas med -m masterobjekt. Masterobjektet är ansvarigt för att skriva ut felmeddlanden, ladda ditt script, sätta upp efuns skrivna i uLPC (som write) mm. mm.

Simulerade Funktioner

Masterobjektet laddar normalt också in /usr/local/lib/ulpc/simulate.lpc som innehåller en hög funktioner som adderas som efuns av simulate.lpc. Efun betyder 'external function' och är helt enkelt funktioner som är globalt definierade för alla program. De kan vara inbyggda i drivern eller skrivna i uLPC. Exempel på simulerade funktioner är read_bytes och write_file. De är bekvämlighets- och kompatiblitets-funktioner skrivna i uLPC som använder i sin tur använder read() och write().

Filhantering

Filhanteringen i uLPC är objektorienterad, man instansierar filprogrammet, anropar open() i det och kan sedan använda read()/write() mm. Man kan också öppna sockets eller dubbelriktade pipes. Dock finns inga buffrar i uLPCs filhantering, det får man skriva själv. Jag kommer snart att implementera buffrad filhantering för uLPC i uLPC. Den buffrade filhanteringen kommer då att ingå i standarddistributionen.

Kraftfulla funktioner

Som vi sett exempel på i rsif så innehåller uLPC en hel del kraftfulla funktioner. Några exempel:

Vill du veta mer? Jag jobbar för närvarande på en referensmanual till uLPC och även om den inte är färdig än så finns det jag skrivit hittils att beskåda på:
http://www.signum.se/~hubbe/ulpc.html.

Kreativt samarbete genom MUD

Under våren 1996 har Rodenskolan i Norrtälje och Åva Gymnasium i Täby tävlat i konsten att använda MUD-teknik i skolan för något pedagogiskt syfte.

Tävlingen resulterade i två bidrag, bägge från Åva Gymnasium:

Båda bidragen finns att beskåda inne i SvenskMUD (koppla dig till svmud.lysator.liu.se port 2216 för att titta på just de här bidragen.)

Tävlingen arrangerades i samarbete mellan Universitetet i Linköping, Åva Gymnasium, Telia Research och SvenskMUD. SvenskMUD ställde upp med plattformen.

Kontaktpersoner för tävlingen var:

Du kan läsa mer om tävlingen vid
http://www.lysator.liu.se/svmud/tavling.html

Table of Contents Next Chapter