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