RAW FP: Resource Aware Functional Programming
- Reference number
- RIT10-0087
- Start and end dates
- 110901-160831
- Amount granted
- 24 250 000 SEK
- Administrative organization
- Chalmers University of Technology
- Research area
- Information, Communication and Systems Technology
Summary
The goal of this proposal is to develop domain specific embedded languages for resource-aware functional programming, with associated tool-chains, that can deliver an order of magnitude improved productivity in three domains of importance to Swedish industry: * signal processing and low-level control in products such as radio base stations, * programming highly parallel heterogeneous architectures containing graphics processors for tasks such as medical image processing, * real-time automotive software built around the AutoSAR standard. Our milestones after two years are: * A complete tool chain for digital signal processing (based on current Feldspar) including preliminary industrial case studies. * A prototype tool chain programming machines containing one or more GPU. * A prototype tool chain for part of the automotive application area. and after five years: * Broadened applicability (within the software stack) for the future Feldspar tool chain * Real case studies of the application of Feldspar technology * A complete tool chain for the Automotive DSL * A complete tool chain for programming GPUs * A general framework and design principles for DSL development To achieve the goal, we will have to perform disciplinary research at the frontiers of the fields of domain specific lanauage design and implementation and of program testing. We will have to develop new methods of expressing, controlling and analysing resource use in highly parallel machines.
Popular science description
Programvaruutveckling är en stor industri i Sverige, utan att de flesta känner till det. Hälften av landets export är beroende av programvara, och drygt 75,000 människor jobbar med det. Dock är konkurrensen från låglöneländerna mördande, och för att klara sig beräknar Swedsoft att svensk programvaruutveckling måste bli tio gånger effektivare till år 2020. Detta projekt ska bidra till en dellösning av denna enorma utmaningen. Hemligheten är en ny sorts programspråk, ”funktionella programspråk”, som sköter många detaljer åt programmeraren, och hjälper denna att åstadkomma mycket med bara lite jobb. Sådana programspråk växer fort just nu, och ligger bakom snabbväxande företag som Klarna—men lämpar sig inte när programmeraren behöver styra datorns resursanvändning noga. Tyvärr behövs detta i t.ex. bilens programvara, eller i programmen som avkodar radiosignaler i basstationerna för mobilt bredband—område som är mycket viktiga för svensk industri. I detta projekt använder vi därför funktionella program som skriver andra program—programmeraren skapar sin tillämpning i ett funktionellt språk, och åtnjuter den förbättrade produktiviteten, men när programmet körs skriver det ett annat, effektivt program i ett lågnivåspråk, som kan styra resursanvändningen rätt. Idén kräver dock biblioteksrutiner anpassad till tillämpningsdomänen som hjälper till att skriva dessa lågnivåprogram. Dessa rutiner kan ses som ett nytt domänspecifikt språk för det aktuella tillämpningsområdet. Detta projekt skapar sådana språk för tre viktiga tillämpningar: basstationer för mobilt bredband, fordonselektronik, och datorgrafik. Dessutom angriper vi ett annat stort problem—att nyskriven programvara brukar vara buggig, och buggarna är tidsödande att hitta. Vårt verktyg QuickCheck tillåter utvecklare att sätta upp generella villkor som programvaran ska uppfylla, istället för att skapa många enskilda testfall, och slumpar sedan fram testfall som testar villkoret. Det kan dessutom minimera misslyckade testfall, så att programmeraren får bara ett kvitto på att villkoret uppfylls, eller ett litet exempel som visar att det uppfylls inte. Detta underlättar både testning och feldiagnos, och förbättrar mjukvarans kvalité samtidigt som den sänker kostnader. Metoden används redan för att testa t.ex. styrprogram i Ericssons 4G basstationer; projektet anpassar den även till dessa resursmedvetna domänspecifika språk. Målet är framtagning av resurssnål programvara snabbt, korrekt, och billigt.