Datorzinātnes Filozofija

Satura rādītājs:

Datorzinātnes Filozofija
Datorzinātnes Filozofija

Video: Datorzinātnes Filozofija

Video: Datorzinātnes Filozofija
Video: Populāri par disertācijas tēmu 2024, Marts
Anonim

Šis ir fails Stenfordas filozofijas enciklopēdijas arhīvos. Informācija par autoru un atsauci | Draugi PDF priekšskatījums | InPho meklēšana | PhilPapers bibliogrāfija

Datorzinātnes filozofija

Pirmoreiz publicēts 2008. gada 12. decembrī

Datorzinātnes filozofija (PCS) attiecas uz filozofiskiem jautājumiem, kas rodas, pārdomājot datorzinātņu akadēmiskās disciplīnas raksturu un praksi. Bet kas ir pēdējais? Tas noteikti nav tikai programmēšana. Galu galā daudzi cilvēki, kas raksta programmas, nav datorzinātnieki. Piemēram, to dara fiziķi, grāmatveži un ķīmiķi. Patiešām, datorzinātni labāk raksturotu kā tādu, kas saistīts ar meta-darbību, kas saistīta ar programmēšanu. Vispārīgāk un precīzāk tas ir aizņemts ar koncepciju un metodoloģiju izstrādi, attīstību un izpēti, kas atvieglo un palīdz aprēķinu sistēmu specifikāciju, izstrādi, ieviešanu un analīzi. Šīs aktivitātes piemēri varētu būt programmēšanas, specifikāciju un arhitektūras aprakstu valodu projektēšana un analīze;kompilatoru, tulku, teorēmu proversu un tipa secināšanas sistēmu uzbūve un optimizācija; loģisko ietvaru izgudrojums un iegultās sistēmas dizains, un vēl daudz vairāk. Daudzi no datorzinātnes centrālajiem filozofiskajiem jautājumiem apņem un atbalsta šīs darbības, un daudzi no tiem koncentrējas uz loģiskajiem, ontoloģiskajiem un epistemoloģiskajiem jautājumiem, kas uz to attiecas. Tomēr galu galā datorzinātnes ir tas, ko dara datorzinātnieki, un neviena precīza formulējuma definīcija nevar būt vairāk kā tikai sekojošās diskusijas ceļvedis. Patiešām, cerība ir tādaDaudzi no datorzinātnes centrālajiem filozofiskajiem jautājumiem apņem un atbalsta šīs darbības, un daudzi no tiem koncentrējas uz loģiskajiem, ontoloģiskajiem un epistemoloģiskajiem jautājumiem, kas uz to attiecas. Tomēr galu galā datorzinātnes ir tas, ko dara datorzinātnieki, un neviena precīza formulējuma definīcija nevar būt vairāk kā tikai sekojošās diskusijas ceļvedis. Patiešām, cerība ir tādaDaudzi no datorzinātnes centrālajiem filozofiskajiem jautājumiem apņem un atbalsta šīs darbības, un daudzi no tiem koncentrējas uz loģiskajiem, ontoloģiskajiem un epistemoloģiskajiem jautājumiem, kas uz to attiecas. Tomēr galu galā datorzinātnes ir tas, ko dara datorzinātnieki, un neviena precīza formulējuma definīcija nevar būt vairāk kā tikai sekojošās diskusijas ceļvedis. Patiešām, cerība ir tāda PCS galu galā sekmēs padziļinātu izpratni par datorzinātnes būtību.

Bet datorzinātnes filozofiskās ainavas kartēšana nav viegls uzdevums. Par laimi, tradicionālās filozofijas nozares var sniegt intelektuālas un strukturālas norādes. Piemēram, matemātikas un fizikas filozofijās ir galvenie jautājumi par aplūkojamo objektu raksturu, to, kas veido zināšanas, un šo zināšanu iegūšanas līdzekļus. Valodas filozofija rada jautājumus par dabiskās valodas semantiskās teorijas saturu un formu. Tas izvirza priekšplānā semantiskā uzņēmuma ontoloģiskos un epistemoloģiskos pieņēmumus. Ontoloģija norāda, kādas lietas pastāv, kā tās individualizēt un to lomu mūsu konceptuālo shēmu veidošanā. Loģikas filozofija sniedz pārskatu un analīzi par dažāda veida loģiskajām sistēmām un to lomu ikdienas un specializētajā diskursā. Šo un citu filozofijas nozaru analīzēm un līdzībām vajadzētu būt noderīgām, nosakot un noskaidrojot dažus no datorzinātnes centrālajiem filozofiskajiem jautājumiem. Šo disciplīnu esošā ietekme uz PCS parādīsies, turpinot. It īpaši otrajā, trešajā un ceturtajā sadaļā tiks atspoguļota ontoloģijas un valodas un matemātikas filozofiju ietekme.

  • 1. Daži galvenie jautājumi
  • 2. Esamība un identitāte

    • 2.1 Programmu duālais raksturs
    • 2.2. Programmas un algoritmi
    • 2.3. Programmas un specifikācijas
  • 3. Semantika

    • 3.1. Denatācijas un operatīvā semantika
    • 3.2 Ieviešana un semantiskā interpretācija
    • 3.3 Semantika, vienlīdzība un identitāte
  • 4. Pierādījumi un programmas

    • 4.1. Informācijas iegūšanas pierādījumi
    • 4.2. Pierādījumi matemātikā
    • 4.3. Fiziskā un abstraktā pareizība
  • 5. Skaitāmība

    5.1 Baznīcas Turingas darbs

  • 6. Programmēšana un programmēšanas valodas

    • 6.1. Abstrakcija
    • 6.2. Veidi un ontoloģija
  • 7. Juridiski un ētiski jautājumi

    • 7.1. Autortiesības, patenti un identitāte
    • 7.2 Pareizība un atbildība
  • 8. Jauni līkloči vai jauni jautājumi?
  • Bibliogrāfija
  • Citi interneta resursi
  • Saistītie ieraksti

1. Daži galvenie jautājumi

Sākumā mēs uzskaitīsim to, kas, mūsuprāt, ir daži no galvenajiem jautājumiem un jautājumiem. Tas lasītājam sniegs ātru lietu izklāstu, kas papildinās sīkāku gaidāmo diskusiju. Lai arī daudzi no tiem nav tieši apskatīti literatūrā un ir nepieciešami daži skaidrojumi, šie jautājumi ilustrē to jautājumu veidus, par kuriem mums rūp PCS.

  1. Kādas lietas ir programmas? Vai tie ir abstrakti vai konkrēti? (Moor 1978; Colburn 2004)
  2. Kādas ir atšķirības starp programmām un algoritmiem? (Rapaport 2005a)
  3. Kas ir specifikācija? Un kas tiek precizēts? (Smits 1985; Tērners 2005)
  4. Vai specifikācijas būtiski atšķiras no programmām? (Smits 1985)
  5. Kas ir ieviešana? (Rapaport 2005b)
  6. Kas atšķir aparatūru no programmatūras? Vai programmas pastāv gan fiziskā, gan simboliskā formā? (Moor 1978; Colburn 2004)
  7. Kādas lietas ir digitālie objekti? Vai mums ir nepieciešama jauna ontoloģiska kategorija, lai viņus izmitinātu? (Allison et al. 2005)
  8. Kādi ir dažādu programmēšanas valodu semantisko teoriju mērķi? (Baltais 2004; Turners 2007)
  9. Kā jautājumi programmēšanas valodu filozofijā attiecas uz paralēliem valodas filozofijas jautājumiem? (Baltais 2004)
  10. Vai modularitātes princips (piemēram, Dijkstra 1968) ir saistīts ar konceptuāliem jautājumiem par pilnīgu abstrakciju un kompozicionalitāti?
  11. Kādas ir pamatā esošās konceptuālās atšķirības starp šādām programmēšanas paradigmām: strukturētu, funkcionālu, loģisku un objektorientētu programmēšanu?
  12. Kādas ir tipu lomas datorzinātnēs? (Barandregt 1992; Pierce 2002)
  13. Kāda ir atšķirība starp operatīvo un denotācijas semantiku? (Turners 2007)
  14. Ko nozīmē, ka programma ir pareiza? Kāds ir pareizības pierādījumu epistemoloģiskais statuss? Vai tie būtiski atšķiras no pierādījumiem matemātikā? (DeMillo et al. 1979; Smits 1985)
  15. Ko nosaka pareizības pierādījumi? (Fetzer 1988; Fetzer 1999; Colburn 2004)
  16. Kas ir abstrakcija datorzinātnēs? Kā tas ir saistīts ar abstrakciju matemātikā? (Colburn & Shute 2007; Fine 2008; Hale & Wright 2001)
  17. Kādas ir formālās metodes? Kas ir formāls par formālām metodēm? Kāda ir atšķirība starp formālo un neformālo metodi? (Bowen & Hinchey 2005; Bowen & Hinchey 1995)
  18. Kāda disciplīna ir datorzinātnei? Kādas ir matemātiskās modelēšanas un eksperimentēšanas lomas? (Minsky 1970; Denning 1980; Denning 1981; Denning et al. 1989; Denning 1985; Denning 1980b; Hartmanis 1994; Hartmanis1993; Hartmanis 1981; Colburn 2004; Eden 2007)
  19. Vai programmas jāuzskata par zinātniskām teorijām? (Rapaport 2005a)
  20. Kā matemātiku izmanto datorzinātnēs? Vai matemātiskos modeļus izmanto aprakstošā vai normatīvā veidā? (Baltais 2004; Turners 2007)
  21. Vai Baznīcas-Tjūras darbs satur matemātisko priekšstatu par efektīvu vai mehānisku metodi loģikā un matemātikā? Vai tas satur aprēķinus, kurus var veikt cilvēks? Vai tās darbības joma attiecas uz fiziskām mašīnām? (Copeland 2004; Copeland 2007; Hodges 2006)
  22. Vai skaitļošanas domāšanas jēdziens var izturēt filozofisko pārbaudi? (Wing 2006)
  23. Kāda ir loģika, ar kuru var pamatot programmas pareizību un pārtraukšanu? (Hoare 1969; Feferman 1992) Kā loģika ir atkarīga no pamatā esošās programmēšanas valodas?
  24. Kas ir informācija? (Floridi 2004; Floridi 2005) Vai šis jēdziens atspoguļo dažus šeit uzskaitītos jautājumus?
  25. Kāpēc ir tik daudz programmēšanas valodu un programmēšanas paradigmu? (Krišnamurthi 2003)
  26. Vai programmēšanas valodām (un paradigmām) ir zinātnisku teoriju raksturs? Kas izraisa programmēšanas paradigmas maiņu? (Kuhns 1970)
  27. Vai programmatūras inženierija rada kādus filozofiskus jautājumus? (Eden 2007)

Turpmākajā tekstā mēs uzdosim dažus jautājumus dažiem no šiem jautājumiem.

2. Esamība un identitāte

Kā mēs varam klasificēt un individualizēt datorzinātnes entītijas un jēdzienus? Kādas lietas tās ir un kas nosaka viņu identitāti? Piemēram, daži ir nepārprotami konkrēti fiziski objekti (piemēram, mikroshēmas, maršrutētāji, klēpjdatori, grafiskās kartes), bet daži nav (piemēram, formāli gramatika, abstraktas mašīnas, teorēmu proversi, loģiski ietvari, procesa algebras, abstrakti datu tipi). Bet dažu centrālo jēdzienu, piemēram, programmu un datu, raksturojums ir bijis problemātiskāks. Jo īpaši tiek uzskatīts, ka programmu ontoloģiskais statuss nav pilnīgi tiešs, un nav jautājums arī par to identitātes kritērijiem.

2.1 Programmu duālais raksturs

Daudzi autori (Moor 1978; Rapaport 2005b; Colburn 2004) apspriež tā dēvēto programmu duālo raksturu. Raugoties uz to, šķiet, ka programmai ir gan tekstuāls, gan mehānisks vai procesam līdzīgs aizsegs. Kā tekstu var rediģēt programmu. Bet tā izpausmei mašīnlasāmā diskā, šķiet, ir diezgan atšķirīgas īpašības. Jo īpaši to var izpildīt fiziskā mašīnā. Tātad saskaņā ar identisku identitātes neredzamības principu (3.3. Punkts) abas formas nevar būt viena un tā pati vienība. Protams, ikvienam, kuru pārliecina šī divējādība, ir pienākums kaut ko pateikt par attiecībām starp šīm divām acīmredzamajām eksistences formām.

Viens tūlītējs ierosinājums ir tāds, ka viena programmas izpausme ir otras ieviešana, ti, fiziskā izpausme ir tekstuālās ieviešana. Tomēr pat datorzinātnēs nav uzreiz skaidrs, vai vārda ieviešana attiecas tikai uz vienu jēdzienu. Bieži vien to izmanto, lai atsauktos uz apkopošanas procesa rezultātu, kad programma augsta līmeņa valodā (avota kods) tiek pārveidota mašīnu valodā (objekta kods). Bet tikpat bieži tas tiek izmantots, lai atsauktos uz procesu, kurā pirmkods kaut kādā veidā tieši tiek realizēts aparatūrā (piemēram, konkrēta ieviešana pusvadītājos). Un, domājams, tas ir attiecīgais jēdziens. Bet bez detalizētākas pašas jēdziena (3.2. Punkts) filozofiskas analīzes (Rapaport 2005b),nav skaidrs, kā tas veicina diskusiju; šķiet, ka mēs esam nosaukuši tikai attiecības starp abām šķietamajām eksistences formām. Līdzīgi citi ir aprakstījuši, ka attiecības starp programmas tekstu un programmas procesu ir līdzīgas attiecībām starp plānu un tā izpausmēm kā fizisku darbību virkne. Bet tas nešķiet gluži analogs programmas un procesa pārim: mums nav kārdinājuma atsaukties uz plānu un fizisko procesu kā uz vienas un tās pašas lietas atšķirīgām izpausmēm. Piemēram, vai mums ir kārdinājums domāt par pastaigas plānu un faktisko pastaigu kā vienas un tās pašas lietas dažādas šķautnes?citi ir aprakstījuši, ka attiecības starp programmas tekstu un programmas procesu ir līdzīgas kā attiecībām starp plānu un tā izpausmi kā fizisku darbību virkne. Bet tas nešķiet gluži analogs programmas un procesa pārim: mums nav kārdinājuma atsaukties uz plānu un fizisko procesu kā uz vienas un tās pašas lietas atšķirīgām izpausmēm. Piemēram, vai mums ir kārdinājums domāt par pastaigas plānu un faktisko pastaigu kā vienas un tās pašas lietas dažādas šķautnes?citi ir aprakstījuši, ka attiecības starp programmas tekstu un programmas procesu ir līdzīgas kā attiecībām starp plānu un tā izpausmi kā fizisku darbību virkne. Bet tas nešķiet gluži analogs programmas un procesa pārim: mums nav kārdinājuma atsaukties uz plānu un fizisko procesu kā uz vienas un tās pašas lietas atšķirīgām izpausmēm. Piemēram, vai mums ir kārdinājums domāt par pastaigas plānu un faktisko pastaigu kā vienas un tās pašas lietas dažādas šķautnes?vai mums ir kārdinājums domāt par pastaigas plānu un faktisko pastaigu kā vienas un tās pašas lietas dažādas šķautnes?vai mums ir kārdinājums domāt par pastaigas plānu un faktisko pastaigu kā vienas un tās pašas lietas dažādas šķautnes?

Varbūt jautājumus vislabāk raksturo, sakot, ka programmas kā tekstuāli objekti izraisa mehāniskus procesus? Ideja, šķiet, ir tāda, ka kaut kā tekstuāls objekts fiziski izraisa mehānisko procesu. Bet šķiet, ka tas prasa diezgan rūpīgu šādas cēloņsakarības rakstura analīzi. Colburn (2004) noliedz, ka simboliskajam tekstam būtu cēloņsakarība; šāda iedarbība ir tās fiziskajai izpausmei (lietai diskā). Programmatūra ir konkrēta abstrakcija, kurai ir apraksta (teksts, abstrakcija) un izpildes vide (piemēram, konkrēta ieviešana pusvadītājos).

Nedaudz atšķirīga perspektīva šajos jautājumos sākas ar programmas identitātes jautājumu. Kad tiek uzskatīts, ka divas programmas ir vienādas? Šādas problēmas rodas, piemēram, mēģinot noteikt programmatūras daļas juridisko identitāti. Ja mēs identificējam programmu ar tās tekstuālo izpausmi, tad programmas identitāte ir jutīga pret izmaiņām tās izskatā (piemēram, mainot fontu). Acīmredzot ne jau teksts vien sniedz mums filozofiski interesantu priekšstatu par programmas identitāti. Drīzāk, lai sasniegtu informētu identitātes kritēriju, mums vairāk jāņem vērā semantika un ieviešana. Pie šī jautājuma atgriezīsimies 3. un 6. paragrāfā.

2.2. Programmas un algoritmi

Neatkarīgi no viedokļa par programmām, algoritma un programmas atšķirībai ir arī nepieciešami turpmāki konceptuāli skaidrojumi. Algoritmus bieži uzskata par matemātiskiem objektiem. Ja tā ir taisnība, daudzi no tiem saistītajiem filozofiskajiem jautājumiem pieder arī matemātikas filozofijai. Tomēr algoritmi neapšaubāmi ir centrālāki datorzinātnēs, nevis matemātikā, un tiem ir jāpievērš lielāka filozofiska uzmanība, nekā tiem ir piešķirta. Kaut arī teorētiskās datorzinātnēs un matemātiskajā loģikā ir veikts ievērojams skaits algoritmu matemātisku pētījumu (piemēram, Moschovakis 1997; Blass & Gurevich 2003), nav bijis daudz filozofisku diskusiju, kas koncentrētos uz algoritmu raksturu un atšķirībām starp algoritmi un programmas.

Vai algoritmi ir abstrakti objekti Rosena (2001) piedāvātajā nozīmē, turpretī programmas ir konkrētas? Precīzāk, vai algoritmi ir tekstuāla objekta, kas ir programma, abstrakts matemātiskais ekvivalents? Šis attēls, protams, ir sava veida ontoloģiskais platonisms (Shapiro 1997), kur algoritmiem ir ontoloģiska prioritāte un programmas nodrošina lingvistiskos līdzekļus to sasniegšanai. Šajā skatījumā var izmantot algoritmus, lai nodrošinātu programmēšanas valodu semantiku (3. punkts). Protams, šis attēls manto visas priekšrocības un problēmas ar šādu platonisku skatījumu (Shapiro 1997).

Mazāk platonisks uzskats ir tāds, ka algoritmi satur idejas, kas izteiktas programmā. Likumā tas tiek uzskatīts par iemeslu tam, ka algoritmi atšķirībā no programmām nav aizsargājami ar autortiesībām (7.1. Punkts). Protams, termins ideja prasa turpmāku filozofisku analīzi. Patiešām, var apgalvot, ka vienkāršais algoritma jēdziens ir daudz mazāk jānoskaidro nekā standarta ideju pārskats un ar to saistītie abstrakcijas jēdzieni (Rosen 2001).

Visbeidzot, gandrīz folkloras uzskats ir tāds, ka Tjūringa mašīnas mums sniedz formālu mūsu algoritma jēdziena analīzi. Bet vai tas atbilst mūsdienu izpratnei, ko izmanto mūsdienu datorzinātnēs, ar tās sarežģītajiem priekšstatiem par attēlojumu un kontroli? Moschovakis (1997) piedāvā analīzi, kas ir nedaudz labāka.

2.3. Programmas un specifikācijas

Vēl viena populāra atšķirība, kurai vajadzētu būt kritiskas analīzes tēmai, notiek saistībā ar programmām un specifikācijām. Kas ir specifikācijas un kā tās atšķiras no programmām? Kaut arī filozofiskajā literatūrā par šo jautājumu nav tiešu diskusiju (bet sk. Smits 1985), specifikāciju būtība ir būtisks jautājums datorzinātnes konceptuālajiem pamatiem.

Viens viedoklis, kas parasti atrodams formālās specifikācijas mācību grāmatās, ir tāds, ka programmās ir detalizētas mašīnu instrukcijas, turpretī (funkcionālās) specifikācijas apraksta tikai saistību starp ieeju un izvadi. Viens acīmredzams veids, kā to izpakot, ir obligātais / aprakstošais atšķirums: programmas ir obligātas un apraksta, kā sasniegt specifikācijā aprakstīto mērķi. Protams, ka obligātajā programmēšanas paradigmā tas, šķiet, satur būtiskas atšķirības. Bet tas nav piemērots visiem. Piemēram, loģika, funkcionālās un objektorientētās programmēšanas valodas to acīmredzami neregulē: ņemot vērā nominālvērtību, šādās valodās kodētās programmas sastāv no definīciju secībām, nevis “instrukcijām”. Turklātnefunkcionālās specifikācijas nevar formulēt kā paziņojumus par saistību starp ieeju un izvadi, jo tie uzliek prasības dizainam un instrukciju veidam, ko var iekļaut jebkurā programmā.

Cits viedoklis uzstāj, ka atšķirība starp specifikācijām un programmām jāatrod attiecībā uz ieviešanas jēdzienu, ti, vai to var apkopot un izpildīt? Bet ko ar to saprot? Vai tas ir domāts jau esoša kompilatora nozīmē? Šī interpretācija ir diezgan sekla, jo tā piedāvā nevis konceptuālu atšķirības, bet nosacītu kritēriju. Piemēram, pirmajās piecās programmēšanas valodu paaudzēs (20. gadsimta otrajā pusē) vienas paaudzes rekursīvās, modulārās, funkcionālās un objektorientētās specifikācijas nācās artikulēt kā programmas nākamajās, ti, mūsdienu specifikāciju valodās bieži kļūst par rītdienas programmēšanas valodām.

Cits viedoklis liek domāt, ka programmēšanas valodas ir tās valodas, kuras principā ir ieviestas, turpretī specifikāciju valodas ir tās, kuras to nevar. Iespējams, ka iemesls, kāpēc tās nevar būt, ir tas, ka specifikācijas valodas ļauj izteikt priekšstatus, kas nav Turing aprēķināmi. Šī atšķirība ir saskaņā ar daudzām esošajām specifikāciju valodām, kas balstītas uz Zermelo-Fraenkel kopas teoriju un augstākas kārtas loģiku. Tomēr šķiet dīvaini, ka specifikācijas valodai vajadzētu raksturot faktu, ka tā var izteikt neaprēķināmas īpašības un attiecības. Vai kāda no šīm neaprēķināmajām prasībām tiešām ir nepieciešama praksē (Jones & Hayes 1990; Fuchs 1994)?

Šo viedokļu dažādība liek domāt, ka tradicionālais, binārais sadalījums starp specifikācijām un programmām ir PCS problēmas piemērs, kam jāpievērš lielāka uzmanība ne tikai konceptuālai precizēšanai, bet arī tāpēc, ka tas varētu ietekmēt turpmāko programmēšanas un specifikāciju valodu dizainu..

3. Semantika

Programmēšanas valodas gramatika nosaka tikai to, kas ir sintaktiski likumīgs; tas mūs neinformē par tā konstrukciju paredzēto nozīmi. Tādējādi programmēšanas valodas gramatika pati par sevi nenosaka to, ko cilvēki programmē. Tā vietā tiek izmantota gramatika, kas bagātināta ar semantisko kontu (formālu vai neformālu). Semantika ir paredzēta, lai informētu programmētāju, sastādītāju un teorētiķi, kurš ir ieinteresēts izpētīt valodas īpašības. Patiešām, bieži tiek apgalvots, ka, lai izpildītu atšķirīgās programmētāja un sastādītāja prasības, ir nepieciešami dažādi semantiskie konti dažādos abstrakcijas līmeņos. Un teorētiķa uzdevums ir izpētīt viņu attiecības.

Šis ir standarta attēls, kas parādās semantiskajā literatūrā. Bet lielai daļai tas ir nepieciešams konceptuāls skaidrojums. Šajā sadaļā apskatīti tikai daži jautājumi, kas rodas no šīs aktivitātes.

3.1. Denatācijas un operatīvā semantika

Viena no vissvarīgākajām atšķirībām programmēšanas valodu semantikā koncentrējas uz atšķirību starp operatīvo un denotācijas semantiku. Darbības semantika (Landins 1964; Plotkins 1981) nodrošina programmēšanas valodas interpretāciju kādas abstraktas mašīnas izteiksmē. Precīzāk, tas ir izteiksmes tulkojums programmēšanas valodā abstraktās mašīnas instrukcijās vai programmās. Piemēram, 1. programma tiks iesaiņota abstraktu mašīnu darbību secībā, piemēram, “a ← 0” un push. Darbības semantiku var arī iedomāties kā algoritmisku semantiku, it īpaši, ja pamatā esošās mašīnas mērķis ir raksturot pašu algoritma jēdzienu (piemēram, Moschovakis 1997).

Turpretī denotācijas semantika (Milne & Strachey 1977) sniedz interpretāciju matemātiskās struktūrās, piemēram, kopās vai kategorijās. Piemēram, klasiskajā pieejā matemātisko ietvaru nodrošina komplekti pilnīgu režģu formā un nepārtrauktas funkcijas uz tiem.

Bet vai starp tām ir kāda būtiska konceptuāla atšķirība? Vai tas, ka denotācijas semantika, kas skaidri balstās uz matemātiskām struktūrām, piemēram, kopām, ir matemātiska, turpretim operatīvā semantika nav? Tērners (2007) neapgalvo: visi tie sniedz matemātiskas interpretācijas.

Vai arī tā ir tāda, ka operatīvā semantika ir mašīnveidīgāka tādā nozīmē, ka tā veido abstraktu mašīnu, turpretī ar denotācijas semantiku, kas tiek dota kopu teorētiski, abstrakta mašīna nav norādīta? Tomēr šādas atšķirības nav izrādījušās konceptuāli nozīmīgas, jo visus denaturālos semantiskos kontus var uzskatīt par struktūrām, kas veido abstraktu mašīnu ar stāvokļiem un operācijām, kas uz tām darbojas. Arī operatīvie konti nav tuvāk ieviešanai: denotācijas pieejas (Milne & Strachey 1977) arī ir ļoti elastīgas un spēj atspoguļot dažādus īstenošanas detalizācijas līmeņus.

Vēl viena iespējamā atšķirība attiecas uz semantikas kompozīcionālo (vai citādi) raksturu. Brīvi runājot, semantiku uzskata par kompozicionālu (Szabó 2007), ja sarežģītas izteiksmes semantiskā vērtība ir tās daļu semantisko vērtību funkcija. Kompozicionalitāte tiek uzskatīta par būtisku semantikas kritēriju, jo šķiet, ka tā ir nepieciešama, lai izskaidrotu mūsu lingvistiskās izpratnes produktivitāti: teikts, ka tas izskaidro, kā mēs saprotam un veidojam sarežģītas programmas. Bet vai tas mums nodrošina ķīli, lai nodalītu operatīvo un denotācijas semantiku? Diemžēl šķiet, ka tas nav jādara: lai arī denotācijas definīcijas ir veidotas kā kompozīcijas, noteikti nav tā, ka visa darbības semantika nav kompozīcija.

Visbeidzot, dažas semantikas versijas atšķiras attiecībā uz rekursīvā modeļa esamību, ti, interpretāciju Tjūringa mašīnās vai Gandija mašīnās (5.1. Punkts). Tomēr pat tas precīzi neatbilst tradicionālajai darbības / denotācijas plaisai. Dažām denotējošām definīcijām ir rekursīvs modelis, bet citām nav.

Šķiet, ka ir ļoti grūti šo atšķirību samazināt. Raugoties uz to, nav skaidras konceptuālas atšķirības starp operatīvo un denotācijas semantiku.

3.2 Ieviešana un semantiskā interpretācija

Kāda ir atšķirība starp semantisko interpretāciju un ieviešanu? Piemēram, kāda ir konceptuālā atšķirība starp programmas apkopošanu mašīnas kodā un tās denotācijas semantikas piešķiršanu? Pēc Rapaport (2005b) domām, ieviešanu vislabāk var uzskatīt par semantisku interpretāciju, kur pēdējo raksturo, izmantojot kartēšanu starp diviem domēniem: sintaktisko un semantisko. Un tos abus nosaka kāda apraksta noteikumi. Piemēram, apkopotais kods (kombinācijā ar noteikumiem, kas regulē tā semantiku) ir avota koda semantiskais konts.

Termina “ieviešana” vispārējā izpratnē semantisko domēnu piegādā fiziska mašīna. Citiem vārdiem sakot, pati fiziskā mašīna ('ieviešana') nosaka programmas nozīmi. Piemēram, programmēšanas valodās tas ir līdzvērtīgs apgalvojumam, ka C ++ programmēšanas valodas semantiku nosaka Bjarne dators, kurš darbojas ar viņa C ++ kompilatoru. Bet šis skaidrojums acīmredzami ir nepietiekams: ja mēs pieņemam, ka Bjarne mašīna nosaka C ++ programmu nozīmi, tad nav jēdziena par darbības traucējumiem vai nepareizu interpretāciju: neatkarīgi no tā, ko dara Bjarne dators, tas ipso facto ir programmas jēgai. Bet, protams, elektriskā vētra var izraisīt mašīnas kļūmi. Bet ko mēs varētu nozīmēt, ka kļūdos? Jādomā, ka (nepareizi funkcionējoša) mašīna neaptver paredzēto nozīmi. Bet,savukārt, šķiet, ka mēs tikai saprotam šo frāzi, pamatojoties uz kaut kādu mašīnatkarīgu nozīmes raksturojumu. Un kādā līmenī tas ir jāsniedz, izmantojot neatkarīgu semantisko aprakstu. Tas liek domāt, ka vienkāršas ieviešanas jēdziens nepiedāvā adekvātu semantikas jēdzienu. (Salīdziniet ar: Kripke 1982; Wittgenstein 1953).

3.3 Semantika, vienlīdzība un identitāte

Mēs noslēdzām diskusiju par programmu vienlīdzību (2.1. Punkts) ar solījumu ienest semantiku attēlā. Katrs programmēšanas valodas semantiskais konts nosaka programmu vienlīdzības jēdzienu, proti, divas programmas tiek uzskatītas par vienādām, ja tām ir tāda pati semantiskā vērtība, ti,

P = Q iff || P || = || Q ||

kur || P || ir programmas P semantiskā vērtība. Tātad šajā ziņā katrs semantiskais konts nosaka vienlīdzības kritēriju. Piemēram, viena denotācijas semantikas versija atdalītu visus skaitļošanas soļus un pielīdzinātu programmām, kuras savā ziņā aprēķina to pašu matemātisko funkciju. Piemēram, šādas divas programmas tiks uzskatītas par vienādām ar šo kritēriju:

funkcija Faktoriālais (n: vesels skaitlis): vesels skaitlis

sākas

ja n = 0, tad Faktoriālais: = 1;

else

Factorial: = (n) * Factorial (n -1);

beigas;

1. programma

funkcija Faktoriāla (n: vesels skaitlis): vesels skaitlis

var

x, y: vesels skaitlis;

sākt

y: = 1;

x: = 0;

kamēr x <n sākas

x: = x +1;

y: = y * x;

beigas

Faktors: = y;

beigas;

2. programma

No otras puses, operatīvāks skatījums, kas atsaucas uz aprēķināšanas posmiem, neuzņemas 1. un 2. programmu vienādu. Patiešām, ņemot vērā 3.1. Punktu, mēs varam izveidot semantiskos kontus, kas atspoguļo jebkādu ieviešanas detalizācijas pakāpi. Dažādi semantiski pārskati nosaka dažādus vienlīdzības jēdzienus, kas var kalpot dažādiem konceptuāliem un praktiskiem mērķiem. Bet kurš tad būtu jāņem vērā, lai noteiktu valodu? Par laimi ir daži izteicieni, kurus var piemērot; mēs varam samazināt iespējas: daži semantiskie konti mums sniedz loģiski pieņemamu identitātes jēdzienu, bet citi to nedara.

No identicals indiscernibility ir princips, iebūvēts parastajā predikātu loģikas. Tajā teikts, ka, ja divi objekti ir vienādi, tiem ir visas īpašības. Pretstats princips, neatklājamo lietu identitātepaziņo, ka, ja katram īpašumam F objektam x ir F, ja un tikai tad, ja objektam y ir F, tad x ir identisks y. Nedalāmo elementu identitāte nozīmē, ka, ja x un y ir atšķirīgi, tad ir vismaz viens īpašums, kas x ir, un y nav. Dažreiz abu principu savienojums ir pazīstams kā Leibnica likums (Forrest 2006). Leibnica likumu bieži uzskata par būtisku jebkura vienlīdzības jēdziena izpratnei. Šie likumi parasti tiek formulēti loģiskās teorijās, piemēram, otrās kārtas loģikā. Bet mūs visvairāk interesēs viņu spēja izšķirt dažādu veidu programmēšanas valodas semantiku. Patiešām, Leibnica likums ir viens no mūsdienu semantiskās teorijas centrālajiem jēdzieniem. Identitātes kritērijs tiek precizēts novērošanas ekvivalences ziņā.

Divas programmas M un N ir definētas kā novērojamas līdzvērtīgastikai un vienīgi tad, ja visos kontekstos C […], kur C [M] ir derīga programma, ir arī gadījums, ka C [N] ir arī derīga programma ar tādu pašu semantisko vērtību. Piemēram, mēs sakām, ka Oracle un DB2 (programmas, kas manipulē ar relāciju datu bāzēm) ir novērojamas līdzvērtīgi saskaņā ar kādu relāciju datu bāzu operāciju semantisko pārskatu, ja un tikai tad, ja tās tiek izpildītas “vienā” kontekstā (operētājsistēma, mašīnas arhitektūra, ievade utt.)) iegūst “to pašu” datu bāzi. Protams, termins, kas novērojams ekvivalents, jālieto ar šķipsniņu sāls. Mēs skaidri nevaram novērot programmas izturēšanos visos kontekstos. Tomēr novērošanas ekvivalence atspoguļo pamatā esošo konceptuālo prasību, kas izriet no identitāšu nepamanāmības principiem un no neatņemamo elementu identitātes.

Ja semantikā visām novērojamajām atšķirīgajām programmām ir atšķirīgas semantiskās vērtības, semantika tiek uzskatīta par labu. Līdz ar to skaņa semantika atbilst šādam principam:

|| P || = || Q || nozīmē, ka visos kontekstos C, || C [P] || = || C [Q] ||

Jābūt skaidram, ka skaņas semantikas izraisītais identitātes jēdziens atbilst identitāšu neizšķiramībai.

Tiek uzskatīts, ka semantika ir pilnīga, ja kādas divas programmas ar atšķirīgām semantiskajām vērtībām ir pamanāmi atšķirīgas. Precīzāk, pilnīga semantika atbilst šādiem jautājumiem:

Visos kontekstos C, || C [P] || = || C [Q] || nozīmē || P || = || Q ||

Atkal vajadzētu būt acīmredzamam, ka pilnīga semantika atbilst neatņemamo elementu identitātes principam.

Visbeidzot, semantika tiek uzskatīta par pilnīgi abstraktu, ja tā ir pareiza un pilnīga. Līdz ar to pilnīgi abstrakta semantika atbilst Leibnica likumam.

Šis loģiskais fons sniedz filozofisku pamatojumu pilnīgi abstraktas semantikas attīstībai. Tādējādi tas mums piedāvā semantisko kontu izvēles veidu, kas sniedz filozofiski pieņemamus vienlīdzības jēdzienus. Tas, protams, nenosaka nevienu jēdzienu. Tas nodrošina tikai instrumentu, lai noraidītu tos, kas nespēj sasniegt konceptuāli pieņemamu. Daudzi tā dēvētie denotācijas semantika nav pilnīgi abstrakti, turpretī daudzi ir operatīvi. Patiešām, viens no centrālajiem tematiem nesenajā semantikas vēsturē ir bijis saistīts ar pilnīgi abstraktu definīciju meklēšanu, kas iekļautas semantisko definīciju paņēmienu klasē, kas tiek izmantoti denotācijas semantikas nodrošināšanai.

Semantikai datorzinātnēs ir normatīva vai definējoša loma. Bez semantiskām definīcijām valodām un struktūrām nav satura, kas pārsniedz to sintaktiskos aprakstus. Un pēdējie diez vai ir pietiekami praktiskiem vai filozofiskiem mērķiem. Kamēr mēs esam sākuši galveno problēmu analīzi, mēs esam tikai saskrāpējuši virsmu.

4. Pierādījumi un programmas

Specifikācijas (2.3. Punkts) rada īpašu pareizības jēdzienu. Saskaņā ar šī jēdziena abstraktu interpretāciju programma tiek uzskatīta par pareizu attiecībā pret (funkcionālo) specifikāciju, ja tās radītā saistība starp ievadi un izvadi atbilst tai, kas noteikta specifikācijā. Precīzāk, ja p ir programma, tad tā atbilst specifikācijai R, kas tiek uzskatīta par sakarību starp I ievades tipu un O izvades tipu, ja:

Visām I tipa ievadēm i (p, i (i)) pāri atbilst attiecībai R

kur p (i) ir programmas p darbības rezultāts ieejā i. Šeit R tiek izteikts dažās specifikācijas valodās un p dažās programmēšanas valodās. Pirmais parasti ir daži (tipizētas) predikatīvās loģikas varianti, un pareizības pierādījumi (ti, ka paziņojums (1) ir spēkā) tiek veikti loģikas pierādījumu sistēmā. Piemēram, bieži izmanto Hoare loģiku (Hoare 1969), kurā pareizības pierādījumi ir secinājumi starp trīskāršiem rakstiem

B {P} A

kur P ir programma, bet B un A ir apgalvojumi (programmas “pirms” un “pēc” stāvokļi), kas izteikti dažās predikātu loģikas versijās ar funkcijām, kas atvieglo programmas mainīgajiem pievienoto vērtību izteikšanu.

Viena filozofiska diskusija, kas apņem pareizības jautājumu, koncentrējas uz šādu pierādījumu būtību; citi izaicina, ko sniedz šie pierādījumi.

4.1. Informācijas iegūšanas pierādījumi

Vai programmas pareizības pierādījumi ir īsti matemātiski pierādījumi, ti, vai šie pierādījumi ir līdzvērtīgi standarta matemātiskajiem? DeMillo et al. (1979) apgalvo, ka, tā kā pareizības pierādījumi ir gari un matemātiski sekli, tie atšķirībā no matemātikas pierādījumiem ir konceptuāli interesanti, pārliecinoši un piesaista citu matemātiķu uzmanību, kuri vēlas tos studēt un uz tiem balstīties. Piemēram, Hoare loģikas pierādījums tam, ka 2. programma aprēķina koeficienta funkciju, saturētu informāciju par pamata jēdzienu, izmantotu induktīvu argumentu un ietvertu argumentāciju par cilpas invarianci.

Bet šādi pierādījumi būtu daudz garāki nekā pati programma. Turklāt līmenim, kurā argumentācija ir kodēta Hoare loģikā, būtu nepieciešama daudzu detaļu izpausme un attēlojums, kuras parasti tiek atstātas netieši. Tas būtu nogurdinošs un vairumam programmu konceptuāli triviāls.

Šis arguments paralēli matemātikas filozofijā izteiktajiem argumentiem par satveršanu (piemēram, Tymoczko 1979; Burge 1988). Tās centrā ir epistemoloģiskas rūpes: pārāk gari, apgrūtinoši un neinteresanti pierādījumi nevar būt tāda veida noteiktības nesēji, kas tiek piedēvēti standarta matemātiskajiem pierādījumiem. Tiek apgalvots, ka no pareizības pierādījumiem iegūto zināšanu raksturs atšķiras no zināšanām, kuras var iegūt no matemātikas pierādījumiem [1].

Ir jānošķir arī šī būtībā socioloģiskā perspektīva attiecībā uz pierādījumiem no tās, kas apgalvo, ka pierādījumiem ir taisnība vai taisnība tādā veidā, kas ir neatkarīgs no šādiem epistemoloģiskiem spriedumiem. Ir iespējams turēties pie reālistiskākas pozīcijas, saskaņā ar kuru jebkurš sniegtais pierādījums ir pareizs vai nepareizs, nepametot prasību, ka pierādījumiem, lai tos ņemtu un apstiprinātu, ir jābūt satveramiem.

Var mēģināt iegūt zināmu pamatojumu, iestājoties par to, ka pareizības pierādījumi būtu jāpārbauda datoram, nevis cilvēkiem. Bet, protams, pats pārbaudītājs ir jāpārbauda. Arkoudas un Bringsjord (2007) apgalvo, ka, ja ir jāpārbauda tikai viens pareizības pierādījums, proti, pats pierādīšanas pārbaudītājs, tad kļūdu iespējamība tiek ievērojami samazināta.

4.2. Pierādījumi matemātikā

Arī matemātiski pierādījumi, piemēram, Gēdela nepabeigtības teorēmas pierādījums, ir gari un sarežģīti. Bet tas, kas matemātikas aprindās tos padara caurspīdīgus, interesantus un saprotamus (“uzraugāmus”), ir modularitātes paņēmienu (piemēram, lemmu) izmantošana un abstrakcijas izmantošana matemātiskās veidošanas procesā. Jaunu jēdzienu ieviešana ļauj pierādījumus veidot pakāpeniski, tādējādi padarot pierādījumus vieglāk uztveramus. Matemātika progresē, izgudrojot jaunas matemātiskas koncepcijas, kas ļauj uzbūvēt augstāku līmeni un vispārīgākus pierādījumus, kas bez tiem būtu daudz sarežģītāki un pat neiespējami. Piemēram, eksponentu apzīmējums ļauj veikt aprēķinus ārpus reizināšanas sarežģītības un strīdēties par rezultātiem. Otrkārt,kategoriju teorijas izgudrojums ļāva izteikt un pierādīt ļoti vispārīgus rezultātus par algebriskajām struktūrām, kas automātiski attiecas uz virkni tādu. Matemātika nav tikai pierādīšana; tas ietver arī abstrahēšanu un jaunu jēdzienu un notāciju izveidošanu. Raugoties uz to, formālie pareizības pierādījumi parasti neizmanto jaunu jēdzienu radīšanu vai iesaistās matemātiskās abstrakcijas procesā. Turpretī datorzinātņu abstrakcija (6.1. Punkts) ir koncentrēta uz jēdzieniem, kas nepieciešami programmas izstrādei. Bet kā šie divi abstrakcijas jēdzieni ir saistīti? Par to vēlāk pateiksim nedaudz vairāk.tas ietver arī abstrahēšanu un jaunu jēdzienu un notāciju izveidošanu. Raugoties uz to, formālie pareizības pierādījumi parasti neizmanto jaunu jēdzienu radīšanu vai iesaistās matemātiskās abstrakcijas procesā. Turpretī datorzinātņu abstrakcija (6.1. Punkts) ir koncentrēta uz jēdzieniem, kas nepieciešami programmas izstrādei. Bet kā šie divi abstrakcijas jēdzieni ir saistīti? Par to vēlāk pateiksim nedaudz vairāk.tas ietver arī abstrahēšanu un jaunu jēdzienu un notāciju izveidošanu. Raugoties uz to, formālie pareizības pierādījumi parasti neizmanto jaunu jēdzienu radīšanu vai iesaistās matemātiskās abstrakcijas procesā. Turpretī datorzinātņu abstrakcija (6.1. Punkts) ir koncentrēta uz jēdzieniem, kas nepieciešami programmas izstrādei. Bet kā šie divi abstrakcijas jēdzieni ir saistīti? Par to vēlāk pateiksim nedaudz vairāk.

4.3. Fiziskā un abstraktā pareizība

Pat ja mēs atmetam šīs epistemoloģiskās rūpes, otrā un šķietami postošākā kritika par pareizību pierāda, kas viņus patiesībā ir iedibinājis. Šķiet, ka pareizības pierādījums nodrošina pareizību tikai līdz programmas tekstuālajam attēlojumam. Neviens oficiāls darbs nevar mūs iziet no abstraktā / fiziskā šķēršļa: mēs nekad nevaram garantēt, ka kāda konkrēta programmas izpilde fiziskā mašīnā notiks pareizi, kā paredzēts (Fetzer 1988; Fetzer 1999; Colburn 2004).

Bet ko tas nozīmē, ka p programma ir pareiza? Pieņemsim, ka mums ir programmas specifikācija un ka tā var būt formāla vai neformāla. Tad pieņemsim, ka mēs veicam virkni pārbaudes braucienu, lai pārbaudītu, vai programma atbilst tās specifikācijai. Ja viņiem tas izdodas, mums ir empīriski pierādījumi, ka tekstuālās programmas fiziskais ekvivalents patiešām ir pareizs, jo tā darbojas saskaņā ar specifikāciju. Šajā skatījumā tika pārbaudīts fiziskais ekvivalents; nevis tekstuālā programma.

Šī analīze liek domāt par programmu pareizības jēdziena divējādību. Saskaņā ar programmu divējādo raksturu mēs varētu teikt, ka tekstuālā programma ir pakļauta matemātiskai pareizībai, savukārt tās fiziskā līdzvērtība ir pakļauta empīriskai pārbaudei.

5. Skaitāmība

Skaitļojamība ir viena no vecākajām tēmām, ko var apzīmēt kā PCS. Tomēr tas ir vairāku SEP ierakstu priekšmets (piemēram, Barker-Plummer 2004), un tāpēc mēs pieminēsim tikai dažas tēmas un to saistību ar pārējo pašreizējo ierakstu.

5.1 Baznīcas Turingas darbs

Viens no centrālajiem jautājumiem ir Baznīcas Tjūringa darbs. Un šeit ir divi strīdi, viens vēsturisks un otrs empīrisks. Viņi koncentrējas uz šādām divām iespējamām darba interpretācijām:

  1. Turing mašīnas var darīt jebko, ko varētu raksturot kā “īkšķa likumu” vai “tīri mehānisku”.
  2. To, ko var aprēķināt mašīna (strādājot ar ierobežotajiem datiem saskaņā ar ierobežoto instrukciju programmu), Tīringa mašīna var aprēķināt.

I interpretācija ir paredzēta efektīvas vai mehāniskas metodes jēdziena uztveršanai loģikā un matemātikā. Tas ir domāts, lai atspoguļotu neformālu algoritma jēdzienu, kas netieši ietverts matemātikā un ko izvirzījusi Hilberta programma. II interpretācija ir paredzēta fizisko mašīnu vadīšanai. Patiešām, (Gandijs 1980) var uzskatīt par turpmāku II iepakojumu. Gandijs ierosina četrus principus, kas paredzēti, lai raksturotu aprēķinus ar fizisku mašīnu. Viņš parāda, ka šādas mašīnas precīzi piekrīt Tjūringa raksturojumam (Gandija teorēma). Saistībā ar mūsu diskusiju par dažādām semantiskajām paradigmām ir skaidrs, ka daudzas no mašīnām, kas ir denotācijas semantikas pamatā (3.1. Punkts), nav kvalificējamas kā Gandija mašīnas. Tie visbiežāk darbojas ar papildu telpām ar augstāku pakāpi,un tos nevar uzskatīt par ierobežotiem datiem un tie neatbilst Gandija nosacījumiem.

Daži apgalvo (Copeland 2004; Copeland 2008), ka Baznīcas un Tjūringa ierosinātā tēze attiecas tikai uz I interpretāciju un vispār nenosaka ierobežojumus mašīnām. Hodžs (2007) nepiekrīt. Viņš apgalvo, ka Baznīca un Tjūrings neatšķīra abas interpretācijas. Šis ir vēsturiskais strīds.

Fiziskais strīds skar reālo mašīnu iespējas (II interpretācija). Daudzi uzskata par pašsaprotamu, ka Baznīcas-Tjūringa disertācija raksturo un nosaka faktisko fizisko aprēķinu. Piemēram, šķiet, ka tas ir netiešs pieņēmums vispārējā datorzinātnē. Noteikti ir tā, ka katra programma, kas uzrakstīta esošā ieviestajā programmēšanas valodā, ir Tjūringa aprēķināma, un tieši pretēji, ka visas vispārējas nozīmes programmēšanas valodas ir Tjūringa pabeigta, ti, tajās ir visas vadības konstrukcijas, kas vajadzīgas universālas Tjūringa mašīnas simulēšanai.

Kopelands (2007) apgalvo, ka Gandija diskrētās deterministiskās mehāniskās ierīces raksturojums ir pārāk šaurs, un tāpēc ir iespējamo fizisko mašīnu piemēri, kuru iespējas pārsniedz Turingas aprēķināmo funkciju klasi. Daudziem no tiem nepieciešams bezgalīgs paātrinājums, ar kuru noteiktā laikā var fiziski veikt bezgalīgu skaitu aprēķinu. Kvantu skaitļošana ir minēta kā iespējamais šādu mašīnu piemērs, taču tas ir ticis apstrīdēts (Hodges 2007; Hagar 2007).

Hodžs arī rūpējas par standarta matemātiskās argumentācijas pielietojamību fizikā tajos gadījumos, kad ir iesaistīta bezgalīga precizitāte. Tas liek domāt, ka šis strīds nav vienkāršs empīrisks. Patiešām, ir tādi, kas apšauba, vai fiziski ir iespējams izpildīt bezgalīgu skaitu uzdevumu noteiktā laikā. Dummets (2006) apšauba, vai pats jēdziens par bezgalīgu uzdevumu, kas jāveic fiziskajā vidē, ir ne tikai fiziska neiespējamība, bet arī konceptuāls. Tātad strīds nav tikai empīrisks, bet arī nonāk mūsu izpratnes centrā par mūsu matemātisko modeļu un fiziskās realitātes saistību.

6. Programmēšana un programmēšanas valodas

Programmu un programmēšanas valodu izstrāde ir viena no tradicionālajām datorzinātnes aktivitātēm. Viņus ieskauj daudz konceptuālu jautājumu (1. punkts), no kuriem daudziem nav pievērsta nekāda filozofiska uzmanība. Šeit īsi apskatīsim divas no šīm problēmām.

6.1. Abstrakcija

Abstrakcija ir viens no datorzinātnes konceptuālajiem stūrakmeņiem. Tā ir neatņemama programmas izstrādes un veidošanas sastāvdaļa, un tā veido galveno metodoloģiju programmēšanas valodu projektēšanai. Patiešām, tas virza jaunu programmēšanas paradigmu izveidi. Tā pamatā ir tādu jēdzienu izgudrošana kā procesuālā un funkcionālā abstrakcija, polimorfisms, datu abstrakcija, objekti un klases, dizaina paraugi, arhitektūras stili, apakštipi un mantojums. Daudzas programmatūras inženierijas nozares (piemēram, programmatūras modelēšana, programmas izpratne, programmas vizualizācija, reversā un pārbūve) galvenokārt ir saistītas ar piemērotu programmu ieguves mehānismu izpēti. Liela daļa programmatūras inženierijas panākumu ir sasniegta, pateicoties jaunu abstrakcijas mehānismu ieviešanai.

Bet kāds ir abstrakcijas raksturs datorzinātnēs? Kāds ir tā filozofiskais skaidrojums? Diemžēl kopumā pati abstrakcijas ideja ir filozofiski problemātiska. Saskaņā ar tradicionālo uzskatu, kura pirmsākumi meklējami filozofiskajā psiholoģijā, abstrakcija ir garīgs process, kurā jaunas koncepcijas veidojas, apsverot vairākus objektus vai idejas un izlaižot pazīmes, kas tos atšķir. (Rozens 2001). Bet šai pieejai ir maz, ja vispār, mūsdienu filozofijas aizstāvju.

Loģiskāka pieeja abstrakcijas analīzei, kurai tomēr ir izteikta aizstāvība (Wright 1983; Hale 1987). Bet nav skaidrs, vai šīs idejas, kas izstrādātas matemātiskai abstrakcijai, ir izmantojamas datorzinātnēs. Skaidrs, ka daži datorzinātnes abstrakcijas jēdzieni ir vai nu iedvesmoti, vai arī izpētīti, izmantojot abstrakcijas matemātikā. Bet kādas ir abstrakcijas konceptuālās attiecības šajās disciplīnās? Vai tie ir būtiski atšķirīgi? Diemžēl, kaut arī ir daudz literatūras par matemātiskās abstrakcijas filozofiskajiem pamatiem (sk. Wright 1983; Hale 1987; Fine 2002), abstrakcijas konceptuālā izpēte datorzinātnēs ir sākumstadijā. Colburn (2007) norāda, ka atšķirība starp abstrakcijām matemātikā un abstrakcijām datorzinātnēs slēpjas faktā, ka matemātikā abstrakcija ir informācijas nolaidība, savukārt datorzinātnēs tā ir informācijas slēpšana. Tas ir, abstrakcijās matemātikā tiek ignorēts tas, kas tiek uzskatīts par nebūtisku (piemēram, līdzīgu trīsstūru krāsa). Turpretī datorzinātnēs nevienu no zemākajiem līmeņiem (piemēram, virtuālo) nedrīkst ignorēt visas detaļas, kuras tiek ignorētas vienā abstrakcijas līmenī (piemēram, Java programmētājiem nav jāuztraucas par precīzu atrašanās vietu atmiņā, kas saistīta ar konkrētu mainīgo). mašīna apstrādā visus atmiņas piešķīrumus).abstrakcijās matemātikā tiek ignorēts tas, kas tiek uzskatīts par nebūtisku (piemēram, līdzīgu trīsstūru krāsa). Turpretī datorzinātnēs nevienu no zemākajiem līmeņiem (piemēram, virtuālo) nedrīkst ignorēt visas detaļas, kuras tiek ignorētas vienā abstrakcijas līmenī (piemēram, Java programmētājiem nav jāuztraucas par precīzu atrašanās vietu atmiņā, kas saistīta ar konkrētu mainīgo). mašīna apstrādā visus atmiņas piešķīrumus).abstrakcijās matemātikā tiek ignorēts tas, kas tiek uzskatīts par nebūtisku (piemēram, līdzīgu trīsstūru krāsa). Turpretī datorzinātnēs nevienu no zemākajiem līmeņiem (piemēram, virtuālo) nedrīkst ignorēt visas detaļas, kuras tiek ignorētas vienā abstrakcijas līmenī (piemēram, Java programmētājiem nav jāuztraucas par precīzu atrašanās vietu atmiņā, kas saistīta ar konkrētu mainīgo). mašīna apstrādā visus atmiņas piešķīrumus).

Bet vai tas ir pamatots ar pārāk vienkāršotu abstrakcijas jēdzienu matemātikā? Vai ir tikai viena veida jēdziens? Piemēram, informācija, kas slēpjas Bishop analīzē (Bishop 1970), ir diezgan atšķirīga no Wright priekšstata par abstrakciju - patiešām, tā ir diezgan līdzīga datorzinātnei.

6.2. Veidi un ontoloģija

Programmēšanas valodas lielākoties ir drukātas valodas, kur mūsdienu tipa jēdziens ir cēlies no Frege un Russell, un jo īpaši Rasela vienkāršajā tipu teorijā (Irvine 2003). Protams, Raselu motivēja loģiski un semantiski paradoksi, un šī īpašība nav galvenā tipu piemērošanā datorzinātnēs. No otras puses, Rasela tipiem veido diskursa visumu tādos veidos, kuriem ir gan gramatiskais, gan semantiskais raksturs. Un šī ideja ir pārnesta uz datorzinātnēm. Tipa teorijas ir iedvesmojušas un bagātinājušas datorzinātnes. Piemēram, Rasela tipu teorija, lai arī matemātiski spēcīga, tās izteiksmīgajā spējā ir nedaudz nabadzīga, salīdzinot ar mūsdienu datoru valodu tipu teorijām (Coquand 2006; Pierce 2002). Programmēšanas valodās, izņemot virkni pamata tipu, piemēram, skaitļus un Būla, ir tipa konstruktoru kolekcija (veidi, kā veidot jaunus veidus no vecajiem). Piemēram, tie ietver spēju veidot kaut kādu Dekarta izstrādājumu un ierobežotus komplektus. Daudzās objektorientētās programmēšanas valodās tipi (klases) var importēt (un ignorēt) operācijas no citiem tipiem un piedāvāt sarežģītākus konstruktorus, kas atbalsta abstraktu datu tipu veidošanos un dažādas polimorfisma formas.tipi (klases) var importēt (un ignorēt) operācijas no citiem tipiem un piedāvāt sarežģītākus konstruktorus, kas atbalsta abstraktu datu tipu veidošanos un dažādas polimorfisma formas.tipi (klases) var importēt (un ignorēt) operācijas no citiem tipiem un piedāvāt sarežģītākus konstruktorus, kas atbalsta abstraktu datu tipu veidošanos un dažādas polimorfisma formas.

Datorzinātnē tipiem ir loma, kas ir pusceļā starp sintakse un semantiku. Pirmkārt, tie paplašina mūsu parasto priekšstatu par bezkontekstu gramatiku. Dažām valodas iezīmēm, it īpaši tām, kas ļauj mainīgo veidu noteikt ar kontekstu (ti, valodas deklarācijas), nepieciešama gramatikas forma, kas ir elastīgāka nekā standarta. Tā sauktie divu līmeņu gramatikas, kaut arī ir tehniski piemērotas, neuztver veidu, kādā mainīgajiem tiek piešķirti to veidi mūsdienu valodās. Un tos ir ļoti neveikli izmantot. Viņi arī nav viegli pielāgojušies daudzu valodu polimorfā tipa sistēmām. Mūsdienu tipa sistēmām ir labāk: mainīgajiem tiek piešķirti to veidi, izmantojot deklarācijas, piemēram, x: Būla. Pēc tam kompilators var pārbaudīt programmu, piemēram,tā var nodrošināt, ka mainīga lieluma parādīšanās turpmākajos paziņojumos (piemēram, x

Bet tipiem ir arī pareizības loma, kas parasti netiktu aprakstīta sintaktiskā izteiksmē. Tas tiek darīts, paplašinot tradicionālo fizisko dimensiju analīzes jēdzienu ar daudz bagātāku tipu sistēmu. Pareiza programmas veida struktūras iegūšana kaut kādā veidā nodrošina tās pareizību. Un to nosaka struktūra, kuru tipi uzliek valodai. Veidi nosaka, kādas lietas ir programmēšanas valodā. Piemēram, jebkura programmēšanas valoda, kas pieļauj skaitļus, produktus un klases un neko citu, programmētājam uzliek konceptuālu ietvaru, kurā viņai jāstrādā. Problēmas jāformulē un jārod risinājumi, izmantojot reprezentācijas līdzekļus, ko nodrošina tipa sistēma. Kad programmēšanas valodas tipa struktūra ir noteikta, liela daļa tās ontoloģisko iestatījumu ir noteikti.

Vai arī ir? Varbūt mums jāatkāpjas un vispirms jājautā, kā ir jānosaka valodas ontoloģiskās saistības. Vai semantika nosaka jautājumus (Turner & Eden 2007)? Tā liecina sena tradīcija, kas nāk no Frege (Dummett 1991). Pieņemot, ka analoģija ar dabiskajām valodām ir likumīga, valodas ontoloģiju nosaka struktūras, kas vajadzīgas, lai nodrošinātu tās semantiskos domēnus. Bet kuru semantisko teoriju mums vajadzētu pieņemt? Lai gan jebkurā semantikā ir jāņem vērā tipi, semantiski noteiktā ontoloģija pārsniegtu tos un atspoguļotu iesaistītos semantiskos domēnus, un tie atspoguļotu semantikā ietverto ieviešanas detaļu. Šajā sakarā, tāpat kā līdztiesībā, dažādas semantiskās interpretācijas nosaka dažādas ontoloģijas. No tā izriet, ka nav saprātīgi runāt par programmēšanas valodas ontoloģiju, bet par vairākām ontoloģijām, kas ir atkarīgas no semantikā iesaistītā abstrakcijas līmeņa. Piemēram, ontoloģiju var daļēji noteikt arī programmēšanas paradigma.

7. Juridiski un ētiski jautājumi

Daži datoru ētikas jautājumi pieder PCS, jo programmatūras veidošanas un lietošanas aktivitātes rada ētiskus jautājumus. Tomēr daudzi nav raksturīgi datorzinātnei šī ieraksta šaurā nozīmē; tie skar visu informācijas tehnoloģiju un datoru lietojumprogrammas (Bynum 2001). Rezultātā mēs pieminēsim tikai divus, kas, šķiet, ir datorzinātņu centrā.

7.1. Autortiesības, patenti un identitāte

Autortiesības nodrošina zināmu programmatūras aizsardzību, taču tās nespēj aizsargāt tās semantisko kodolu. Mēs uzskatām, ka pēdējais ir jānosaka ar programmēšanas valodas, kurā programma tiek uzrakstīta, semantisko kontu (3. punkts). Jādomā, ka šī jautājuma būtība ir saistīta ar programmas identitātes problēmu (3.3. Punkts). Bet, ja ir daudzi iespējamie identitātes semantiskie priekšstati, kurš no tiem ir piemērots juridiskai piemērošanai?

Viens neformāls semantiskais konts, kas bieži citēts likumos, identificē programmu ar tajā izteiktajām idejām, kuras visbiežāk tiek uzskatītas par tās pamatā esošo algoritmu. Bet ne tikai bieži vien ir grūti pateikt, kas tieši ir šis algoritms, bet arī, tāpat kā ar matemātiskām teorēmām, algoritmus nevar aizsargāt ar autortiesībām. Un gandrīz tāds pats liktenis sagaida arī jebkuru formālu semantisko kontu, jo jebkuru tādu nosaka kāds matemātisks jēdziens, vai tas būtu algoritmi vai kāds operācijas vai matemātiskas funkcijas jēdziens.

Bet pat tad, ja mēs varētu atrast semantisko kontu, kas atbilstu autortiesību likumiem, juridiskais attēls nebūtu pilnīgs. Autortiesību pārkāpumi bieži ir atkarīgi ne tikai no kāda identitātes, bet arī no tā, vai ir ticami uzskatīt, ka kāds nāks klajā ar to pašu programmu. Tātad tīši apsvērumi nonāk rāmī. Citiem vārdiem sakot, pat ja divas programmas tiek uzskatītas par līdzvērtīgām saskaņā ar mūsu semantisko kritēriju, ja varētu uzskatīt, ka ir ticami, ka tās ir veidotas neatkarīgi, autortiesību pārkāpums netiks veikts.

Patenti (īpaši komunālie patenti) nav labāki. Viņiem ir vēl grūtāk iegūt programmatūru, jo nevar patentēt mentālos procesus, abstraktas idejas un algoritmus. Un jaunās idejas bieži satur algoritmi, nevis avota kods. Bet atkal ir tas, ka identifikācijas un identitātes jautājumi ir galvenās filozofiskās rūpes. Un tie ietver gan semantiskus, gan tīšus apsvērumus.

7.2 Pareizība un atbildība

Vai ir pareizi, ka programmatūra tiek pārdota ar nelielām garantijām par piemērotību mērķim? (Coleman 2008) ir veltīts šim jautājumam. Tas ir īpaši būtisks jautājums attiecībā uz drošībai kritiskām sistēmām, piemēram, sistēmām, kas uzrauga veselības stāvokli, ekspluatē atomelektrostacijas un sazinās ar kosmosa vilcieniem. Šeit šķiet svarīgi ieviest stingrāku pārbaudi un pareizības pierādījumus. Bet ētiskā ziņā tas, vai programmētājs, kurš nespēj analizēt un pārbaudīt savu programmu, atšķiras no tā, kāds ir būvinženierim, kurš neveic vajadzīgo matemātisko modelēšanu un ēkas celtniecības testus? Morālās saistības šķiet līdzīgas.

Viens no veidiem, kā tie var atšķirties, attiecas uz programmatūras sarežģītību (Brooks 1987), kas pēc apjoma pārsniedz jebkura cita cilvēka artefakta sarežģītību. Daudzi apgalvo, ka šādas pareizības garantijas piedāvāt nav iespējams (DeMillo et al. 1979); programmatūra ir tik sarežģīta, ka nav iespējams veikt stingru matemātisko pierādījumu un programmatūras pārbaudi. Un, domājams, cilvēkam var būt tikai (morāls vai juridisks) pienākums veikt realizējamu procesu.

Bet kā var līdzsvarot programmatūras izstrādes pierādīšanas un testēšanas aspektus ar paredzēto programmatūras izmantošanu? Vai programmatūrai, kas izstrādāta izklaidei, būtu jāpiemēro tikpat stingrs pierādīšanas un testēšanas līmenis kā programmatūrai, kas ir kritiska drošībai? Jādomā, ka nē, bet mums tomēr varētu rasties kārdinājums jautāt, vai tās ir šīs jaunās ētiskās problēmas, vai arī tās tikai sniedz mums turpmāku esošo ētisko dilemmu gadījumu izpēti? Piemēram, pat drošības trūkumi izklaides industrijā izmantotajā programmatūrā var būt finansiāli sodi.

8. Jauni līkloči vai jauni jautājumi?

Pat šis diezgan īsais PCS pārskatsvajadzētu pārliecināt lasītāju, ka datorzinātne rada interesantus un prasīgus filozofiskus jautājumus. Patiešām, viens no svarīgākajiem iespaidiem ir tas, ka tam ir būtiska saikne ar lielāko daļu tradicionālo filozofijas nozaru. Ir skaidra saistība ar ontoloģiju, ētiku, epistemoloģiju un matemātikas, fizikas un valodas filozofijām. Patiešām, mūsu sākotnējais jautājumu saraksts izvirza vēl daudzas citas tēmas, kas saistītas ar citām filozofijas jomām. Īpaši daudz ir literatūras par datorzinātnes pielietojumu. Mākslīgais intelekts un kognitīvā zinātne rada filozofiskus jautājumus, kas pieder prāta filozofijai (McLaughlin 2004). Protams, liela daļa no tā rodas no Tēringa (1950). Citas datorzinātnes lietojumprogrammas tradicionālajās zinātnes jomās, tā sauktās skaitļošanas zinātnes,radīt jautājumus zinātnes filozofijai: kāda ir datorsimulāciju epistemoloģiskā ietekme, it īpaši, ja šīs ir vienīgās dzīvotspējīgās eksperimenta formas? Skaitļojošais ontoloģijas pagrieziens rada jaunas metodes, lai izmantotu jebkura veida konceptuālās ontoloģijas struktūru. Loģikas filozofiju bagātina materiāla masa: ir parādījies liels skaits jaunu loģisko sistēmu, lai tās attēlotu un argumentētu par skaitļošanas sistēmām. Ir parādījies liels skaits jaunu loģisku sistēmu, lai attēlotu un pamatotu skaitļošanas sistēmas. Ir parādījies liels skaits jaunu loģisku sistēmu, lai attēlotu un pamatotu skaitļošanas sistēmas.

Lai gan ir skaidrs, ka datorzinātne rada daudzus nozīmīgus posteņus tradicionālajās filozofiskajās problēmās, nav tik skaidrs, vai tā rada patiešām jaunas filozofiskas bažas: vai PCS ir jautājumi, kuriem nav paralēles nevienā citā filozofijas nozarē?

Bibliogrāfija

  • Allison, A., Currall, J., Moss, M. and Stuart, S., 2005, “Digitālās identitātes jautājumi”, American Society Information Science and Technology Journal 56 (4): 364–372.
  • Arkoudas, K. un Bringsjord, S., 2007, “Datori, pamatojums un matemātiskās zināšanas”, prāti un mašīnas 17 (2): 185–202.
  • Barendregt, HP, 1993, “Lambda calculi with tips”, in: Datorikas loģikas rokasgrāmata, Sēj. 2, Ņujorka, Ņujorka: Oxford University Press Inc.
  • Barker-Plummer, D., 2008, “Turing Machines”, Stenforda filozofijas enciklopēdija (2008. gada rudens izdevums), Edvards N. Zalta (red.), URL = .
  • Bishop, Errett, 1977, Konstruktīvās analīzes pamati, Makgreivs-Hils.
  • Blass, Andreas un Gurevich, Jurijs, 2003, “Algoritmi: Absolūtu definīciju meklējumi”, Eiropas Teorētiskās datorzinātnes asociācijas (EATCS) biļetens Nr.81: 195–225.
  • Bovens, JP un Hinčijs, MG, 1995, “Desmit pavēles par formālām metodēm”, IEEE Computer 28 (4): 56–63.
  • Bovens, JP un Hinčijs, MG, 2005, “Desmit formālu metožu pavēles: desmit gadus vēlāk”, IEEE Computer 39 (1): 40–48.
  • Brooks, FP, 1987, “Bez sudraba lodes: programmatūras inženierijas būtība un negadījumi”, IEEE Computer 20 (4): 10-19.
  • Burge, T., 1998, “Datoru pierādījumi, zināšanas par Priori un citi prāti”, Filozofiskās perspektīvas 12: 1–37.
  • Bynum, T., 2001, “Datoru ētika: pamatjēdzieni un vēsturiskais pārskats”, Stenfordas filozofijas enciklopēdija (2001. gada ziemas izdevums), Edvards N. Zalta (red.), URL =
  • Colburn, T., 2004, “Datorzinātnes metodoloģija”, Blekvela ceļvedis skaitļošanas un informācijas filozofijai, Luciano Floridi (ed.), Malden: Blackwell, 318. – 326. Lpp.
  • Colburn, T., un Shute, G., 2007, “Abstrakcija datorzinātnēs”, prāti un mašīnas 17 (2): 169–184.
  • Coleman, KG, 2008, “Computing and morālā atbildība”, Stenforda filozofijas enciklopēdija (2008. gada rudens izdevums), Edvards N. Zalta (red.), URL = .
  • Kopelands, B. Džeks, 2008, “The Church-Turing Thesis”, Stenforda filozofijas enciklopēdija (2008. gada rudens izdevums), Edvards N. Zalta (red.), URL = .
  • Copeland, B. Jack, 2004, “Computation”, Blackwell ceļvedis skaitļošanas un informācijas filozofijai, Luciano Floridi (ed.), Malden: Blackwell, 3. – 17. Lpp.
  • Coquand, Thierry, 2006, “Type Theory”, Stenfordas filozofijas enciklopēdija (2006. gada ziemas izdevums), Edvards N. Zalta (red.), URL = .
  • DeMillo, RA, Lipton, RJ un Perlis, AJ, 1979. gads, “Teoriju un programmu sociālie procesi un pierādījumi”, ACM paziņojumi 22 (5): 271–280.
  • Dennings, PJ, 1980. gads, “Par tautas teorēmām un tautas mītiem”, ACM paziņojumi 23 (9): 493–494.
  • Dennings, PJ, 1980. gads, “Kas ir eksperimentālā datorzinātne?” ACM 23 (10) sakari: 534–544.
  • Denning, PJ, 1981, “Darbības analīze: eksperimentālā datorzinātne kā labākā”, ACM paziņojumi 24 (11): 725–727.
  • Denning, PJ, 1985, “Datorzinātne: Kas ir datorzinātne?” Amerikāņu zinātnieks 73 (1): 16–19.
  • Denning, PJ (ed.), Et al., 1989, “Computing as disciplin”, ACM 32 (1): 9–23 Communications.
  • Dijkstra, E., 1968. “Doties uz paziņojumu, kas tiek uzskatīts par kaitīgu”, ACM paziņojumi 11 (3): 147–148.
  • Dummett, M., 1991, “Metafizikas loģiskais pamats”, Harvard University Press.
  • Dummett, M., 2006, “Doma un realitāte”, Oxford University Press.
  • Edens, Amnons, 2007, “Trīs paradīzes datorzinātnēs”, prāti un mašīnas 17 (2): 135–167.
  • Feferman, S., 1992, “Funkcionālo programmu izbeigšanas un pareizības loģika”, Datorikas loģika: 95–127, MSRI Pubs. vol. 21, Ņujorka, NY: Springer-Verlag.
  • Fetzer, JH, 1988, “Programmas pārbaude: pati ideja”, ACM 31 (9): 1048–1063 paziņojumi.
  • Fetzer, JH, 1999, “Modeļu loma datorzinātnēs”, The Monist 82 (1): 20–36.
  • Fine, K., 2008, “Abstrakcijas robežas”. Oksforda: Oxford University Press.
  • Floridi, Luciano, 2004. “Informācija”, Blekvela ceļvedis skaitļošanas un informācijas filozofijai, Luciano Floridi (red.), Malden: Blackwell, 40. – 62. Lpp.
  • Floridi, Luciano 2007, “Informācijas semantiskās koncepcijas”, Stenfordas filozofijas enciklopēdija (2007. gada pavasara izdevums), Edvards N. Zalta (red.), URL = .
  • Forrest, P., 2006, “Neizprotamo lietu identitāte”, Stenforda filozofijas enciklopēdija (2008. gada rudens izdevums), Edvards N. Zalta (red.), Gaidāmais URL =. >.
  • Fukss, NE, 1992, “Specifikācijas ir (vēlams) izpildāmas”. Programmatūras inženierzinātnes žurnāls 7 (5): 323–334.
  • Gandijs, R., 1980. gads, “Baznīcas tēze un mehānismu principi”, Klēnes simpozijs, Bārvejs, Dž., Keislers, HJ un Kunens, K. (red.), Amsterdama: Ziemeļholande.
  • Hagars, Amit, 2007, “Kvantu algoritmi: filozofiskās nodarbības”, prāti un mašīnas 17 (2): 233–247.
  • Hale, B. un Wright, C., 2001. gads, “Iemesla pareizais pētījums: Esejas pret neo-Fregean matemātikas filozofiju”, Oksfordas stipendijas tiešsaistē, Oksforda: Oxford University Press.
  • Hartmanis, J., 1993, “Daži novērojumi par datorzinātnes būtību”, lekciju piezīmes datorzinātnēs 761, Shyamasundar, RK (ed.): 1. – 12.
  • Hartmanis, J., 1994, “Tjūringa balvas lekcija: par skaitļošanas sarežģītību un datorzinātnes būtību”, ACM paziņojumi 37 (10): 37–43.
  • Hoare, CAR, 1969, “Aksiomātiska bāze datoru programmēšanai”. ACM 12 (10) sakari: 576–585. [Pārdrukāšana pieejama tiešsaistē]
  • Hodžs, A., 2006, “Vai Baznīcai un Tjūringam bija disertācija par mašīnām?”, Baznīcas darbs pēc 70 gadiem Olszewski, Adam (ed.)
  • Hodžs, A., 2007, “Vai kvantu skaitļošana var atrisināt klasiski neatrisināmas problēmas?”
  • Horstens, L., 2008. gads, “Matemātikas filozofija”, Stenforda filozofijas enciklopēdija (2008. gada rudens izdevums), Edvards N. Zalta (red.), URL = .
  • Immerman, N., 2006, “Aprēķināmība un sarežģītība”, Stenforda filozofijas enciklopēdija (2006. gada rudens izdevums), Edvards N. Zalta (red.), URL = .
  • Īrvina, AD, 2003, “Rasela paradokss”, Stenforda filozofijas enciklopēdija (2006. gada rudens izdevums), Edvards N. Zalta (red.), URL =
  • Jones, CB un Hayes, IJ, 1990, “Specifikācijas nav (obligāti) kaitīgas”, Software Engineering Journal 4 (6): 330–339.
  • Krishnamurthi, S., 2003. Programmēšanas valodas: lietojums un interpretācija,
  • Kreisel, G., Gandy, RO, 1975, “Daži rekursijas teorijas vispārināšanas iemesli”. Žurnāls Symbolic Logic 40 (2): 230–232.
  • Kripke, S., 1982, Vitgenšteins par noteikumiem un privāto valodu. Harvard University Press.
  • Kuhn, TS, 1970, Zinātnisko revolūciju struktūra, 2.sēj. ed., Chicago: Univ. of Chicago Press.
  • Landins, PJ, 1964. gads, “Izteicienu mehāniskā novērtēšana”, Computer Journal 6 (4): 308–320.
  • Milne, R. un Strachey, C., 1977, Valodas semantikas programmēšanas teorija, Ņujorka, Ņujorka: Halsted Press.
  • McLaughlin, B., 2004, “Computationalism, Connectionism and the Philosophy of Mind”, Blekvela ceļvedis skaitļošanas un informācijas filozofijai, Floridi, Luciano (ed.) Malden: Blackwell, 135. – 152. Lpp.
  • Minsky, M., 1970. gads, “ACM Turing lekcija: forma un saturs datorzinātnēs”, Datoru ražošanas asociācijas žurnāls 17 (2): 197–215.
  • Moor, JH, 1978. gads, “Trīs datorzinātņu mīti”, Lielbritānijas žurnāls par zinātnes filozofiju 29 (3): 213–222.
  • Moschovakis, YN, 1998, “Par algoritmu teorijas izveidošanu”, Patiesība matemātikā Dales, Harolds G. un Oliveri, Džanluigi (red.), Oksforda: Oxford University Press.
  • Pīrss, Benjamīns C., 2002. gads, valodu veidi un programmēšanas valodas, Kembridža, MA: MIT Press.
  • Plotkins, GD, 1981. gads, “Strukturālā pieeja operatīvajai semantikai”, tehn. Rep. DAIMI FN-19, Orhūsas Universitātes Datorzinātnes nodaļa, Orhūsa, Dānija.
  • Rapaport, WJ, 2005a, “Datorzinātnes filozofija: ievadkurss”, Filozofijas mācīšana 28 (4): 319–341.
  • Rapaport, WJ, 2005b, “Īstenošana ir semantiska interpretācija: tālākas domas.” Eksperimentālā un teorētiskā mākslīgā intelekta žurnāls 17 (4): 385–417.
  • Rosen, Gideon, 2001. “Abstract Objects”, Stenforda filozofijas enciklopēdija (2001. gada rudens izdevums), Edvards N. Zalta (red.), URL = .
  • Shapiro, S., 1997, Matemātikas filozofija: struktūra un ontoloģija, Oksforda: Oxford University Press.
  • Siegs, Vilfrīds, 2008. gads, “Baznīca bez dogmas: aprēķināmības aksiomas”, Jaunas skaitļošanas paradigmas, Lowe, B., Sorbi, A. un Cooper, B. (red.), Springer-Verlag, 139. – 152.
  • Smits, BC, 1996. gads, “Datoru pareizības robežas”, Datorizācija un polemika, Kling, R. (red.), Morgan Kaufman, 810. – 825. Lpp.
  • Szabó, ZG, 2007, “Kompozicionalitāte”, Stenforda filozofijas enciklopēdija (2007. gada pavasara izdevums), Edvards N. Zalta (red.), URL = .
  • Tomasons, R., 2005. gads, “Loģika un mākslīgais intelekts”, Stenforda filozofijas enciklopēdija (2005. gada vasaras izdevums), Edvards N. Zalta (red.), URL = .
  • Tērners, Raimonds un Edens, Amnons H., 2007. gads, “Ceļā uz valodas ontoloģijas programmēšanu”, skaitļošana, informācija, izziņa - Nexus and the Liminal, Dodig-Crnkovic, Gordana and Stuart, Susan (red.), Cambridge, UK: Cambridge Scholars Press, 147. – 159.
  • Tērners, Raimonds, 2005. gads, “Specifikācijas pamati”, žurnāls Logic Computation 15: 623–662.
  • Tērners, Raimonds, 2007. gads, “Programmēšanas valodu izpratne”. Prāti un mašīnas 17 (2): 129–133
  • Timočko, T., 1979. gads, “Četru krāsu problēma un tās filozofiskā nozīme”, Filozofijas žurnāls 76 (2): 57–83.
  • Vaits, G., 2004. gads, “Datoru valodu filozofija”, Blekvela ceļvedis skaitļošanas un informācijas filozofijai, Floridi, Luciano (ed.), Malden: Blackwell, 318. – 326. Lpp.
  • Wing, JM, 2006, “Skaitļojošā domāšana”, ACM paziņojumi, 49 (3): 33–35.
  • Wittgenstein, L., 1953. Filozofiskie izmeklējumi. Izdevniecība Blackwell.
  • Wright, Crispin, 1983, Frege koncepcija numuriem kā objektiem, Aberdeen University Press.

Citi interneta resursi

  • Eseksas universitātes datorzinātņu filozofija
  • Starptautiskā skaitļošanas un filozofijas asociācija

Ieteicams: