Matematikens grundvalar och programmering av datorer Bengt Nordström Datavetenskap, Chalmers och Göteborgs Universitet, 14 februari, 2005
Datorerna föddes ur logiken 1870: Cantor: Det finns minst två slags oändligheter. 1900 : Diskussion om matematikens grunder (Frege, Russel) 1928: Hilbert. Kan vi konstruera en metod som avgör om en matematisk sats är sann eller inte? 1930: Logiker studerade beräkningsbarhet: Turing, Church, Kleene, Gödel, Hilbert 1940: De första datorerna
De första datorerna von Neuman och EDVAC, designad 1945 ENIAC 1945
BESK 1953 BESK 1953 Tangentbordet BESKs konstruktörer Erik Stemme, Gösta Neovius och Olle Karlström.
Under 1960-talet började man använda integrerade kretsar.
1965: Moores observation Moores observation Goordon Moore lade märke till att antalet komponenter i en integrerad krets tiofaldigades vart tredje år. 1965 : 50 komponenter 1968 : 500 1971 : 5 000 1974 : 50 000???
Och Moore fick nästan rätt!
Varje decennium 10-faldigades allt
Men datorerna består inte bara av hårdvara. Antalet program ökade antagligen ocksa exponentiellt. Men hur fungerar de? (Demo)
Microsoft XP Lanserades den 25 oktober 2001 Samma dag lade bolaget ut ändringar på sin web-sida (18 miljoner tecken!) Två av dessa skulle fixa viktiga brister i säkerheten. Endast en fungerade. Innan man uppdaterar skall man enligt bolaget först spara viktiga filer på en speciell floppy-disk. Men som Microsofts Online Data Base säger: De speciella floppy-diskarna som är skapade av Windows XP Home do not work with Windows XP Home.
Kritiska tillämpningar: kraftverk flygplan (fly-by-wire) bilar överföring av pengar Komplicerade system som ingen människa förstår. Livsviktigt att de fungerar!
Computer Related Airplane Incidents and Accidents China Airlines Airbus A300 in Taipei (1998) The Korean Air Lines B747 CFIT Accident in Guam (1997) The FedEx MD11 Accident on Landing at Newark (1997) The Birgen Air B757 accident near Puerto Plata (1996) News on the Aeroperu B757 accident (1996) The Ariane 5 Failure (1996) The T-43A Accident near Dubrovnik (1996) Information About the Martinair B767 EFIS-loss Incident near Boston, MA The American Airlines B757 Accident in Cali (1995) The A320 Maintenance Incident at Gatwick (1995) The A330 Flight-Test Accident in Toulouse (1994) The Tokyo-London A340 FMGS Problem (1994) The A300 Crash in Nagoya (1994) The A320 Accident in Warsaw(1993) The Air Inter A320 Accident near Strasbourg(1992) The Sydney A320/DC10 Incident (1991) The Lauda Air B767 Accident (1991) http://www.rvs.uni-bielefeld.de/publications/incidents/ (prof Peter Bladkin, 1999)
Exempel: Sizewell B För att stänga reaktorn används ett program som är 100 000 rader långt. Fungerar det? Under 1993 gjorde man mer än 50000 tester i 1993. Programmet gick fel i hälften av fallen.
Varför? Lätt att skriva ett program. Svårt att skriva ett korrekt program. Vad betyder det att skriva ett korrekt program?
Hur vet vi att ett program är korrekt? Traditionellt: Vi testar om programmet fungerar ibland. Önskvärt: Vi bevisar att programmet alltid löser sin uppgift.
Kunskap av olika precision tyst språk (Ingemar Stenmark: Dä ä ba och åk!) naturligt språk (kan tolkas av en människa) formellt språk (kan tolkas av en maskin)
Vilken precision har olika delar inom programmeringen? Precision hos: inget språk naturligt språk formellt språk program alltid uppgift vanligt ibland sällsynt bevis ofta ibland sällsynt
Exempel på hur ett formellt bevis kan se ut:
Datavetenskapen har nytta av och ställer krav på Logik. Men vi kan också bidra.
En mänsklig konstruktion (t.ex. en bil, ett verktyg, en bro, ett programmeringsspråk eller en formell logik) kan studeras på olika sätt: i teorin (genom att göra en matematisk modell) i praktiken, genom att förverkliga konstruktionen experimentera med den (genom att använda den) Det är först under de senaste decennierna som vi har lyckats implementera och experimentera med olika logiska formalismer.
Teoretiska studier av ett logiskt språk (sedan 1930-talet) Vi ser på en logik som ett matematiskt objekt och resonerar matematiskt om olika egenskaper hos språket (normalisering, subjekt reduktion etc) Praktiska studier (sedan 1990) implementering: beviskontroll, teorembevisare, beviseditor. experiment: bygger bevis med hjälp av en dator.
Vi kan använda datorer för att kontrollera bevis Bevis av programs egenskaper Exempel: Resonera om JavaCard-program Säkerhetskritiska exempel Matematiska bevis Exempel: Egenskaper hos logiska system Keplers förmodan Algebrans fundamentalsats
Konsekvenser av ett stigande praktiskt intresse Teoretiska studier av en logik reducerar logiken till ett matematiskt objekt, man betonar intressanta matematiska egenskaper. Logiska språk med intressanta praktiska egenskaper kommer att utvecklas (vi är intresserad av att använda, inte bara studera) Ökat intresse av semantik och grundvalsproblem.
Argument mot formalism Formalism Matematiken handlar om att manipulera symboler med hjälp av givna regler Mot formalism När vi använder en logik för att bevisa egenskaper hos program vill vi ha en riktig semantik. Egenskaper måste ha en mening i verkligheten.
Program är konkreta matematiska objekt konkreta Program tar fysiskt utrymme (som byggnader, stolar, etc). En programmerare konstruerar ett program i samma anda som en snickare tillverkar ett bord. Objekt sätts ihop av delar med vissa egenskaper och det är en viktig del av konstruktionsprocessen att övertyga sig om att dessa egenskaper gäller. matematiska Funktionella programmeringsspråk, typteori.
Sammanfattning Under de senaste århundranden utvecklades den matematiska analysen från framsteg inom fysiken. På samma sätt kommer logiken i framtiden att utvecklas från starka praktiska behov av korrekta datorsystem och nya möjligheter till logiska experiment. Inom logiken kommer intresset att skiftas från ett intresse av syntax till semantik och från teori till praktik. Grundvalsfrågor inom matematik och logik har plötsigt blivit praktiskt viktiga.