Utblickar och sammanfattning TDP007 Konstruktion av datorspråk Föreläsning 8 Peter Dalenius Institutionen för datavetenskap 2013-02-26 Översikt • Kompilering av kod i Java • Sammanfattning av kursen och planering av examination Stackmaskin • En teoretisk beräkningsmodell där minnet i princip endast består av en stack • Ett program som simulerar en sådan maskin 42 255 2760 10 143 Java Virtual Machine (JVM) • JVM är ett slags utökad stackmaskin som kan sägas interpretera program representerade med Java bytekod. Programkörning Källkod i Java Kompilator Bytekod JVM Exempelkod i Java public class Example { public static void main(String[] args) { outer: for (int i=2; i<1000; i++) { for (int j=2; j<i; j++) { if (i % j == 0) continue outer; } System.out.println(i); } } } Vad finns i bytekod-filen? Konstantpool Metoder Attribut Bytekod 00: 01: 02: 03: 06: 09: 0a: 0b: 0c: 0d: 10: 11: 12: 13: 16: 19: 1c: 1f: 22: 23: 26: 29: 2c: iconst_2 istore_1 iload_1 sipush 03e8 if_cmpge 2c iconst_2 istore_2 iload_2 iload_1 if_cmpge 1f iload_1 iload_2 irem ifne 19 goto 26 iinc 2, 1 goto 0b getstatic #2 iload_1 invokevirtual #3 iinc 1, 1 goto 02 return Stack Variabler Kursens mål • förklara och använda reguljära uttryck seminarie 1-2 • använda verktyg för hantering av uppmärkningsspråk (t.ex. XML) seminarie 2 • använda och modifiera en tolk för ett enklare programspråk seminarie 3 • redogöra för och tillämpa grundläggande principer för design av programspråk seminarie 3-4 samt opposition och utvecklarblogg Olika typer av datorspråk Dataspråk Programspråk reguljära uttryck XML Domänspecifika språk Ruby-specifika tekniker för DSL Traditionell beräkning Generella språk parsning Alternativ beräkning icke-deterministisk constraintnätverk programmering Vilka språk är mest populära? • TIOBE Programming Community Index http://www.tiobe.com/index.php/content/paperinfo/tpci/index.ht ml Varför finns det så många språk? • Språk utvecklas hela tiden • Speciella tillämpningar • Tycke och smak Varför blir ett språk populärt? • Uttryckskraft • Lätt att lära sig • Standarder • Öppen källkod • Bra verktyg • Stöd från företag och organisationer Varför ska man studera språk? • Bättre på att förstå hela språket • Kan välja olika sätt att uttrycka sig • Bättre på att använda hjälpverktyg • Återskapa funktionalitet i språk som saknar den • Återanvända språktekniker för andra ändamål Planering av examination • Dugga 2 • torsdag 7/3 kl 15.15-17.15 • Datortenta (omexamination för dugga 1 och 2) • tisdag 12/3 kl 8.00-12.00 • senaste anmälan söndag 3/3 • Hemtenta (omexamination för seminarier) • läggs ut i samband med datortentan • deadline 1 april www.liu.se