Föreläsning 1: Inledning • • • • • • administrativt o dyl kursens mål varför programspråksteori? språkkategorier användningsområden för programspråk språkegenskaper och utvärderingskriterier 2003-11-04 Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Administrativt • Lärare Lennart Edblom Ulrika Hägglund Henrik Löfgren handledning, gruppövningar • Kursbok Sebesta: Concepts of Programming Languages, 5:e (eller 6:e) upplagan, Addison-Wesley, 2002 • Två laborationer jämföra två programspråksparadigmer komplettera en interpretator för ett litet programspråk 2003-11-04 Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 2 Administrativt (2) • Schemaändringar, se schema på webben Flyttade gruppövningar Föreläsning 12/12 till 9/12 • ML-repetition 7/11, kl 10-12, i sal N450 • Aktuell information kommer att finnas på kursens hemsida 2003-11-04 Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 3 Kursens mål • Känna till de viktigaste programspråksparadigmerna • Förstå begreppen som ligger till grund för dem • Kunna utvärdera språk/språkkoncept och välja ut det som är mest lämpligt i en viss situation • Ha baskunskaper om hur programspråk definieras och implementeras Kursen är varken en programmeringskurs eller en kurs i översättarteknik 2003-11-04 Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 4 Varför programspråksteori? Det räcker inte att kunna programmera. Datavetare blir man först när man kan reflektera över hur saker och ting hänger ihop och hur de fungerar. Att begrunda ämnet på ett vetenskapligt sätt kräver att • formulera allmänna principer som det bygger på • förstå de grundläggande ideerna • bli medveten om olika alternativs för- och nackdelar • på lång sikt själv kunna bidra till utvecklingen 2003-11-04 Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 5 Varför programspråksteori? (2) Mer praktiska motiveringar är att • få tillgång till ett större utbud av problemlösningsverktyg • skapa en bas för att lättare kunna lära sig/välja/utveckla programspråk • kunna undvika fel som beror på att ”farliga” begrepp används eller olika begrepp inte hålls isär • skriva bättre (t.ex. effektivare) program genom att kunna bedöma hur de påverkas av implementationsfrågor Dessutom: Ju fler personer som får en bättre överblick dess större är chansen att nya koncept får ingång i praktiken. 2003-11-04 Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 6 Språkkategorier Imperativa språk beskriver hur minnescellernas innehåll förändras stegvis orienterar sig mot von Neumanns datorarkitektur Funktionella språk specificerar funktioner efter matematikens förebild abstraherar bort från datorn Logiska språk specificerar basfakta och deras förhållanden använder logiska inferensregler för att härleda nya fakta Objektorienterade språk fokuserar på ”objekt” som ”kommunicerar” med varandra ofta imperativt i grund och botten 2003-11-04 Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 7 Användningsområden för programspråk Vetenskapliga beräkningar effektivitet, snabb flyttalsaritmetik (tidigt språk: FORTRAN) Ekonomiska tillämpningar decimalaritmetik, generera ekonomiska rapporter (tidigt språk: COBOL) Artificiell intelligens ”symboliska” beräkningar, hantering av listor (tidigt språk: LISP, senare: PROLOG) Systemprogrammering effektivitet, direkt tillgång till operativsystemets rutiner och resurser (tidigt språk: PL/I (PL/S), senare: C) Övriga (språk för speciella områden, ”scripting languages” mm) 2003-11-04 Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 8 Kriterier för språkutvärdering Läsbarhet hur lätt är det att förstå vad programmet gör? avgörande faktor för underhåll av mjukvara påverkar alla övriga kriterier Skrivbarhet hur lätt är det att skriva ett program? Uttrycka problemet och dess lösning motiveringen för att överhuvudtaget utveckla programspråk ingen skrivbarhet utan läsbarhet 2003-11-04 Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 9 Kriterier för språkutvärdering (2) Tillförlitlighet gör programmen det de ska göra? ingen tillförlitlighet utan läsbarhet och skrivbarhet ibland det viktigaste kriteriet av alla Kostnader som orsakas av att undervisa folk och skriva, använda och underhålla program implementera språket köra program (effektivitet) 2003-11-04 Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 10 Egenskaper som särskilt påverkar läsbarhet Enkelhet antalet koncept / begrepp hur många olika sätt finns det att uttrycka en sak? används ”overloading” på ett nyttigt sätt? Ortogonalitet ett fåtal grundläggande och oberoende byggstenar kan kombineras enligt enkla syntax- och semantikregler utan undantag ökar läsbarheten (så länge det inte används i övermått) Kontrollstrukturer överskådlig struktur är viktigare än flexibilitet 2003-11-04 Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 11 Egenskaper som särskilt påverkar läsbarhet (2) Datatyper och datastrukturer möjlighet att definiera egna måste finnas (ortogonalitet!) data måste kunna representeras på ett ”naturligt” sätt Stöd för abstraktion begrepp som tillåter att skapa olika detaljnivåer både process- och dataabstraktion är viktiga Syntax tillåtna identifierare språkets syntax bör vara lätt att tolka (korrekt) 2003-11-04 Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 12 Egenskaper som särskilt påverkar skrivbarhet Enkelhet och ortogonalitet lär dig bara några få grundkoncept och regler så kan du språket Stöd för abstraktion ta ett problem i taget (process / data) Uttryckskraft koncepten som finns bör vara kraftfulla (men det kan lätt minska läsbarheten!) 2003-11-04 Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 13 Egenskaper som särskilt påverkar tillförlitlighet Typkontroll typfel tyder på felaktig eller slarvig programmeringsstil helst typkontroll under kompileringen Hantering av undantag (”exception handling”) att enkelt kunna beskriva hur undantag ska hanteras återhämtning efter att fel uppstod Referenstyper och pekare vad kan de referera till? ”aliases” ger ofta problem möjlighet till explicit avallokering är farligt 2003-11-04 Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 14 Enkla svar saknas!!! Kriterierna strider mot varandra på många sätt. Att hitta den bästa kompromissen är ofta en avvägningsfråga. Exempel • enkelhet (läsbarhet) mot uttryckskraft • tillförlitlighet mot effektivitet • flexibilitet mot säkerhet 2003-11-04 Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 15