240 likes | 356 Views
Epost: bopspe@cs.umu.se Hemsida: http://www.cs.umu.se/~bopspe Tel: 786 5349 Rum: D438. Kurslitteratur:. Robert W. Sebesta Concepts of Programming Language”, 4th ed. Schemaändningar. 13 April är det två föreläsningar 14 April är det föreläsning + gruppövning
E N D
Epost: bopspe@cs.umu.se Hemsida: http://www.cs.umu.se/~bopspe Tel: 786 5349 Rum: D438
Kurslitteratur: Robert W. Sebesta Concepts of Programming Language”, 4th ed.
Schemaändningar • 13 April är det två föreläsningar • 14 April är det föreläsning + gruppövning • 17 April varken föreläsning eller gruppövning • 18 April ingen föreläsning • 25 April är det en extra föreläsning (repetition av hela kursen)
Laboration 3 • Utvärdering av ett programmeringsspråk • 2 och 2 mejla senaste 6/4 • Ingen programmering • Uppsats/rapport • Inlämning 25/4 • Muntlig redovisning • Datum meddelas senare • Se web-sidorna för mer information
”Programspråksteori” • Mål för kursen • Kursinnehåll • Varför studera ”programspråksteori”
Kursinnehåll • Allmänt om programmeringsspråk • Grundläggande principer för design av programmeringsspråk • Visa på de grundläggande byggnadsstenarna hos programmeringsspråk
Mål • Bli orienterade om programmeringsspråk • Få en förståelse för hur programmeringsspråk är uppbyggda • Kunna läsa och förstå en informell beskrivning av ett programmeringsspråk • Underlätta inlärandet av nya programmeringsspråk • Lättare kunna välja språk
Varför studera programspråk? 1. Ökad förmåga att uttrycka och förstå begreppinom programmering 2. Kunskaper för att välja programmeringsspråk 3. Lättare att lära sig nya programmeringsspråk 4. Förstå varför ett språk är implementerat på ett visst sätt 5. Designa nya programmeringsspråk 6. Bredare förståelse av datavetenskap som område
Programmerings domäner • Vetenskapliga beräkningar • FORTRAN • ”Business applications” • COBOL • AI- ”symboliska beräkningar” • LISP, Prolog • Systemprogrammering • C • Scriptprogrammering (bla. www) • PERL, Javascript • Tillämningsspråk • RPG - rapportgenerering • PLEX - AXE-växlar
Krav på bra programspråk • Universellt • Lösa alla lösbara problem • Naturligt • Lösningarna skall kännas naturliga • Implementerbara • Måste gå att implementera • Effektiva • Det måste gå att göra en rimligt effektiv implementation av språket (både tids och minnes effektivt)
Kritierier för utvärdering • Läsbarhet • Skrivbarhet • Tillförlitighet • Kostnader • Övriga
Läsbarhet • Enkelhet • Ortogonalitet • Kontrollsatser • Datatyper och datastrukturer • Ren syntax
Skrivbarhet • Enkelhet och ortogonalitet • Stöd för abstraktion • Uttryckbarhet
Tillförlitlighet • Typkontroller • Undantagshantering • ”Aliasing” • Läs och skrivbarhet
Kostnader • Är ett samspel mellan många (alla andra) faktorer • Utbildning kostar • Skriva program kostar • Kompilering kostar • Exekvering av program kostar • Utvecklingsmiljöer/kompilatorer mm kostar • Tillförlitlighet kostar • Att få • Men också dålig tillförlitlighet kostar • Underhållandet av program kostar
Övriga kriterier • Portabilitet • Generalitet • ”Well-defined”
Utmärkande influenser för design • Arkitekturen hos maskinerna • Von Neumann 99.9% av alla datorer • Övriga arktekturer ||-arkitekturer, dataflödes, LISP-maskinen,... • ”Hypade” programmeringsmetodiker • Strukturerad programmering • Dataabstarktion • Objektorienterad programmering
Typer av programspråk • Imperativa • FORTRAN , C, Modula 2, och Pascal • Funktionella • LISP, Haskell, Miranda och ML • Logikspråk • Prolog • Objektorienterade • Simula, Smalltalk, Eiffel, C++, Java
”Trade-offs” för språkdesign • Tillförlitlighet vs. Beräkningskostnaden • Skrivbarhet vs. Läsbarhet • Flexibilitet vs. Säkerhet
Implementeringsmetoder • Kompilerande språk • Interpreterande språk • Hybridsystem
Kompilering • Översätter hösnivåspråk -> maskinkod • Snabb exekvering av programmen • Långsam process att översätta • Vanligast för produktionsspråk så som • C, COBOL, FORTRAN, ADA
Interpretering • ”Mjukvaru dator” • Hanterar högnivåkommandon istället för maskininstruktioner • Ingen översättning av programmet • Långsam exekvering av program • Allt ovanligare • En del LISP implementationer
Hybridsystem • Översätter till mellankod • Mellankoden skall vara enkel att interpretera • Tex. Perl, och de flesta Java implementationerna
Historisköverblick (Självstudier) • Årtal och släktskap mellan språk är inte entydigt • Nya språk har idéer från ”alla” äldre språk • Kapitel 2 kan läsas ganska översiktligt strunta i detaljnivå • Försök att komma ihåg ”nytt och bestående”