1 / 24

Epost: bopspe@cs.umu.se Hemsida: cs.umu.se/~bopspe Tel: 786 5349 Rum: D438

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

rafael-reed
Download Presentation

Epost: bopspe@cs.umu.se Hemsida: cs.umu.se/~bopspe Tel: 786 5349 Rum: D438

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Epost: bopspe@cs.umu.se Hemsida: http://www.cs.umu.se/~bopspe Tel: 786 5349 Rum: D438

  2. Kurslitteratur: Robert W. Sebesta Concepts of Programming Language”, 4th ed.

  3. 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)

  4. 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

  5. ”Programspråksteori” • Mål för kursen • Kursinnehåll • Varför studera ”programspråksteori”

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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)

  11. Kritierier för utvärdering • Läsbarhet • Skrivbarhet • Tillförlitighet • Kostnader • Övriga

  12. Läsbarhet • Enkelhet • Ortogonalitet • Kontrollsatser • Datatyper och datastrukturer • Ren syntax

  13. Skrivbarhet • Enkelhet och ortogonalitet • Stöd för abstraktion • Uttryckbarhet

  14. Tillförlitlighet • Typkontroller • Undantagshantering • ”Aliasing” • Läs och skrivbarhet

  15. 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

  16. Övriga kriterier • Portabilitet • Generalitet • ”Well-defined”

  17. 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

  18. 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

  19. ”Trade-offs” för språkdesign • Tillförlitlighet vs. Beräkningskostnaden • Skrivbarhet vs. Läsbarhet • Flexibilitet vs. Säkerhet

  20. Implementeringsmetoder • Kompilerande språk • Interpreterande språk • Hybridsystem

  21. 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

  22. 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

  23. Hybridsystem • Översätter till mellankod • Mellankoden skall vara enkel att interpretera • Tex. Perl, och de flesta Java implementationerna

  24. 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”

More Related