Software Technology. Josef Svenningsson



Relevanta dokument
Parallellism, återblick

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Introduktion till programmering. Programspråk och paradigmer

Program & programmering

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

Föreläsning 2. Operativsystem och programmering

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

Föreläsning 8: Exempel och problemlösning

F4. programmeringsteknik och Matlab

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Föreläsning 1 & 2 INTRODUKTION

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Imperativ programmering

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Föreläsnings 9 - Exceptions, I/O

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Typkonvertering. Java versus C

Föreläsning 2, vecka 8: Repetition

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

DD1361 Programmeringsparadigm Föreläsning 1: Intro

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Studienämnden Data

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

TDDC77 Objektorienterad Programmering

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Algoritmer. Två gränssnitt

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Svaret kan ges i Javakod (eller i UML-klassdiagram). public class A { B minb;... } public class B { <B:s många variabler och metoder> } Lösning:

"if"-satsen. Inledande programmering med C# (1DV402)

Föreläsning 12: Exempel och problemlösning

Föreläsning 6: Metoder och fält (arrays)

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Laboration 13, Arrayer och objekt

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

DD1361 Programmeringsparadigm Föreläsning 1: Intro

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

Den som bara har en hammare tror att alla problem är spikar

Tentamen , Introduktion till Java, dtaa98, dtea53

JAVAUTVECKLING LEKTION 4

The Last Adventure. Innehåll. Objektorientering. Språket Java. Java - Paket. Java - synlighet. Den sista lektionen. Repetition.

Kurser inom Datavetenskapligt kandidatprogram och Computer Science Master s programme våren 2010

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016

Föreläsning 1 & 2 INTRODUKTION

Reguljära uttryck. Reguljära uttryck. Nu kommer en siffra78 och en till SIFFRA(78) men utan 7kstuga SIFFRA(89)

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

SMD 134 Objektorienterad programmering

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Kompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2009

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Undervisning. Examination

Tentamen i Grundläggande programmering STS, åk 1 lördag

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

Studienämnden Data

OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15

Programmering för språkteknologer II, HT2011. Rum

Tentamen Programmering fortsättningskurs DIT950

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

Trådar. Motivering. Många program måste kunna hålla på med flera saker samtidigt, till exempel. fleranvändarsystem.

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

Föreläsning 1 Datastrukturer (DAT037)

Classes och Interfaces, Objects och References, Initialization

Tentamen. Lösningsförslag

Klasser som datastrukturer

Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde.

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Programmering. Hur, var, när och varför. 22 November. Lars Ohlén Tieto

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programmering (TDDC77)

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

IT för personligt arbete F6

Realtidssystem. - Semaforer, trådsynkronisering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Innehålls förteckning

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Kompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2014

Klassdeklaration. Metoddeklaration. Parameteröverföring

Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006

Kompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2010

Kompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2011

JAVAUTVECKLING LEKTION 8

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Parallellprogrammering i C++ 17 EDT621 Datorarkitekturer med Operativsystem Viktor Lindgren

Transkript:

Software Technology Josef Svenningsson

Software Technology

Software Technology Området Software Technology handlar i mångt och mycket om följande frågeställning: Hur designar man programmeringsspråk för olika ändamål? Ändamålen för ett programmeringsspråk kan vara olika: Effektivitet Minska buggar Förhindra säkerhetsläckor Lättare att skriva större program Lättare att skriva en viss typ av program

Feldspar

Domänspecifika språk Ett domänspecifikt språk är ett språk som är inriktat på ett specifikt område, eller domän. Exempel: Matlab, array-programmering Excel, kalkylark Regexp, reguljära uttryck UnrealScript, beskriva beteenden i 3D-spel

Figure

Figure

Figure

Programmera basstationer Hur basstationer programmeras idag: Lågnivå kod C och assembler Problem: Svårt att använda koden på ny hårdvara Svårt att parallelisera koden Svårt att skriva korrekt kod

Feldspar Feldspar Ett domänspecifikt språk, utvecklat på Chalmers i samarbete med Ericsson Feldspar är designat för att underlätta utvecklingen av inbäddade system: Höja abstraktionsnivån för programmering av inbäddade system Generera effektiv kod för inbäddade system Generera parallel kod

Skalärprodukt

Skalärprodukt float sum = 0.0; for (int i=0;i<length;i++) { sum += a[i] * b[i]; }

Skalärprodukt float sum = 0.0; for (int i=0;i<length;i++) { sum += a[i] * b[i]; } Lätt att göra fel med array indexering Svårt att parallelisera Svårt att se vilken algoritm som implementeras

Skalärprodukt i Feldspar scalarprod2 :: DVector Float -> DVector Float -> Data Float scalarprod2 a b = sum (zipwith (*) a b)

Skalärprodukt i Feldspar scalarprod2 :: DVector Float -> DVector Float -> Data Float scalarprod2 a b = sum (zipwith (*) a b) Närmare den matematiska definitionen Inga array indexeringar som kan gå fel Enkelt att parallelisera Effektivitet?

Fusion Feldspar har en optimering som kallas fusion. Den tar bort intermediära vektorer I fallet med skalärprodukten blir programmet en tight loop Gör att man kan skriva program på en hög nivå och ändå få effektiva program Feldspar är noga designat så fusion alltid kan optimera program

Fusion i praktiken Ericsson implementerade delar av 4G protokollet i Feldspar Feldspar-koden visade sig vara snabbare än Ericssons kod som används i produktion Fusion visade sig vara den avgörande faktorn

Säkerhet

Figure

Informationsflöde Figure

Informationsflöde int l, h; l = h;

Informationsflöde int l; bool h; if (h) { l := 3 } else { l := 42 }

Paragon Paragon är en utökning av Java Hjälper att skriva säkra program som inte läcker information av misstag Kan uttrycka mycket kraftfulla säkerhetspolicies, t.ex. deklassificering

JSFlow En implementation av Javascript för att spåra informationsflöde Kan användas som en utökning i en browser

Race condition

class Race implements Runnable { int counter = 0; public void run() { for(int i=0; i<100000;i++) { counter++; } }

public static void main(string[] args) { try { Race r = new Race(); } Thread t1 = new Thread(r); Thread t2 = new Thread(r); t1.start(); t2.start(); t1.join(); t2.join(); System.out.println("counter :" + r.counter); } catch (Exception e) { System.out.println(":-("); } }

Race condition Live demo

Thread1 Thread2 counter 0 read 0 read 0 increase 0 increase 0 write 1 write 1

Figure

Rust Figure

Rust Rust är ett nytt programmeringsspråk från Mozilla Vill kunna generera minst lika effektiv kod som C++ Vill kunna skriva Vill kunna undvika många typer av programmeringsfel Race conditions Typfel Minnesläckor... Servo, nästa generations webläsare Rust används för att skriva en ny webläsare från Mozilla

Exjobb Vi har för närvarande en exjobbare som jobbar med att förbättra stödet för parallelism i Rust. Projektet kommer att förbättra stödet för s.k. task-parallelism i Rust Slutresultatet kommer att användas bl.a. för att snabba upp renderingen av websidor i Servo.

Kurser

Kompilatorer Programming Language Technology, DAT151 Compiler Construction, TDA283 Ni får lära er: Hur en kompilator översätter ett språk till bytekod/maskinkod Hur ni skriver en egen kompilator En djupare förståelse för hur program exekverar på en maskin

Language Based Security Language Based Security, TDA602 Ni får lära er om: Olika typer av attacker, t.ex. buffer overrun, code injection Hur man programmerar för att undvika attacker Hur moderna programmeringsspråk kan hjälpa att skriva säkrare program

Programmeringsspråk Frontiers of Programming Languages, TDA261 Programming Paradigms, DAT121 Ni får lära er om: Olika paradigmer för programmeringsspråk och vad de är bra för Vad som krävs för att designa ett programmeringsspråk Verktyg för att manipulera program

Funktionell Programmering Functional Programming, TDA452 Advanced Functional Programming, TDA342 Ni får lära er om: Paradigmed Funktionell Programmering och dess fördelar Programmering i språket Haskell Använda Haskell för att skriva inbäddade domänspecifika språk Många programmersspråk, t.ex. C++, Java, C#, har på sistone valt att inkludera koncept från funktionell programmering

Parallel Programmering Parallel programmering (Concurrent Programming), TDA383 Ni får lära er om: Olika problem med parallel programmering, t.ex. race conditions Olika metoder för att hantera problemen med Semaforer Monitorer Message passing Software Transactional Memory

Parallel Funktionell Programmering Parallel Functional Programming, DAT280 Ni får lära er om: Hur man kan snabba upp kod genom att parallelisera den Olika paradigmer för parallel programmering, t.ex. message passing, map-reduce, data parallelism, gpu programmering, parallel skeletons Hur funktionell programmering kan förenkla parallel programmering