Wprowadzenie do filozofii computer science Wykład monograficzny r.a. 2011/2011 Prowadzący: Paweł Polak
Plan wykładu (główne tematy) 1.Czym jest komputer? 2.Czym jest informacja? 3.Czym jest algorytm? 4.Czym jest program komputerowy? 5.Czy można zbudować sztuczną inteligencję? (Krótkie wprowadzenie do filozofii AI) 6.Czy sensowna jest etyka komputerów? Plan oparty został na sugestiach W.J. Rappaporta (2005)
Źródła (lektury) Rapaport, William J. (2005), "Philosophy of Computer Science: An Introductory Course",Teaching Philosophy 28(4): 319–341. Rapaport, William J., Herbert Simon Keynote Address at NACAP 2006 (slideshow). The Blackwell Guide to the Philosophy of Computing and Information, Luciano Floridi (ed.), Blackwell Publishing, Oxford Turner, Raymond and Eden, Amnon,,,The Philosophy of Computer Science'', [w:] The Stanford Encyclopedia of Philosophy
Kilka bardziej i mniej oczywistych skrótów AI – Artifical Intelligence CS – Computer Science PCS – Philosophy of CS TM – Turing Machine QC – Quantum Computer
Filozofia CS a „filozofia w nauce” M. Heller: filozofia w nauce: poszukwianie klasycznych problemów filozoficznych uwikłanych w naukę, nowe problemy stawiane przez naukę, filozoficzne założenia nauki. Zatem CS powinna mieć również swoją filozofię! Jest to kolejne rozwinięcie Hellerowskiego programu filozoficznego.
CS – nauka (science) czy technika (engineering)? Co różni naukę i technikę? Czy technika jest tylko nauką stosowaną? Jeżeli jest nauką to, co jest jej przedmiotem? komputery? (Czym jest komputer?, A co np. z mikroskopią, która dawno upadła?) obliczenia? (Czym są obliczenia?) Za: Rappaport (2006)
Czym jest CS? (1) CS – what computer scientists do! Nauka o komputerach i o otaczających je zjawiskach (w tym o algorytmach) Newell, Perlis, & Simon 1967 Studia nad algorytmami i otaczającymi je zjwiskami (w komputerami) Knuth 1974 (NB. studium oznacza tu wysiłki poznawcze, które nie są zorganizowaną nauką, protonauka?) Co może zostać zautomatyzowane, rozwiązane przez TM, wyrażone rekursyjnie? AI – czy poznanie jest rekursyjne? Arden 1983 Za: Rappaport (2006)
Czym jest CS? (2) Sztuczna nauka (Artifical science) (studia empiryczne ale nie jest to nauka o rzeczach naturalnych) zjawisk otaczających komputery [Newell &] Simon 1976, 1969/1996 Nauka naturalna o procedurach Shapiro 2001[McCarthy 2006: computational procedures] Studia nad informacją Hartmanis & Lin 1992 Inżynieria (nie nauka) Brooks 1996, Loui 1987 Studia zjawisk wirtualnych Crowcroft 2005 Zespół wiedzy zajmujący się procesami przekształcania informacji Denning et al NB: Autorami definicji nie są filozofowie! Za: Rappaport (2006)
Czym jest CS? (3) CS = study of algorithms and computers that implement them Rappaport (2006) CS – is occupied with the design, development and investigation of the concepts and methodologies that facilitate and aid the specification, development, implementation and analysis of computational systems R. Turner, A. Eden (2009)
3 wielkie intuicje CS (1) Boole & Shannon Tylko 2 rzeczowniki są konieczne do wyrażenia „czegokolwiek”: „0” i „1” Turing Tylko 5 czasowników wystarczy do manipulowania nimi: Move- left, Move-right, Print-0, Print-1, Erase Boehm & Jacopini Tylko 3 reguły gramatyczne są konieczne do wytowrzenia odpowiednich kombinacji operacji: Sekwencja, Wybór, Powtórzenie, Opcjonalne: Wyjście, Procedury, Rekursja Za: Rappaport (2006)
3 wielkie intuicje CS (2) Boole & Shannon Każda informacja o problemie obliczalnym da się wyrazić przez: „0” i „1” Turing Każdy algorytm może być wyrażony w języku TM, korzystającej w dostatecznie długiej taśmy podzielonej na pola za pomocą 5 rozkazów: przesuń-w-lewo-1-pole, przesuń-w-prawo-1-pole, pisz-1-na-wskazywanym-polu,pisz-0-na-wskazywanym- polu, wyczyść-wskazywane-pole Boehm & Jacopini Tylko 3 reguły gramatyczne są konieczne do wytowrzenia odpowiednich kombinacji operacji: Sequence, DO this; THEN DO that Selection, IF such-&-such is true, THEN do this ELSE do that Repetition, WHILE such-&-such is true, DO this Opcjonalne: Exit, Named procedures, Recursion Za: Rappaport (2006)
Z powrotem do filozofii... Czy CS ma swoiste problemy? Czego dotyczą te problemy? Żeby przekonać się o filozoficznej nośności tematyki prześledzimy krótki przegląd pytań fil. na podstawie: R. Turner, A. Eden (2009) i własnych przemyśleń – zapraszam do dyskusji!
Problemy ogólne (1) 1.Czym jest informacja? (Floridi 2004; Floridi 2005) 2.Jakim rodzajem rzeczy są obiekty cyfrowe? (Allison et al. 2005) 3.Co odróżnia hardware od software? Czy programy istnieją zarówno w fizycznej jak i symbolicznej formie? (Moor 1978; Colburn 2004)
Problemy ogólne (2) 1. Jakim rodzajem dyscypliny jest CS? Jakie role pełnią matematyczne modelowanie i eksperymenty? (Minsky 1970; Denning 1980; Denning 1981; Denning et al. 1989; Denning 1985; Denning 1980b; Hartmanis 1994; Hartmanis1993; Hartmanis 1981; Colburn 2004; Eden 2007) 2. Czy programy mogą być uważane za teorie naukowe? (Rapaport 2005a) 3. Jak matematyka jest wykorzystywana w CS? Czy modele matematyczne są używane jako deskryptywne czy normatywne? (White 2004; Turner 2007)
Algorytmy i programy (1) 1.Jakie są różnice między programami a algorytmami? (Rapaport 2005a) 2.Jakiego rodzaju rzeczami są programy? Czy są abstraktami czy konkretami? (Moor 1978; Colburn 2004) 3.Czym jest specyfikacja programu? Co jest specyfikowane? (Smith 1985; Turner 2005) 4.Jak określić warunki adekwatności specyfikacji? Co możemy powiedzieć o specyfikowanym przedmiocie (analogia ontologicznego problemu definicji językowej)?
Algorytmy i programy (2) 1.Czy specyfikacje fundamentalnie różnią się od programów? (Smith 1985) 2.Czym jest implementacja? (Rapaport 2005b) 3. Co znaczy, że program jest poprawny? Jaki jest status epistemologiczny dowodów poprawności? Czy są one fundamentalnie różne od dowodów w matematyce? (DeMillo et al. 1979; Smith 1985) 4. Co ustanawiają dowody poprawności? (Fetzer 1988; Fetzer 1999; Colburn 2004)
Języki programowania (1) 1.Jakie są zastrzeżenia wobec różnych semantycznych teorii języków programowania? (White 2004; Turner 2007) 2.Jak pytania stawiane przez filozofię języków programowania mają się do podobnych pytań z filozofii języka? (White 2004) 3. Jakie różnice konceptualne leżą u podstaw następujących paradygmatów programowania: strukturalny, funkcjonalny, logiczny, zorientowany obiektowo? 4. Jakie role pełnią typy w CS? (Barandregt 1992; Pierce 2002)
Języki programowania (2) 1.Jaka jest różnica pomiędzy operacyjną i denotacyjną semantyką? (Turner 2007) 2. Czym jest abstrakcja w CS? Jak jest związana z pojęciem abstrakcji w matematyce? (Colburn & Shute 2007; Fine 2008; Hale & Wright 2001) 3. Czym są metody formalne? Co jest formalnego w metodach formalnych? Jaka jest różnica pomiędzy metodą formalną a nieformalną? (Bowen & Hinchey 2005; Bowen & Hinchey 1995)
Języki programowania (3) 1.Jaka logika jest potrzebna do rozważania poprawności programów i zagadnienia stopu? (Hoare 1969; Feferman 1992) Jak logika ta może być zależeć od użytego języka programowania? 2.Dlaczego jest tak wiele języków i paradygmatów programowania? (Krishnamurthi 2003) 3. Czy języki programowania (i paradygmaty) mają naturę teorii naukowych? Co jest przyczyną zmian paradygmatów programowania? (Kuhn 1970)
Filozofia AI (1) 1.Czy maszyna może myśleć? (od Lullusa do dziś) 2.Czy teza Churcha-Turinga uchwytuje matematyczne pojęcie efektywności (effective) lub mechaniczności (mechanical) metody w logice i matematyce? Czy uchwytuje ona obliczenia dokonywane przez ludzi? Czy stosuje się ona do maszyn fizycznych? (Copeland 2004; Copeland 2007; Hodges 2006) Zob. A. Olszewski 3.Czy pojęcie „myślenia komputacyjnego” (computational thinking) wytrzymuje krytyczną analizę filozoficzną? (Wing 2006)
Filozofia AI (2) 1.Czy pojęcie inteligentnego zachowania jezykowego użyte przez Turinga w teście inteligencji jest poprawnie zdefiniowane? Czy pokrywa się w pełni ze znaczeniem pojęcia „inteligencja”? 2.Czy argument z chińskiego pokoju J. Searle'a ujmuje poprawnie kwestię rozumienia? 3.Jak pogodzić sprzeczność między ujęciem Turinga i Searle'a?
Aksjologia i etyka CS (1) 1.Jakie wartości są preferowane w CS? Jakie w konkretnych rozwiązaniach? (PP) 2.Jaka jest rola estetyki w CS? Jaka jest rola stwierdzeń „eleganckie rozwiązanie”, „elegancki algorytm”, „metoda brutal force”. Czy architektury procesorów, komputerów, OS mogą być ładniejsze niż innych? 3.Czy CS dotyka jakiś kwestii etycznych? Etyka robotów? Problemy rozwoju AI? (PP) 4.Czy układy AI mogą wykazywać zachowania moralne?
Aksjologia i etyka CS (2) 1. Czy komputery zmieniają człowieka? Czy nowe sposoby interakcji wpływają na człowieka? Czy następuje dehumanizacja człowieka i humanizacja komputerów? (zob. film „Odyseja kosmiczna” 2001 – komputer HAL 9000). (PP) 2.Czy kod może być lepszy i gorszy? Dlaczego kod pisany przez jednego programistę staje się nieczytelny? (PP) 3.Czy są jakieś działania, których komputer nie powinien podejmować? (Moor 1979 „Are There Decisions Computers Should Never Make”)
Aksjologia i etyka CS (3) 1. Problemy stworzenia cyfrowego sztucznego życia (Lem 1971, Non serviam) 2. Jak traktować prawa autorskie? Czy program można opatentować? 3. Jakie wartości przyświecają projektom Open Source itp.? Jaką rolę tego typu inicjatywy odgrywają dla rozwoju społeczeństw? 4. Czy „bomba megabitowa” stanowi uzasadnioną groźbę dla ludzkości? (Lem 1999)
Filozofia techniki w CS 1. Czy inżynieria oprogramowania (software engineering) przynosi jakieś kwestie filozoficzne? (Eden 2007) 2. Czy metody oceny stosowane w innych działach techniki (np. architektura) są przekładalne na CS? (PP) 3. Jakie wątki filozofii techniki można odnaleźć w CS? Eksternalizm vs internalizm rozwoju a prawo Moore'a. Czy rozwojem rozwiązań CS da się sterować, czy są one poza kontrolą? (PP)