Programmeren met Algebra André van Delft 6 februari 2012 Presentatie op Grotius College Delft.

Slides:



Advertisements
Verwante presentaties

Advertisements


Zelf objecten maken in VBA Ynte Jan Kuindersma, BIRD Automation Nationale Officedag 2009 EDE, 14 Oktober 2009.


Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Een programma opbouwen.
HM-ES-th1 Les 9 Hardware/Software Codesign with SystemC.
Stateful web, developments, trends 1 Webtechnologie Lennart Herlaar.
Digitale tools: SlideShare
Real-Time Systems (RTSYST) Week C++ concurrent programmeren C++ heeft sinds C++11 een standaard library voor concurrent programmeren. Alternatieve.
Access en MySql Ynte Jan Kuindersma, BIRD Automation Nationale Officedag 2009 EDE, 14 Oktober 2009.
Thursday, 10 July 2014 donderdag 10 juli 2014 Click Klik.
Project Combat Casper Bommelé Marc Eekhout Michel van der Hut
JAVA1 H 16. MULTITHREADING. 1. INLEIDING. Threads: delen van het programma die in concurrentie met elkaar gelijktijdig in executie gaan. Thread is een.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Gelinkte lijsten Finite State.
OOP met Java Sessie 1.
GESPRG Les 14 Gestructureerd programmeren in C. 174 Details! The devil is in the details.
Project Software Engineering Universiteit AntwerpenBetrouwbaarheid 2.1 Ontdek de 7 verschillen.
Klassen en objecten.
Greenfoot Workshop Bobby - Snake.
Omgevingen zijn dan geïmplementeerd als Symbol Tables. Symbol Table mapt een symbool met een Binding Meerdere noties van binding –Meerdere manieren te.

Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
1/1/ / faculty of Computer Science eindhoven university of technology 5B040:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 8(2): Multi-processing.
Algoritmen en Datastructuren (ALDAT) EVMINX4 Dagdeel 2.
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
GESPRG Les 8 Gestructureerd programmeren in C. 101 Array Meerdere variabelen van hetzelfde type kun je samennemen in één array variabele. Stel in een.
Real-Time Systems (RTSYST) Week IPC inter process communication Shared variabele based (H5) Message based (H6) Kan ook gebruikt worden in systemen.
GESPRG Les 12 Gestructureerd programmeren in C. 152 Huiswerk Uitwerking void reverse(int a[], int n) { int first = 0, last = n - 1; while (first < last)
Opgave 1a: afronden int n=5; double a, b, c, d; a = n * 1.5; b = n * 3 / 2; c = n / 2 * 3; d = 3 / 2 * n; a b c d
Array nDeclaratie nCreatie nOpvragen nWijzigen nLengte String [ ] a; a = new String[10]; ……a[5]…… a[5] = ……; …a.Length… …is eigenlijk overbodig! List a;
Eerste deeltoets Uitwerking. Resultaten Gemiddeld: 6,01 Tips voor de volgende keer: – Werk in klad uit, schrijf duidelijk – Oefenen met loops en tellertjes.
C++ handboek : C++ Leen Ameraal 6e druk academic service.
Inleiding programmeren in C++ Life Science & Technology 9 februari Universiteit Leiden.
Checked exceptions: FileNotFoundException, IOException, …
JAVA --- H71 thread= draad in het programma (pad) gewone applets = één thread, volgt één pad multithreading = er worden twee of meer paden gestart, die.
Hibernate Object relational mapping
HOMCOM Ledenvergadering 28/01/2013. Google is- niet-langer-een-spookstad/
JAVA1 H 22. COLLECTIONS FRAMEWORK. 1. INLEIDING. Collections framework Is een verzameling van data structuren, interfaces en algoritmen Meest voorkomende.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Het ARM bord met wat library functies.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag GUI  command line redirection.
Hoofdstuk 9 Objecten en klassen.
Samenwerken via Internet Ynte Jan Kuindersma, BIRD Automation Nationale Officedag 2009 EDE, 14 Oktober 2009.
Arrays.
Deltion College Engels C1 Schrijven [Edu/002] thema: CV and letter of application can-do : kan complexe zakelijke teksten schrijven © Anne Beeker Alle.
Deltion College Engels C1 Luisteren [Edu/001] thema: It’s on tv can-do : kan zonder al te veel inspanning tv-programma’s begrijpen.
Deltion College Engels B1 En Spreken/Presentaties [Edu/007] Thema: Soap(s) can-do : kan met enig detail verslag doen van ervaringen, in dit geval, rapporteren.
Deltion College Engels C1 Spreken/Presentaties [Edu/006] thema ‘I hope to convince you of… ‘ can-do : kan een standpunt uiteenzetten voor een publiek van.
Arjen Kamphuis Infosecurity intro blijf de baas over je eigen bits.
We zijn toch allemaal zoekende?
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
EML en IMS Learning Design
Link Popularity Het principe van linkpopulariteit kun je als volgt samenvatten: hoe meer webpagina's er naar een bepaalde webpagina linken, des te belangrijker.
C++ C++ als een verbetering van C Abstracte datatypen met classes Constructoren en destructoren Subklassen binding van functies 1.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 2 definitie.
Inleiding tot programmeren
Tircms03-p les 6 Templates. Functietemplates void verwissel(int &x, int &y); { int w=x;x=y;y=w;} Dezelfde functie voor meerdere types heet een functietemplate.
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
Datacommunicatie en netwerken
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM.
Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie.
tircms02-p les 1 Operating Systems practicum
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 3 redirection,
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag User-defined characters op de.
Hoofdstuk 10.3 Tekst-editor: MDI-interface Dialogen Files lezen Abstracte klassen.
Tircms03-p les 1 C++ voor C-kenners Voor Technische Informatica.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Een embedded systeem: ARM bord.
De programmeertaal C++
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Voorbeeld: Simulatie van bewegende deeltjes
Transcript van de presentatie:

Programmeren met Algebra André van Delft 6 februari 2012 Presentatie op Grotius College Delft

CV Studie Wiskunde in Leiden Studie Bedrijfskunde in Delft/Rotterdam Promotieplaats Informatica in Leiden Software-ontwikkelaar op contractbasis Wetenschapper bij NATO/NC3A Onderzoek & Ontwikkeling van Programmeertalen – Parallelisme – Grootheden & Eenheden – Rare talen

Alan Kay

Programmeren moeilijk sinds 1995 Meerdere taken tegelijk:threading – HoofdtaakMain thread – Langdurige takenBackground thread – SchermafhandelingGUI thread Gebeurtenissen (event handling) & communicatie – Toetsenbord, muis, touch screen – GPS, sensoren – Internet, Bluetooth Programmeertalen: C  C++  Java, C#  Scala Geen oplossing…

GUI-applicatie - 1 Invoerveld Zoekknop Zoeken… Resultaten

GUI-applicatie - 2 val searchButton = new Button("Go”) { reactions.+= { case ButtonClicked(b) => enabled = false outputTA.text = "Starting search...” new Thread(new Runnable { def run() { Thread.sleep(3000) SwingUtilities.invokeLater(new Runnable{ def run() {outputTA.text="Search ready” enabled = true }}) }}).start }

GUI-applicatie - 3 live = searchSequence... searchSequence = searchCommand showSearchingText searchInDatabase showSearchResults searchCommand = searchButton showSearchingText {outputTA.text = "…"} showSearchResults {outputTA.text = "…"} searchInDatabase = {* Thread.sleep(3000) *}

GUI-applicatie - 4 Zoeken:knop of Enter-toets Afbreken:knop of Escape-toets Exit:knop of ; daarna: “Are you sure?”… Alleen zoeken als tekstveld gevuld is Voortgang tonen

GUI-applicatie - 5 searchGuard = if(!searchTF.text.isEmpty). anyEvent(comp)... searchInDatabase = {*Thread.sleep(3000)*} || progressMonitor progressMonitor = {*Thread.sleep( live = searchSequence... || exit searchCommand = searchButton + Key.Enter cancelCommand = cancelButton + Key.Escape exitCommand = exitButton + windowClosing exit = while(!areYouSure) cancelSearch = showCanceledText searchSequence = searchGuard searchCommand; showSearchingText searchInDatabase showSearchResults / cancelSearch

Process Algebra Wiskundige theorie over processen Bergstra&Klop, Amsterdam, 1982 x y = x y + y x + x|y x+y = y+x (x+y)+z = x+(y+z) x+x = x (x+y)·z = x·z+y·z (x·y)·z = x·(y·z) O+x = x O·x = O 1·x = x x·1 = x δ+x = x δ·x = δ ε·x = x x·ε = x (x+ε)·y = x·y + ε·y = x·y + y

Werking: Templates & Call Graphs {Hello}+ε; {World} (x+ε)·y = x·y + ε·y = x·y + y

Slot Eenvoudig en efficiënt Nu 2000 regels Scala Nog veel te doen en te ontdekken Open Source: …

Hello World C: #include int main(void) { printf(”Hello, World!\n”); return 0; } HQ9+: H C0H: C1R: Hello_world/Text

100 Doors C: #include int main() { int door, square, increment; for (door = 1, square = 1, increment = 1; door <= 100; door++ == square && (square += increment += 2)) printf("door #%d is %s.\n", door, (door == square? "open" : "closed")); return 0; } C1R: 100_doors Stupid This means that nearly every C1R "solution" in Rosetta is simply a heading, followed by string which gives the path name to the C solution. This is a form of redundancy that is effectively spam. David St. Hubbins: It's such a fine line between stupid, and uh... Nigel Tufnel: Clever. David St. Hubbins: Yeah, and clever.

Zeef van Eratosthenes - 1

Zeef van Eratosthenes - 2 main = generator(2, ) ==> (..==>sieve) =={toPrint}==> printer generator(s,e) = for(i<-s to e) <=i sieve = if (i%p!=0) <=i printer =..=>i:Int? println,i (i:Int) = {}