A Számítástechnika Filozófiája

Tartalomjegyzék:

A Számítástechnika Filozófiája
A Számítástechnika Filozófiája

Videó: A Számítástechnika Filozófiája

Videó: A Számítástechnika Filozófiája
Videó: Виталий Милонов Против Оксимирона и Мата В Ютубе. Новое Шоу. 2023, Március
Anonim

Ez egy fájl a Stanford Enciklopédia Filozófia archívumában. Szerző és idéző információ | Barátok PDF előnézete | InPho keresés | A PhilPapers bibliográfia

A számítástechnika filozófiája

Elsőként publikálták 2008. december 12-én

Számítástechnika filozófia (PCS) a filozófiai kérdésekkel foglalkozik, amelyek a számítástechnika tudományos tudományágának természetét és gyakorlatát tükrözik. De mi az utóbbi? Ez természetesen nem csak a programozás. Végül is sok ember, aki programokat ír, nem számítógépes tudós. Például a fizikusok, könyvelők és vegyészek teszik. Valójában a számítástechnikát jobban leírnánk úgy, mint amely a programozáshoz kapcsolódó meta-tevékenységgel foglalkozik. Általánosabban és pontosabban azt a koncepciót és módszertant megtervezése, fejlesztése és vizsgálata foglalja el, amely megkönnyíti és segíti a számítási rendszerek meghatározását, fejlesztését, megvalósítását és elemzését. Ennek a tevékenységnek a példái lehetnek a programozás, a specifikáció és az építészeti leírás nyelveinek megtervezése és elemzése;fordítók, tolmácsok, tételek kiírói és típusú következtetési rendszerek felépítése és optimalizálása; logikai keretek feltalálása és beágyazott rendszerek tervezése és még sok más. A számítástechnika központi filozófiai kérdései körülveszik és alátámasztják ezeket a tevékenységeket, és sokan a rá vonatkozó logikai, ontológiai és episztemológiai kérdésekre összpontosítanak. Végül azonban a számítástechnika az, amit a számítógépes tudósok csinálnak, és egyetlen pontos megfogalmazott meghatározás nem lehet több, mint útmutatás a következő vitához. Valójában ez a reményA számítástechnika központi filozófiai kérdései körülveszik és alátámasztják ezeket a tevékenységeket, és sokan a rá vonatkozó logikai, ontológiai és episztemológiai kérdésekre összpontosítanak. Végül azonban a számítástechnika az, amit a számítógépes tudósok csinálnak, és egyetlen pontos megfogalmazott meghatározás nem lehet több, mint útmutatás a következő vitához. Valójában ez a reményA számítástechnika központi filozófiai kérdései körülveszik és alátámasztják ezeket a tevékenységeket, és sokan a rá vonatkozó logikai, ontológiai és episztemológiai kérdésekre összpontosítanak. Végül azonban a számítástechnika az, amit a számítógépes tudósok csinálnak, és egyetlen pontos megfogalmazott meghatározás nem lehet több, mint útmutatás a következő vitához. Valójában ez a remény A PCS végül hozzájárul a számítástechnika természetének mélyebb megértéséhez.

A számítógépes tudomány filozófiai tájának feltérképezése azonban nem könnyű feladat. Szerencsére a filozófia hagyományos ágai szellemi és strukturális útmutatást nyújthatnak. Például a matematika és a fizika filozófiájában központi kérdések vannak a kezelt tárgyak természetéről, arról, hogy mi képezi a tudást és annak megszerzésének eszközeit. A nyelv filozófiája kérdéseket vet fel a természetes nyelv szemantikai elméletének tartalmával és formájával kapcsolatban. Előtérbe helyezi a szemantikai vállalkozás ontológiai és episztemológiai feltételezéseit. Az ontológia megmutatja, hogy milyen típusú dolgok léteznek, hogyan lehet őket individualizálni, és milyen szerepet töltenek be a fogalmi sémák kialakításában. A logika filozófiája bemutatja és elemzi a különféle logikai rendszereket és azok szerepét a mindennapi és a speciális diskurzusban. A filozófia ezen és más ágainak analógiái és hasonlóságai hasznosnak bizonyulhatnak a számítástechnika központi filozófiai szempontjainak tisztázásában és tisztázásában. Ezen tudományágak jelenlegi hatása a A PCS jelenik meg, amint folytatjuk. Különösen a második, harmadik és negyedik szakasz tükrözi az ontológia, valamint a nyelv és a matematika filozófiájának hatásait.

  • 1. Néhány központi kérdés
  • 2. Létezés és identitás

    • 2.1 A programok kettős jellege
    • 2.2 Programok és algoritmusok
    • 2.3 Programok és műszaki adatok
  • 3. Szemantika

    • 3.1 Denotációs és operatív szemantika
    • 3.2 Végrehajtás és szemantikus értelmezés
    • 3.3 Szemantika, egyenlőség és identitás
  • 4. Bizonyítékok és programok

    • 4.1 Bizonyítékok a számítástechnikában
    • 4.2 Bizonyítékok a matematikában
    • 4.3 Fizikai és absztrakt helyesség
  • 5. Számíthatóság

    5.1 Az egyházi kutatás tézise

  • 6. Programozás és programozási nyelvek

    • 6.1 Absztrakció
    • 6.2 Típusok és ontológia
  • 7. Jogi és etikai kérdések

    • 7.1 Szerzői jogok, szabadalmak és személyazonosság
    • 7.2. Megfelelőség és felelősség
  • 8. Új fordulatok vagy új kérdések?
  • Bibliográfia
  • Egyéb internetes források
  • Kapcsolódó bejegyzések

1. Néhány központi kérdés

Először felsoroljuk, hogy mi milyen központi kérdés és kérdés. Ez lehetővé teszi az olvasó számára az ügyek gyors vázlatát, amelyek kiegészítik a következő részletesebb vitát. Bár sokukkal nem foglalkoztak közvetlenül az irodalomban, és némi magyarázatot igényelnek, ezek a kérdések szemléltetik azokat a kérdéseket, amelyekkel a PCS- t figyelembe vesszük.

  1. Milyen típusú programok? Elvont vagy konkrét? (Moor 1978; Colburn 2004)
  2. Mi a különbség a programok és az algoritmusok között? (Rapaport 2005a)
  3. Mi a specifikáció? És mit határoznak meg? (Smith 1985; Turner 2005)
  4. A specifikációk alapvetően különböznek a programoktól? (Smith 1985)
  5. Mi az a megvalósítás? (Rapaport 2005b)
  6. Mi különbözteti meg a hardvert a szoftvertől? Léteznek-e programok mind fizikai, mind szimbolikus formában? (Moor 1978; Colburn 2004)
  7. Milyen dolgok a digitális tárgyak? Szüksége van-e új ontológiai kategóriára a házak befogadására? (Allison et al. 2005)
  8. Mi a programozási nyelvek különféle szemantikai elméleteinek célja? (Fehér 2004; Turner 2007)
  9. Hogyan kapcsolódnak a programozási nyelvek filozófiájának kérdései a nyelv filozófiájának párhuzamos kérdéseihez? (Fehér 2004)
  10. A moduláris elv (pl. Dijkstra 1968) kapcsolódik-e a teljes absztrakció és a kompozitivitás fogalmi kérdéseihez?
  11. Milyen alapvető fogalmi különbségek vannak a következő programozási paradigmák között: strukturált, funkcionális, logikai és objektum-orientált programozás?
  12. Mi a típusok szerepe a számítástechnikában? (Barandregt 1992; Pierce 2002)
  13. Mi a különbség az operatív és a denotációs szemantika között? (Turner 2007)
  14. Mit jelent a program helyessége? Mi a helyesség-bizonyítékok epistemológiai státusza? Alapvetően különböznek a matematikai bizonyítékoktól? (DeMillo és munkatársai, 1979; Smith 1985)
  15. Mit hoznak létre a helyesség-igazolások? (Fetzer 1988; Fetzer 1999; Colburn 2004)
  16. Mi az absztrakció a számítástechnikában? Hogyan függ össze az absztrakció a matematikában? (Colburn & Shute 2007; Fine 2008; Hale & Wright 2001)
  17. Melyek a formális módszerek? Mi a formális a formális módszerekkel kapcsolatban? Mi a különbség a formális és az informális módszer között? (Bowen & Hinchey 2005; Bowen & Hinchey 1995)
  18. Milyen tudományág a számítógépes tudomány? Mi a matematikai modellezés és a kísérletezés szerepe? (Minsky 1970; Denning 1980; Denning 1981; Denning et al. 1989; Denning 1985; Denning 1980b; Hartmanis 1994; Hartmanis1993; Hartmanis 1981; Colburn 2004; Eden 2007)
  19. A programokat tudományos elméleteknek kell-e tekinteni? (Rapaport 2005a)
  20. Hogyan használják a matematikát a számítástechnikában? A matematikai modelleket leíró vagy normatív módon használják? (Fehér 2004; Turner 2007)
  21. Megfogja-e az Church-Turing dolgozat a hatékony vagy mechanikus módszer matematikai fogalmát a logika és a matematika területén? Megfogja-e azokat a számításokat, amelyeket egy ember elvégezhet? A hatálya kiterjed a fizikai gépekre? (Copeland 2004; Copeland 2007; Hodges 2006)
  22. A számítógépes gondolkodás fogalma ellenáll-e a filozófiai vizsgálatnak? (Wing 2006)
  23. Mi a megfelelő logika a program helyességének és befejezésének megfontolására? (Hoare 1969; Feferman 1992) Hogyan függ a logika az alapul szolgáló programozási nyelvtől?
  24. Mi az információ? (Floridi 2004; Floridi 2005) Ez az elgondolás felvilágosít-e néhány itt felsorolt kérdést?
  25. Miért van olyan sok programozási nyelv és programozási paradigma? (Krishnamurthi 2003)
  26. Van-e a programozási nyelvek (és paradigmák) a tudományos elméletek jellege? Mi okozza a programozási paradigmaváltást? (Kuhn 1970)
  27. Felveti-e a szoftverfejlesztés filozófiai kérdéseket? (Eden 2007)

A következőkben néhány kérdést felvázolunk.

2. Létezés és identitás

Hogyan lehet kategorizálni és elkülöníteni a számítástechnika entitásokat és fogalmakat? Milyen dolgok ezek és mi határozza meg identitásukat? Például egyesek egyértelműen konkrét fizikai objektumok (pl. Chipek, útválasztók, laptopok, grafikus kártyák), és mások nem (pl. Formális nyelvtanok, elvont gépek, tételek proverzei, logikai keretek, folyamatalgebrai, absztrakt adattípusok). Egyes központi fogalmak, például a programok és az adatok jellemzése azonban problematikusabb. Különösen a programok ontológiai státusát tekintik nem teljesen egyértelmûnek, és nem is kérdéses az identitásuk kritériuma.

2.1 A programok kettős jellege

Sok szerző (Moor 1978; Rapaport 2005b; Colburn 2004) megvitatja a programok úgynevezett kettős természetét. Ezzel szemben úgy tűnik, hogy egy programnak mind szöveges, mind mechanikai, vagy folyamatszerű megfigyelése van. Szövegként egy program szerkeszthető. De annak megnyilvánulása egy géppel olvasható lemezen úgy tűnik, hogy egészen más tulajdonságokkal rendelkezik. Különösen egy fizikai gépen hajtható végre. Tehát az azonosítók megkülönböztethetetlenségének elve szerint (3.3. Bekezdés) a két fél nem lehet azonos entitás. Természetesen bárki, akit ez a kettősség meggyőz, köteles valamit mondani a létezés e két látszólagos formája közötti kapcsolatról.

Az egyik közvetlen javaslat az, hogy a program egyik megnyilvánulása a másik megvalósítása, azaz a fizikai megnyilvánulás a szöveges megvalósítása. Még a számítástechnika keretein belül sem azonnal világos, hogy a végrehajtás szó csak egy fogalomra vonatkozik. Gyakran arra használják, hogy egy összeállítási folyamat eredményére utaljanak, amikor a magas szintű nyelven (forráskódban) lévő programot gépi nyelvre (objektumkód) alakítják át. De ugyanolyan gyakran arra a folyamatra utalnak, ahol a forráskódot valamilyen módon közvetlenül a hardverben valósítják meg (pl. Egy konkrét megvalósítás félvezetőkben). És feltehetően ez a releváns fogalom. De maga a megvalósítás fogalmának (3.2. Bekezdés) részletesebb filozófiai elemzése nélkül (Rapaport 2005b),nem világos, hogy ez miként halad előre a vitán; úgy tűnik, csak a létezés két látszólagos formája közötti kapcsolatot neveztük el. Hasonló módon mások a program-szöveg és a program-folyamat kapcsolatát hasonlónak írták le, mint a terv és annak megnyilvánulása, mint fizikai műveletek sorozata. De úgy tűnik, hogy ez nem elég analóg a program-folyamat párosítással: nem kísértjük meghívni a tervet és a fizikai folyamatot, mint ugyanazon dolog különféle megnyilvánulásait. Például, hajlamosak-e egy sétára való terveket és a tényleges sétát úgy gondolkodni, mint ugyanazon dolog különféle aspektusait?mások a program-szöveg és a programfolyamat kapcsolatát hasonlónak mutatják a terv és annak fizikai műveletek sorozatává válása közötti viszonyhoz. De úgy tűnik, hogy ez nem elég analóg a program-folyamat párosítással: nem kísértjük meghívni a tervet és a fizikai folyamatot, mint ugyanazon dolog különféle megnyilvánulásait. Például, hajlamosak-e egy sétára való terveket és a tényleges sétát úgy gondolkodni, mint ugyanazon dolog különféle aspektusait?mások a program-szöveg és a programfolyamat kapcsolatát hasonlónak mutatják a terv és annak fizikai műveletek sorozatává válása közötti viszonyhoz. De úgy tűnik, hogy ez nem elég analóg a program-folyamat párosítással: nem kísértjük meghívni a tervet és a fizikai folyamatot, mint ugyanazon dolog különféle megnyilvánulásait. Például, hajlamosak-e egy sétára való terveket és a tényleges sétát úgy gondolkodni, mint ugyanazon dolog különféle aspektusait?Kísértésnek gondolunk egy sétára való tervezésre és az aktuális sétára, mint ugyanazon dolog különféle aspektusaira?Kísértésnek gondolunk egy sétára való tervezésre és az aktuális sétára, mint ugyanazon dolog különféle aspektusaira?

Lehet, hogy az ügyeket legjobban úgy írják le, hogy a programok szöveges objektumokként mechanikai folyamatokat okoznak? Az ötlet úgy tűnik, hogy a szöveges tárgy valamilyen módon fizikailag kiváltja a mechanikai folyamatot. De úgy tűnik, hogy ehhez valamilyen meglehetősen óvatos elemzés szükséges az ilyen ok-okozati kapcsolat természetéről. Colburn (2004) tagadja, hogy a szimbolikus szövegnek okozati hatása van; ez a fizikai megnyilvánulása (a lemezen lévő), amely ilyen hatással rendelkezik. A szoftver egy konkrét absztrakció, amelynek leírási közege (a szöveg, absztrakció) és végrehajtási közege van (pl. Konkrét megvalósítás félvezetőkben).

E kérdések kissé eltérő nézőpontja a program identitásának kérdése. Mikor tekintik két programot azonosnak? Ilyen kérdések merülnek fel például a szoftverek jogi személyazonosságának meghatározására irányuló kísérletek során. Ha azonosítunk egy programot annak szöveges megnyilvánulásával, akkor a program azonossága érzékeny a megjelenésében bekövetkező változásokra (például a betűkészlet megváltoztatására). Nyilvánvaló, hogy nem csupán a szöveg nyújt nekünk a program identitásának filozófiai szempontból érdekes fogalmát. Inkább az identitás tájékozott kritériumának eléréséhez jobban figyelembe kell vennünk a szemantikát és a megvalósítást. Visszatérünk ehhez a témához a 3. és a 6. bekezdésben.

2.2 Programok és algoritmusok

Bármelyik képet is figyelembe vesszük a programokat, az algoritmus-program megkülönböztetéshez további fogalmi pontosításra van szükség. Az algoritmusokat gyakran matematikai objektumoknak tekintik. Ha ez igaz, akkor sok őket érintő filozófiai kérdés a matematika filozófiájához is tartozik. Az algoritmusok vitathatatlanul inkább központi szerepet játszanak a számítástechnikában, mint a matematikában, és több filozófiai figyelmet érdemelnek, mint nekik adtak. Noha az algoritmusok számottevõ matematikai tanulmányát végezték el az elméleti számítástechnikában és a matematikai logikában (pl. Moschovakis 1997; Blass és Gurevich 2003), nem történt sok filozófiai vita, amely az algoritmusok természetére és a különbségekre fókuszált. algoritmusok és programok.

Vajon az algoritmusok elvont objektumok, Rosen (2001) által kínált értelemben, míg a programok konkrétak? Pontosabban, az algoritmusok egy absztrakt matematikai párja egy szöveges objektumnak, amely a program? Ez a kép természetesen az ontológiai platonizmus egy formájához vezet (Shapiro 1997), ahol az algoritmusok ontológiai prioritást élveznek, és a programok biztosítják a nyelvi eszközöket az elérésükhöz. Ebből a nézetből algoritmusokat lehet venni a programozási nyelvek szemantikájának (3. §) megadására. Természetesen ez a kép örököl minden ilyen előnyt és problémát egy ilyen platonikus szemlélettel (Shapiro 1997).

Egy kevésbé platonikus nézet szerint az algoritmusok tartalmazzák a programban kifejezett ötleteket. A törvény szerint ezt vetették annak okára, hogy az algoritmusok, a programoktól eltérően, nem szerzői jogi védelem alatt állnak (7.1. Bekezdés). Az ötlet kifejezés természetesen további filozófiai elemzést igényel. Valójában azt lehet érvelni, hogy az algoritmus puszta fogalmát sokkal kevésbé kell tisztázni, mint az ötletek standard beszámolóját és az ahhoz kapcsolódó absztrakciós fogalmakat (Rosen 2001).

Végül, szinte folklór nézet, hogy a Turing-gépek hivatalos elemzést nyújtanak az algoritmus fogalmunkról. De illeszkedik-e ez a modern számítógépes tudományban alkalmazott kortárs elképzeléshez a kifinomult képviselet és irányítás fogalmához? Moschovakis (1997) olyan elemzést kínál, amely valamivel jobb.

2.3 Programok és műszaki adatok

Egy másik népszerű különbségtétel, amelynek kritikus elemzés tárgyát kell képeznie, a programok és a specifikációk vonatkozásában fordul elő. Mik a specifikációk és hogyan különböznek a programoktól? Noha a filozófiai irodalomban ez a kérdés kevés közvetlen vitát tartalmaz (de lásd Smith 1985), a specifikációk jellege alapvető kérdés a számítógépes tudomány fogalmi alapjai számára.

Az egyik vélemény, amelyet a formális specifikációt tankönyvekben gyakran találnak, hogy a programok részletes gépi utasításokat tartalmaznak, míg a (funkcionális) specifikációk csak a bemenetek és a kimenetek kapcsolatát írják le. Ennek kicsomagolásának egyik nyilvánvaló módja a kötelező / leíró megkülönböztetés szempontjából: a programok kötelezőek és leírják, hogyan lehet elérni a specifikációban leírt célt. Nyilvánvaló, hogy a kötelező programozási paradigmában ez lényeges különbséget mutat. De ez nem mindenki számára megfelelő. Például a logikai, a funkcionális és az objektum-orientált programozási nyelveket ez nem egyértelműen szabályozza: névértéken véve az ilyen nyelvekre kódolt programok meghatározások sorozataiból állnak, nem pedig „utasításokból”. Továbbá,a nem funkcionális specifikációk nem fogalmazhatók meg a bemenetek és a kimenetek kapcsolatának állításaival, mivel követelményeket támasztanak a tervezéssel és az utasítások fajtájával kapcsolatban, amelyek bármely programban szerepelhetnek.

Egy másik megközelítés ragaszkodik ahhoz, hogy a specifikációk és a programok közötti különbséget a végrehajtás fogalmának szempontjából kell meghatározni, azaz lehet-e összeállítani és végrehajtani? De mit jelent ez? Ez egy létező fordító értelmében értendő? Ez az értelmezés meglehetősen sekély, mivel nem a megkülönböztetés fogalmi kritériumát, hanem feltételes kritériumát kínálja. Például, a programozási nyelvek első öt generációja során (a 20. század második fele) az egyik generáció rekurzív, moduláris, funkcionális és objektum-orientált specifikációi a következő, azaz a mai specifikációs nyelvek programjaiivá váltak. gyakran a holnap programozási nyelvévé válnak.

Egy másik nézet azt sugallja, hogy a programozási nyelvek azok a nyelvek, amelyek elviekben megvalósulnak, míg a specifikációs nyelvek azok, amelyek nem. És feltehetően annak oka, hogy nem tudják, az, hogy a specifikációs nyelvek lehetővé teszik az olyan fogalmak kifejezését, amelyek nem a Turing kiszámíthatósága. Ez a megkülönböztetés összhangban áll számos létező specifikációs nyelvvel, amelyek Zermelo-Fraenkel halmazelméletre és magasabb rendű logikára épülnek. Furcsanak tűnik azonban, hogy a specifikációs nyelvet kell jellemeznie, hogy nem-kiszámítható tulajdonságokat és összefüggéseket fejezhet ki. Vajon valóban szükség van-e ezekre a nem kiszámítható követelményekre a gyakorlatban (Jones és Hayes 1990; Fuchs 1994)?

Ezeknek a nézeteknek a sokszínűsége azt sugallja, hogy a specifikus és a programok közötti bináris szakadék a PCS egyik kérdése, amelyre nagyobb figyelmet érdemel, nemcsak a fogalmi pontosítás, hanem azért is, mert ennek kihatása lehet a jövőbeni programozási és specifikációs nyelvek kialakítására..

3. Szemantika

A programozási nyelv nyelvtana csak azt határozza meg, hogy mi szintaktikailag legitim; nem tájékoztat minket konstrukcióinak szándékolt jelentéséről. Így a programozási nyelv nyelvtana önmagában nem határozza meg azt a dolgot, amelyet az emberek programoznak. Ehelyett a szemantikai számmal (formális vagy informális) dúsított nyelvtant kell alkalmazni erre. A szemantika célja, hogy tájékoztassa a programozót, a fordító írót és az elméletet dolgozót a nyelv tulajdonságainak feltárásáról. Sőt, gyakran azt állítják, hogy a programozó és a fordító író különféle követelményeinek teljesítéséhez különböző szemantikai számlákra van szükség, az absztrakció különböző szintjein. Az elméleti szakember feladata viszonyuk feltárása.

Ez a szokásos kép, amely a szemantikai irodalomban megjelenik. De ennek nagy részét fogalmi pontosítás szükséges. Ebben a szakaszban néhány, a tevékenységből felmerülő kérdést vizsgálunk meg.

3.1 Denotációs és operatív szemantika

A programozási nyelvek szemantikájának egyik legfontosabb különbsége az operatív és a denotációs szemantika megkülönböztetésén áll. Az operatív szemantika (Landin 1964; Plotkin 1981) a programozási nyelv értelmezését nyújtja egy elvont gép szempontjából. Pontosabban, ez a kifejezések programozási nyelven történő fordítása az absztrakt gép utasításaiba vagy programjaiba. Például, az 1. program kicsomagolódna egy absztrakt gépi műveletek sorozatába, például „a ← 0” és push. Az operatív szemantika algoritmikus szemantikaként is elképzelhető, különösen akkor, ha az alapul szolgáló gép célja az algoritmus fogalmának jellemzése (pl. Moschovakis 1997).

Ezzel szemben a denotációs szemantika (Milne és Strachey 1977) értelmezést nyújt matematikai struktúrákba, például halmazokba vagy kategóriákba. Például a klasszikus megközelítésben a készletek - teljes rácsok formájában és azokon folyamatos függvények formájában - biztosítják a matematikai keretet.

De van-e közöttük jelentős fogalmi különbség? A denotációs szemantika, amely kifejezetten matematikai struktúrákon, például halmazokon alapul, matematikai, míg az operatív szemantika nem? Turner (2007) nem érvel: mindenki matematikai értelmezést nyújt.

Vagy az operatív szemantika inkább gépi jellegű abban az értelemben, hogy absztrakt gépet alkot, miközben a denotációs szemantika, amelyet set-elméleti értelemben adunk meg, nem tartalmaz utalást egy elvont gépen? Az ilyen megkülönböztetések azonban nem bizonyultak fogalmi szempontból jelentősnek, mivel a denotációs szemantikai számlák mindegyike struktúrának tekinthető, amely elvont gépet képez az államokkal és az azokon működő műveletekkel. Az operatív számlák sem állnak közelebb a végrehajtáshoz: a denotációs megközelítések (Milne és Strachey 1977) szintén nagyon rugalmasak és képesek a végrehajtás különböző szintjeinek részleteit tükrözni.

További lehetséges megkülönböztetés a szemantika kompozíciós (vagy egyéb) jellegére vonatkozik. Lazán szólva, a szemantikát kompozíciósnak kell tekinteni (Szabó 2007), ha egy komplex kifejezés szemantikai értéke részeinek szemantikai értékeinek függvénye. A kompozitivitást a szemantika kritikus kritériumának tekintik, mivel úgy tűnik, hogy meg kell magyarázni nyelvi megértésünk termelékenységét: azt mondják, hogy elmagyarázza, hogyan értjük és építjük össze a komplex programokat. De nyújt-e éket a működési és a denotációs szemantika szétválasztására? Sajnos úgy tűnik, hogy nem ezt teszi: bár a denotációs definíciókat kompozitívnak kell kialakítani, minden bizonnyal nem az a helyzet, hogy az összes operatív szemantika nem kompozitív.

Végezetül, a szemantika egyes verziói különböznek a rekurzív modell létezését illetően, azaz az értelmezésről a Turing-gépekben vagy a Gandy-gépekben (5.1. Bekezdés). De ez még nem is pontosan felel meg a hagyományos működési / denotációs megosztottságnak. Néhány denotációs definíciónak van egy rekurzív modellje, másoknak nem.

Nagyon nehéz ezt a megkülönböztetést lecsillapítani. Ezzel szemben nem látszik éles fogalmi különbség az operatív és a denotációs szemantika között.

3.2 Végrehajtás és szemantikus értelmezés

Mi a különbség a szemantikai értelmezés és a megvalósítás között? Például, mi a fogalmi különbség egy program gépi kódba történő összeállítása és a denotációs szemantika megadása között? Rapaport (2005b) szerint a megvalósítást leginkább szemantikai értelmezésnek tekintik, ahol az utóbbit két terület (szintaktikai és szemantikai) közötti térképezés jellemzi. És mindkettőt valamilyen leírás szabályai határozzák meg. Például a lefordított kód (a szemantikáját szabályozó szabályokkal kombinálva) a forráskód szemantikai számlája.

A „megvalósítás” kifejezés általános értelmezésében a szemantikai tartományt egy fizikai gép biztosítja. Más szavakkal, maga a fizikai gép (a „megvalósítás”) határozza meg a program jelentését. Például a programozási nyelvekben ez egyenértékű azzal az állítással, hogy a C ++ programozási nyelv szemantikáját Bjarne számítógépe határozza meg, amely a C ++ fordítóját futtatja. De ez a magyarázat nyilvánvalóan nem megfelelő: Ha feltételezzük, hogy Bjarne gépe meghatározza a C ++ programok jelentését, akkor nincs fogalom a működési vagy téves értelmezésről: bármi is, amit Bjarne számítógépe csinál, az ipso facto a program jelentése. De az elektromos vihar biztosan a gép hibáját okozhatja. De mit érthetünk azzal, hogy rosszul megyünk? Feltehetően az, hogy a (hibásan működő) gép nem valósítja meg a kívánt jelentést. De,viszont úgy tűnik, hogy csak ezt a kifejezést értjük a jelentés valamilyen géptől független jellemzése alapján. És bizonyos szinten ezt valamilyen független szemantikai leírás útján kell megadni. Ez arra utal, hogy a puszta megvalósítás fogalma nem nyújt megfelelő szemantikai fogalmat. (Hasonlítsa össze: Kripke 1982; Wittgenstein 1953).

3.3 Szemantika, egyenlőség és identitás

A program egyenlőségéről (2.1. Bekezdés) folytatott vitánkat azzal a ígérettel fejeztük be, hogy szemantikát hozunk a képbe. A programozási nyelv minden szemantikai beszámolója meghatározza a programok egyenlőségének fogalmát, nevezetesen, hogy két programot azonosnak tekintünk, ha ugyanaz a szemantikai érték, azaz:

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

ahol || P || a P program szemantikai értéke. Tehát ebben az értelemben minden szemantikai beszámoló meghatározza az egyenlőség kritériumát. Például a denotációs szemantika egyik változata elválasztaná az összes számítási lépést, és egyenlővé tenné azokat a programokat, amelyek bizonyos értelemben ugyanazt a matematikai függvényt számolják. Például a következő két programot tekintjük egyenlőnek ebben a kritériumban:

függvény Faktorial (n: egész): egész szám

kezdődik

ha n = 0, akkor Faktorial: = 1;

egyéb

tényező: = (n) * tényező (n -1);

végén;

1. program

funkció Faktoriális (n: egész szám): integer

var

x, y: integer;

kezdje

y: = 1;

x: = 0;

míg x <n kezdődik

x: = x +1;

y: = y * x;

végén

Tényező: = y;

végén;

2. program

Másrészt egy operatívabb nézet, amely a számítás lépéseire utal, nem tenné úgy, hogy az 1. és a 2. program egyenlő lenne. Valójában, a 3.1 bekezdés fényében olyan szemantikai beszámolókat tudunk kidolgozni, amelyek a végrehajtás bármely szintjét tükrözik. Különböző szemantikai beszámolók határozzák meg az egyenlőség különböző fogalmait, amelyek különböző fogalmi és gyakorlati célokat szolgálhatnak. De akkor melyiket kell figyelembe venni a nyelv meghatározásához? Szerencsére van néhány igény, amelyet alkalmazni lehet; csökkenthetjük a lehetőségeket: néhány szemantikai beszámoló logikailag kielégítően azonosítja a személyazonosságot, mások nem.

Az azonosítók megkülönböztethetetlensége a szokásos predikatív logikába épített elv. Azt állítja, hogy ha két objektum azonos, akkor minden tulajdonság megoszlik. Az ellenkező elv, az észlelhetetlen személyek identitásakijelenti, hogy ha minden F tulajdonságnál az x objektumnak F van, akkor és csak akkor, ha az y objektumnak F van, akkor x azonos az y-vel. A meg nem jelölhetők azonossága azt vonja maga után, hogy ha x és y különbözik egymástól, akkor van legalább egy tulajdonság, amely xnek van, és y nem. Időnként mindkét alapelv összekapcsolását Leibniz törvényének nevezik (Forrest 2006). Leibniz törvényét gyakran az alapvető fontosságúnak tekintik az egyenlőség fogalma szempontjából. Ezeket a törvényeket általában logikai elméletekben fogalmazzák meg, mint például a második rendű logika. De leginkább az érdekel, hogy képesek-e megkülönböztetni a különféle programozási nyelvi szemantikákat. Valójában, Leibniz törvénye a modern szemantikai elmélet egyik központi fogalma. Az identitás kritériumát a megfigyelési egyenértékűség fogalmazza meg.

Két M és N programot definiálunk megfigyelési szempontból egyenértékűnekcsak akkor, ha minden olyan kontextusban C […], ahol C [M] egy érvényes program, az a helyzet, hogy a C [N] ugyanolyan szemantikai értékkel rendelkező érvényes program. Például azt mondjuk, hogy az Oracle és a DB2 (a relációs adatbázisokkal manipuláló programok) megfigyelési szempontból egyenértékűek a relációs adatbázisokon végzett műveletek bizonyos szemantikai beszámolói szerint, csak akkor, ha végrehajtják őket „azonos” kontextusban (operációs rendszer, gépi architektúra, bemenet stb.).) az „azonos” adatbázist hozza létre. Természetesen a megfigyelés szerint ekvivalens kifejezést egy csipet sóval kell venni. Nyilvánvalóan nem figyeljük meg a program viselkedését minden összefüggésben. A megfigyelési ekvivalencia azonban tükrözi azt az alapvető fogalmi igényt, amely az azonosítók megkülönböztethetetlenségének elveiből és a meg nem jelölhetők azonosságából származik.

Ha a szemantikában az összes megfigyelhetően különálló programnak külön szemantikai értékei vannak, akkor a szemantika egészségesnek mondja. Következésképpen a hangos szemantika megfelel a következő elvnek:

|| P || = || Q || azt jelenti, hogy minden összefüggésben C, || C [P] || = || C [Q] ||

Világosnak kell lennie, hogy az identitás hangos szemantika által kiváltott fogalma kielégíti az azonosítók megkülönböztethetetlenségét.

A szemantika akkor áll teljesnek, ha bármelyik két szemantikai értékkel rendelkezõ program észlelhetõen különbözik egymástól. Pontosabban: a teljes szemantika kielégíti a következőket:

Minden összefüggésben C, || C [P] || = || C [Q] || azt jelenti || P || = || Q ||

Ismét nyilvánvalónak kell lennie, hogy a teljes szemantika eleget tesz a megkülönböztethetetlen személyek azonosságának elvének.

Végül azt állítják, hogy a szemantika teljesen elvont, ha helyes és teljes. Következésképpen egy teljesen elvont szemantika kielégíti Leibniz törvényét.

Ez a logikus háttér filozófiai igazolást nyújt a teljesen elvont szemantika fejlődéséhez. Ezáltal módot kínál a szemantikai beszámolók kiválasztására, amelyek filozófiai szempontból elfogadható fogalmak az egyenlőségről. Ez természetesen nem határoz meg egyetlen fogalmat. Csak olyan eszközt biztosít, amely elutasítja azokat, amelyek nem tudnak koncepcionálisan elfogadhatót nyújtani. Sok úgynevezett denotációs szemantika nem teljesen absztrakt, míg sok operatív. Valójában a szemantika közelmúltbeli történetének egyik központi témája a teljesen elvont meghatározások keresése volt, amelyek a szemantikai meghatározási technikák osztályába tartoznak, és amelyek a denotációs szemantika előállításához szükségesek.

A szemantika normatív vagy meghatározó szerepet játszik a számítástechnikában. Szemantikus meghatározások nélkül a nyelvek és struktúrák nem rendelkeznek olyan tartalommal, amely a szintaktikai leírásaikkal szolgál. Ez utóbbi aligha elegendő gyakorlati vagy filozófiai célokra. Miközben megkezdtük a központi aggályok elemzését, csak megkarcoltuk a felületet.

4. Bizonyítékok és programok

A specifikációk (a 2.3. Szakasz) a helyesség bizonyos fogalmát idézik elő. E fogalom absztrakt értelmezése szerint a program helyesnek tekinthető egy (funkcionális) specifikációhoz képest, ha a bemenet és a kimenet között kialakított kapcsolat kielégíti a specifikációban meghatározott kapcsolatot. Pontosabban, ha p egy program, akkor megfelel az R specifikációnak, amelyet relációnak tekintünk az I bemeneti és az O kimeneti típus felett, ha az alábbiak állnak fenn:

Az I. típusú összes bemenetnél az (i, p (i)) pár megfelel az R relációnak

ahol p (i) a p programnak az i bemeneten való futtatásának eredménye. Az R kifejezést valamilyen specifikációs nyelvben és p néhány programozási nyelvben fejezzük ki. Az előbbi általában a (gépelt) predikátum logika néhány változata, és a helyesség igazolását (azaz hogy az (1) állítás fennáll) a logika bizonyítási rendszerében hajtják végre. Például gyakran alkalmazzák a Hoare logikát (Hoare 1969), amelyben a helyesség igazolásai hármasok közötti következtetések formájában vannak, írásbeli

B {P} A

ahol P egy program, B és A pedig állítások (a program „előtti” és „utáni” állapotai), a predikatív logika egyes változataiban vannak kifejezve olyan jellemzőkkel, amelyek megkönnyítik a programváltozóhoz csatolt értékek kifejezését.

Az egyik filozófiai vita, amely a helyesség kérdését veszi körül az ilyen bizonyítékok természetén; a másik kihívást jelent, hogy az ilyen bizonyítékok milyen eredményeket nyújtanak.

4.1 Bizonyítékok a számítástechnikában

A program helyességének igazolásai valódi matematikai bizonyítékok, vagyis az ilyen igazolások megegyeznek-e a szokásos matematikai bizonyítékokkal? DeMillo et al. (1979) azt állítják, hogy mivel a helyesség-igazolások hosszúak és matematikailag sekélyek, ellentétben vannak a matematika bizonyítékaival, amelyek fogalmi szempontból érdekesek, vonzóak és vonzzák más matematikusok figyelmét, akik tanulmányozni akarnak rájuk. Például, a Hoare logikájának annak igazolása, hogy a 2. program kiszámítja a tényező függvényt, tartalmazna részleteket az állam mögöttes fogalmáról, induktív érvelést alkalmaz, és magában foglalja a hurok invarianciájának indokolását.

De az ilyen bizonyítékok sokkal hosszabbak lennének, mint maga a program. Ezenkívül az a szint, amelyen az érvelés a Hoare logikában van kódolva, sok olyan részlet kifejezését és ábrázolását igényelné, amelyeket általában implicitnek hagynak. Unalmas lenne, és a legtöbb program esetében fogalmilag triviális.

Ez az érv párhuzamos a matematikai filozófia megragadhatósági érveivel (pl. Tymoczko 1979; Burge 1988). A szíve az episztemológiai aggodalmak: a túl hosszú, nehézkes és érdektelen bizonyítékok nem hordozhatják azt a bizonyosságot, amelyet a szokásos matematikai bizonyítékoknak tulajdonítanak. A helyesség-igazolásokból nyert tudás természetét állítólag különbözik azoktól az ismeretektől, amelyeket a matematikai bizonyítékoktól lehet megszerezni [1].

Meg kell különböztetni ezt a lényegében a bizonyítások szociológiai perspektíváját attól is, amely szerint a bizonyítékok helytállóak vagy helytelenek az ilyen episztemológiai ítéletektől független módon. Meg lehet tartani azt a realisztikusabb álláspontot, amely szerint az adott bizonyíték helyes vagy helytelen vagy anélkül, hogy feladná azt a követelményt, hogy a bizonyítékok befogadásához és érvényesítéséhez megfoghatónak kell lenni.

Megpróbálhat szerezni valamilyen alapot azáltal, hogy támogatja, hogy a helyesség-igazolásokat inkább számítógép, nem pedig ember ellenőrizze. De természetesen a bizonyítás-ellenőrzőnek is ellenőrzésre szorul. Arkoudas és Bringsjord (2007) azt állítják, hogy ha csak egy helyesség-igazolást kell ellenőrizni, nevezetesen maga a bizonyítás-ellenőrzőt, akkor a hibák esélye jelentősen csökken.

4.2 Bizonyítékok a matematikában

A matematikai bizonyítékok, például Gödel hiányossági tételének bizonyítása is hosszú és bonyolult. Ami azonban a matematikai közösség számára átlátható, érdekes és megragadható („megfigyelhető”), az a modularitási technikák (pl. Lemámák) és az absztrakció használata a matematikai alkotásban. Az új koncepciók bevezetése lehetővé teszi a bizonyítás fokozatos felépítését, ezáltal a bizonyítások jobban megragadhatóvá válnak. A matematika új matematikai fogalmak feltalálásával halad előre, amelyek lehetővé teszik a magasabb szintű és általánosabb bizonyítékok felépítését, amelyek nélkül sokkal összetettebbek, sőt lehetetlenné válnának. Például az exponenciális jelölés lehetővé teszi számítások elvégzését a szorzás összetettségén túl, és az eredmények vitatására. A másik végén:a kategóriaelmélet feltalálása megkönnyítette az algebrai struktúrákra vonatkozó nagyon általános eredmények megállapítását és igazolását, amelyek automatikusan alkalmazandók ezek teljes sorozatára. A matematika nem csak a bizonyításról szól; magában foglalja az absztrakciót, valamint új fogalmak és jelölések létrehozását is. Ezzel szemben a formális korrektségi igazolások általában nem jelentik új fogalmak létrehozását és nem vesznek részt a matematikai absztrakció folyamatában. Ezzel szemben a számítástechnika absztrakciója (6.1. Szakasz) a programtervezéshez szükséges fogalmakra koncentrál. De hogyan kapcsolódik ez az absztrakció két fogalma? Később erről kicsit többet fogunk mondani.magában foglalja az absztrakciót, valamint új fogalmak és jelölések létrehozását is. Ezzel szemben a formális korrektségi igazolások általában nem jelentik új fogalmak létrehozását és nem vesznek részt a matematikai absztrakció folyamatában. Ezzel szemben a számítástechnika absztrakciója (6.1. Szakasz) a programtervezéshez szükséges fogalmakra koncentrál. De hogyan kapcsolódik ez az absztrakció két fogalma? Később erről kicsit többet fogunk mondani.magában foglalja az absztrakciót, valamint új fogalmak és jelölések létrehozását is. Ezzel szemben a formális korrektségi igazolások általában nem jelentik új fogalmak létrehozását és nem vesznek részt a matematikai absztrakció folyamatában. Ezzel szemben a számítástechnika absztrakciója (6.1. Szakasz) a programtervezéshez szükséges fogalmakra koncentrál. De hogyan kapcsolódik ez az absztrakció két fogalma? Később erről kicsit többet fogunk mondani.

4.3 Fizikai és absztrakt helyesség

Még ha el is hagyjuk ezeket az episztemológiai aggodalmakat, a helyesség második és látszólag pusztító kritikája megkérdőjelezi, hogy mi általuk ténylegesen megállapított. Úgy tűnik, hogy a helyesség igazolása csak a program szöveges ábrázolásáig nyújt helytállóságot. Semmilyen formális munka nem tud átjutni az absztrakt / fizikai akadálytól: soha nem garantálhatjuk, hogy a program adott végrehajtása egy fizikai gépen valóban a várt módon halad (Fetzer 1988; Fetzer 1999; Colburn 2004).

De mit jelent az, hogy a p program helyes? Tegyük fel, hogy megvan a program specifikációja, és lehet formális vagy informális. Tegyük fel, hogy tesztelési sorozatot hajtunk végre annak ellenőrzésére, hogy a program megfelel-e a specifikációjának. Ha sikerül, empirikus bizonyítékokkal rendelkezünk arról, hogy a szöveges program fizikai megfelelője valóban helyes, mivel a specifikáció szerint működik. Ebben a nézetben a fizikai párját tesztelték; nem a szöveges program.

Ez az elemzés arra utal, hogy a programok helyességének fogalma kettős. A programok kettős természetével összhangban azt mondhatjuk, hogy a szöveges program matematikai korrektségnek van kitéve, míg fizikai megfelelője empirikus ellenőrzésnek van alávetve.

5. Számíthatóság

A kiszámíthatóság az egyik legrégebbi téma, amelyet PCS-nek lehet megnevezni. Ennek ellenére számos SEP bejegyzés tárgya (pl. Barker-Plummer 2004), és ezért csak néhány témát említünk és azok kapcsolatát a jelen bejegyzés többi részével.

5.1 Az egyházi kutatás tézise

Az egyik központi kérdés az Egyházi Turing Tézis. És itt két vita van, egy történelmi és egy empirikus. A dolgozat következő két lehetséges értelmezésére összpontosítanak:

  1. A talajmegmunkáló gépek bármit megtehetnek, amit „hüvelykujjszabálynak” vagy „tisztán mechanikusnak” lehetne nevezni.
  2. Bármit is lehet kiszámítani egy géppel (véges adatokkal dolgozva a véges utasításprogram szerint), a Turing géppel kiszámítható.

Az I. értelmezés célja a hatékony vagy mechanikus módszer fogalmának megragadása a logikában és a matematikában. Arra szolgál, hogy tükrözze az algoritmus informális fogalmát, amelyet a matematika magában foglal és a Hilbert programja előtérbe helyez. A II. Értelmezés célja a fizikai gépek irányítása. Valójában (Gandy 1980) a II. Gandy négy alapelvet javasol, amelyek célja a fizikai gépen végzett számítás jellemzése. Megmutatja, hogy az ilyen gépek pontosan megegyeznek Turing jellemzésével (Gandy-tétel). A különféle szemantikai paradigmák megbeszélése kapcsán egyértelmű, hogy a denotációs szemantika alapjául szolgáló gépek (3.1. Bekezdés) sokasága nem minősül Gandy gépeknek. Leggyakrabban kiterjesztett magasabb rendű függvényterekkel működnek,és ezek nem tekinthetők véges adatoknak, és nem felelnek meg Gandy feltételeinek.

Néhányan azt állítják (Copeland 2004; Copeland 2008), hogy a Church és Turing által javasolt tézis csak az I. értelmezésre vonatkozik, és általában nem határoz meg korlátozást a gépekre. Hodges (2007) nem ért egyet. Azt állítja, hogy Church és Turing nem tett különbséget a két értelmezés között. Ez a történelmi vita.

A fizikai vita a tényleges gépek képességeire vonatkozik (II. Értelmezés). Sokan nyilvánvalónak tartják, hogy az egyházi-turing-értekezés jellemzi és előírja a tényleges fizikai számítást. Például, úgy tűnik, hogy ez a közvetett számítógépes tudomány implicit feltételezése. Minden bizonnyal az a helyzet, hogy minden létező végrehajtott programozási nyelven írt program Turing kiszámítható, és fordítva, hogy az összes általános célú programozási nyelv Turing teljes, azaz az összes vezérlő konstrukciót tartalmazzák, amelyek az egyetemes Turing-gép szimulálásához szükségesek.

Copeland (2007) szerint Gandy egy diszkrét determinisztikus mechanikus eszköz jellemzése túl szűk, következésképpen vannak olyan lehetséges fizikai gépek példái, amelyek képességei meghaladják a Turing kiszámítható funkcióinak osztályát. Ezek közül soknak végtelen gyorsulásra van szükség, amelynél végtelen számú számítás elvégezhető fizikailag egy véges idő alatt. Az ilyen gépek lehetséges példájaként a kvantumszámítást említik, de ezt vitatják (Hodges 2007; Hagar 2007).

Hodges foglalkozik továbbá a szokásos matematikai érvelés fizikában való alkalmazhatóságával azokban az esetekben is, amikor végtelen pontossággal jár. Ez arra utal, hogy ez a vita nem egyszerű empirikus. Valójában vannak olyanok, akik megkérdőjelezik-e fizikailag végtelen számú feladat elvégzését véges időn belül. Dummett (2006) megkérdőjelezi, hogy a fizikai birodalomban elvégzendő végtelen feladat fogalma nemcsak fizikai lehetetlenség, hanem koncepcionális is. Tehát a vita nem csupán empirikus, hanem a matematikai modellek és a fizikai valóság közötti kapcsolat megértésének a középpontjában is.

6. Programozás és programozási nyelvek

A programok és a programozási nyelvek tervezése a számítógépes tudomány egyik tradicionális tevékenysége. Számos fogalmi kérdés veszi körül őket (1. bek.), Amelyek közül sokan nem kaptak filozófiai figyelmet. Itt röviden áttekintjük e problémák kettőjét.

6.1 Absztrakció

Az absztrakció a számítástechnika egyik fogalmi sarokköve. A programtervezés és -építés szerves része, és a programozási nyelvek tervezésének alapvető módszertanát képezi. Valójában új programozási paradigmák létrehozását mozgatja. Alapjául olyan fogalmak találhatók, mint az eljárási és funkcionális absztrakció, a polimorfizmus, az adatok absztrakciója, az objektumok és osztályok, a tervezési minták, az építészeti stílusok, az altípusok és az öröklés. A szoftverfejlesztés számos ágazata (pl. Szoftvermodellezés, programmegértés, programmegjelenítés, fordított és újratervezés) elsősorban a programok kivonására szolgáló megfelelő mechanizmusok vizsgálatával foglalkozik. És a szoftverfejlesztés haladásának nagy részét az új absztrakciós mechanizmusok bevezetése révén sikerült elérni.

De mi az absztrakció jellege a számítástechnikában? Mi az alapja a filozófiai magyarázatnak? Sajnos általában az absztrakció ötlete filozófiailag problematikus. A filozófiai pszichológiából származó hagyományos nézet szerint az absztrakció olyan mentális folyamat, amelyben új fogalmak alakulnak ki több tárgy vagy gondolat megfontolása és az őket megkülönböztető jellemzők kihagyása révén. (Rosen 2001). Ennek a megközelítésnek azonban kevés, ha van ilyen kortárs filozófiai támogatója.

Az absztrakció elemzésének logikusabb megközelítése, amelynek van némi erős támogatása (Wright 1983; Hale 1987). Nem világos, hogy ezek a matematikai absztrakcióra kifejlesztett ötletek alkalmazhatók-e a számítástechnikában. Nyilvánvaló, hogy a számítástechnika absztrakciójának néhány fogalmát akár a matematika ihlette, akár az absztrakciók segítségével vizsgálták. De mi a fogalmi kapcsolat az absztrakció között ezekben a tudományágakban? Alapvetően különböznek egymástól? Sajnos, bár van jelentős szakirodalom a matematikai absztrakció filozófiai alapjairól (lásd Wright 1983; Hale 1987; Fine 2002), az absztrakció fogalmi vizsgálata a számítógéptudományban még gyerekcipőben jár. Colburn (2007) szerint a matematikai absztrakció és a számítástechnika absztrakciója közötti különbség abban rejlik, hogy a matematikában az absztrakció az információ elhanyagolása, míg a számítástechnika az információ elrejtése. Vagyis a matematika absztrakciói figyelmen kívül hagyják azt, amit irrelevánsnak tekintnek (pl. Hasonló háromszögek színe). Ezzel szemben a számítástechnikában az alsóbb szintek (pl. A virtuális) egyikének sem szabad figyelmen kívül hagynia az absztrakció egy szintjén figyelmen kívül hagyott részleteket (pl. A Java programozóknak nem kell aggódniuk az adott változóhoz társított pontos memóriahely miatt) gép kezeli az összes memória allokációt).az absztrakciók a matematikában figyelmen kívül hagyják azt, amit irrelevánsnak tekintnek (pl. hasonló háromszögek színe). Ezzel szemben a számítástechnikában az alsóbb szintek (pl. A virtuális) egyikének sem szabad figyelmen kívül hagynia az absztrakció egy szintjén figyelmen kívül hagyott részleteket (pl. A Java programozóknak nem kell aggódniuk az adott változóhoz társított pontos memóriahely miatt) gép kezeli az összes memória allokációt).az absztrakciók a matematikában figyelmen kívül hagyják azt, amit irrelevánsnak tekintnek (pl. hasonló háromszögek színe). Ezzel szemben a számítástechnikában az alsóbb szintek (pl. A virtuális) egyikének sem szabad figyelmen kívül hagynia az absztrakció egy szintjén figyelmen kívül hagyott részleteket (pl. A Java programozóknak nem kell aggódniuk az adott változóhoz társított pontos memóriahely miatt) gép kezeli az összes memória allokációt).

De vajon ez az absztrakció fogalmának túl egyszerűsítésén alapul-e a matematikában? Van csak egyfajta fogalom? Például a Bishop elemzésében rejlő információ (Bishop 1970) meglehetősen különbözik Wright absztrakciójának fogalmától - valójában nagyon hasonló a számítógépes tudományhoz.

6.2 Típusok és ontológia

A programozási nyelvek elsősorban gépelt nyelvek, ahol a típus modern fogalma Frege-ben és Russell-ben, különösen Russell típusfajta egyszerű elméletében származik (Irvine 2003). Természetesen Russellt a logikai és szemantikai paradoxonok motiválták, és ez a tulajdonság nem központi szerepet játszik a típusok számítástechnikában történő alkalmazásában. Másrészt, Russell típusok esetében a diskurzus világegyetemét úgy alakítják ki, hogy mind grammatikai, mind szemantikai jelentőséggel bírjanak. És ez az ötlet átkerült a számítástechnikába. Valójában a Type elméleteket a számítógépes tudomány ihlette és gazdagította. Például Russell típuselmélete, bár matematikailag erős, kifejező erejében kissé elszegényedett a modern számítógépes nyelvek típuselméleteivel összehasonlítva (Coquand 2006; Pierce 2002). Az alaptípusok, például a számok és a logikai értékek mellett, a programozási nyelvek tartalmaznak típusú konstruktorok gyűjteményét is (az új típusok felépítése a régiból). Ide tartoznak például valamilyen derékszögű termék és véges halmazok kialakításának képessége. Számos objektum-orientált programozási nyelvben a típusok (osztályok) más típusú műveleteket importálhatnak (és felülbírálhatnak), és kifinomultabb konstruktorokat kínálnak, amelyek támogatják az elvont adattípusok kialakulását és a polimorfizmus különféle formáit. A típusok (osztályok) más típusú műveleteket importálhatnak (és felülbírálhatnak), és kifinomultabb konstruktorokat kínálhatnak, amelyek támogatják az elvont adattípusok kialakulását és a polimorfizmus különféle formáit. A típusok (osztályok) más típusú műveleteket importálhatnak (és felülbírálhatnak), és kifinomultabb konstruktorokat kínálhatnak, amelyek támogatják az elvont adattípusok kialakulását és a polimorfizmus különféle formáit.

A számítástechnikában a típusok szerepet játszanak, amely félúton van a szintaxis és a szemantika között. Először is kibővítik a kontextus nélküli nyelvtan normál fogalmát. Néhány nyelvjellemző, különösen azok, amelyek lehetővé teszik a változó típusának a kontextus általi rögzítését (azaz a nyelv deklarációi), a nyelvtan olyan formáját igényli, amely rugalmasabb, mint a standard. Az úgynevezett kétszintű nyelvtan, bár technikailag megfelelő, nem megragadja azt a módot, ahogyan a változókat típusukhoz rendelik a modern nyelvekben. És nagyon ügyetlen használni. Ezenkívül nem tudják könnyen alkalmazkodni sok nyelv polimorf típusú rendszeréhez. A modern típusú rendszerek jobban teljesítenek: a változók típusait deklarációkkal rendelik hozzá, pl. X: logikai. Ezt követően egy fordító ellenőrizheti a programot, például:biztosíthatja, hogy egy változó előforduljon a következő állításokban (pl

De a típusok szintén helyességi szerepet játszanak, amelyet általában szintaktikailag nem írnának le. Ez úgy történik, hogy kiterjeszti a dimenziós elemzés hagyományos fizikai fogalmát egy sokkal gazdagabb típusú rendszerre. A megfelelő típusú struktúra megszerzése egy programhoz hozzájárul a helyességének biztosításához. És ezt a struktúra határozza meg, amelyet a típusok egy nyelvre gyakorolnak. A típusok meghatározzák a programozási nyelven szereplő dolgokat. Tehát például minden olyan programozási nyelv, amely befogadja a számokat, termékeket és osztályokat, és semmi mást, egy olyan fogalmi keretet ír elő a programozóra, amelynek belül dolgoznia kell. A problémákat meg kell fogalmazni és megoldásokat kell találni a típusrendszer által biztosított reprezentációs eszközökön belül. Miután a programozási nyelv típusstruktúráját meghatározták, ontológiai beállításának nagy részét megjavították.

Vagy van? Lehet, hogy vissza kell lépnünk, és először meg kell kérdeznünk, hogyan kell meghatározni a nyelv ontológiai elkötelezettségét. A szemantika határozza meg a kérdéseket (Turner és Eden 2007)? A Frege-ból származó hosszú hagyomány ezt sugallhatja (Dummett 1991). Ha feltételezzük, hogy az analógia a természetes nyelvekkel jogszerű, akkor a nyelv ontológiáját a szemantikai tartományok megadásához szükséges struktúrák határozzák meg. De mely szemantikai elméletet kellene alkalmaznunk? Bár minden szemantikanak figyelembe kell vennie a típusokat, a szemantikailag meghatározott ontológia túllépne rajtuk, és tükrözné az érintett szemantikai területeket, és ezek tükrözik a szemantika részét képező végrehajtási részleteket. Ennélfogva, mint az egyenlőség szempontjából, a különböző szemantikai értelmezések meghatározzák a különböző ontológiákat. Ebből következik, hogy nem értelmes a programozási nyelv ontológiájáról beszélni, hanem több olyan ontológiáról, amelyek a szemantika absztrakciójának szintjétől függnek. Például az ontológiát részben a programozási paradigma határozhatja meg.

7. Jogi és etikai kérdések

A számítógépes etika bizonyos kérdései a PCS-hez tartoznak, mivel a szoftver fejlesztésének és felhasználásának etikai kérdései merülnek fel. Sokan azonban nem kifejezetten a számítástechnikára szólnak e bejegyzés szűk értelmében; az információs technológia és a számítógépes alkalmazások egészét érintik (Bynum 2001). Következésképpen csak kettőt említünk, amelyek központi jelentőségűnek tűnnek a számítástechnika szempontjából.

7.1 Szerzői jogok, szabadalmak és személyazonosság

A szerzői jogok bizonyos védelmet nyújtanak a szoftverek számára, de a szemantikai magot nem képesek megvédeni. Feltételezzük, hogy az utóbbit a programozási nyelv szemantikus beszámolójával (3. §) kell meghatározni, amelyben a program van írva. Valószínűleg ennek a kérdésnek a lényege a program identitásának problémája (3.3. Bekezdés). De ha sok lehetséges szemantikai fogalom létezik az identitásról, melyik alkalmas a jogi alkalmazásra?

Az egyik informális szemantikai beszámoló, amelyet gyakran idéznek a törvényben, azonosítja a programot az abban kifejezett ötletekkel, amelyeket általában a program alapjául szolgáló algoritmusnak tekintnek. De nemcsak nehéz nehéz pontosan megmondani, hogy mi ez az algoritmus, hanem az is, hogy a matematikai tételekhez hasonlóan az algoritmusok sem védhetők szerzői jogi védelem alatt. És nagyjából ugyanaz a sors vár minden formális szemantikai beszámolóra, mivel ezt valamilyen matematikai fogalom határozza meg, legyen az algoritmus, vagy a működés vagy a matematikai függvény valamilyen fogalma.

De még ha meg is találnánk egy szemantikai fiókot, amely megfelelne a szerzői jogi törvényeknek, a jogi kép nem lenne teljes. A szerzői jogok megsértése gyakran nemcsak valamilyen személyazonosság miatt függ, hanem annak feltételezése is, hogy vajon valószínű-e feltételezni, hogy valaki ugyanazt a programot fogja előállítani. Tehát ezek a szándékos megfontolások bekerülnek a keretbe. Más szavakkal, még akkor sem, ha két programot szemantikai kritériumunk szerint egyenértékűnek tekintünk, ha valószínűnek tekinthetjük, hogy egymástól függetlenül készültek, akkor nem lenne jogsértés.

A szabadalmak (különösen a szabadalmak) nem jobbak. Még nehezebb szoftvert beszerezni, mivel nem szabadalmaztathatók a mentális folyamatok, absztrakt ötletek és algoritmusok. És az algoritmusok, nem pedig a forráskód, gyakran tartalmazzák az új ötleteket. De ismét, az azonosítás és az identitás kérdései képezik a központi filozófiai aggodalmat. És ezek szemantikai és szándékos megfontolásokat is magukban foglalnak.

7.2. Megfelelőség és felelősség

Helyes-e az, hogy a szoftvereket kevéssé garantálják a célra való alkalmasságot? (Coleman 2008) szenteli ezt a kérdést. Ez különösen a biztonság szempontjából kritikus rendszerek szempontjából releváns kérdés, pl. Olyan rendszerek, amelyek egészségügyi állapotot figyelnek, atomerőműveket üzemeltetnek és az űrhajókkal kommunikálnak. A szigorúbb tesztelés és a helyesség igazolásának érvényesítése itt alapvető fontosságú. De etikai szempontból a programozó esetében, aki elmulasztja elemezni és tesztelni a programját, különbözik-e az építőmérnökétől, aki elmulasztja elvégezni az előírt matematikai modellezést és teszteket egy épületépítésnél? Az erkölcsi kötelezettségek hasonlónak tűnnek.

Az egyik módja annak, hogy különbözzenek egymással, a szoftver összetettségére vonatkozik (Brooks 1987), amely nagyságrenddel meghaladja az emberi tárgyak bármilyen más bonyolultságát. Sokan azt állítják, hogy a helyesség ilyen garanciáját nem lehet megvalósítani (DeMillo et al., 1979); A szoftver annyira összetett, hogy a szigorú matematikai bizonyítás és a szoftver tesztelésének folyamata lehetetlen. És feltehetően csak egy (erkölcsi vagy jogi) kötelezettség vállalhat egy megvalósítható folyamat végrehajtására.

De hogyan lehet egyensúlyba hozni a szoftverfejlesztés bizonyító és tesztelési szempontjait a szoftver tervezett felhasználásával? A szórakoztatás céljára kifejlesztett szoftvert ugyanolyan szigorú bizonyítéknak és tesztelésnek kell alávetni, mint a biztonság szempontjából kritikus szoftvert? Valószínűleg nem, de még mindig kísértésünk lehet feltenni a kérdést: ezek az új etikai problémák, vagy csak a jelenlegi etikai dilemmák további esettanulmányait szolgáltatják? Például, még a szórakoztatóiparban használt szoftverek biztonsági hibái pénzügyi szankciókat is hordozhatnak.

8. Új fordulatok vagy új kérdések?

Még a PCS e meglehetősen rövid áttekintése ismeg kell győznie az olvasót arról, hogy a számítástechnika érdekes és igényes filozófiai kérdéseket vet fel. Valójában az egyik legfontosabb benyomás az, hogy lényeges kapcsolatban áll a legtöbb filozófia hagyományos ágával. Világos kapcsolat van az ontológiával, az etikával, az episztemológiával, valamint a matematika, a fizika és a nyelv filozófiáival. Valójában a kezdeti kérdéslistánk sokkal több olyan témát vet fel, amelyek kapcsolódnak a filozófia más területeivel. Különösen jelentős számú irodalom található a számítástechnika alkalmazásáról. A mesterséges intelligencia és a kognitív tudomány filozófiai kérdéseket eredményez, amelyek az elme filozófiájához tartoznak (McLaughlin 2004). Természetesen ennek nagy része Turingből (1950) származik. A számítástechnika egyéb alkalmazása a tudomány hagyományos területeire, úgynevezett számítási tudomány,kérdéseket felvetni a tudomány filozófiájához: mi a számítógépes szimulációk epistemológiai hatása, különösen, ha ezek a kísérletek egyetlen életképes formája? Az ontológiai számítástechnikai fordulat új technikákkal hozza fel a fogalmi ontológiák bármiféle szerkezetét. A logika filozófiáját anyagtömeg gazdagítja: nagy számú új logikai rendszer alakult ki a számítási rendszerek ábrázolása és érvelése céljából.nagy számban alakultak ki új logikai rendszerek a számítási rendszerek ábrázolására és indokolására.nagy számban alakultak ki új logikai rendszerek a számítási rendszerek ábrázolására és indokolására.

Noha egyértelmű, hogy a számítástechnika számos jelentős fordulatot hoz a hagyományos filozófiai aggodalmakhoz, kevésbé egyértelmű az, hogy valóban új filozófiai aggályokat vet fel: vannak-e olyan kérdések a PCS-ben, amelyeknek nincs párhuzamos a filozófia bármely más ágában?

Bibliográfia

  • Allison, A., Currall, J., Moss, M. és Stuart, S., 2005, „A digitális identitás kérdése”, Journal of American Society Information Science and Technology 56 (4): 364–372.
  • Arkoudas, K. és Bringsjord, S., 2007, “Számítógépek, oktatás és matematikai ismeretek”, Minds and Machines 17 (2): 185–202.
  • Barendregt, HP, 1993, „Lambda calculi with type”, in: Kézikönyv a logikáról a számítógépes tudományban, Vol. 2, New York, NY: Oxford University Press Inc.
  • Barker-Plummer, D., 2008, „Turing Machines”, a Stanfordi Filozófiai Enciklopédia (2008. őszi kiadás), Edward N. Zalta (szerk.), URL = .
  • Bishop, Errett, 1977, A konstruktív elemzés alapjai, McGraw-Hill.
  • Blass, Andreas és Gurevich, Jurij, 2003, “Algoritmusok: Az abszolút definíciók keresése”, Az Elméleti Számítástechnika Európai Szövetségének (EATCS), 81: 195-225 számú közleménye.
  • Bowen, JP és Hinchey, MG, 1995, “Tíz parancs a formális módszerekhez”, IEEE Computer 28 (4): 56–63.
  • Bowen, JP és Hinchey, MG, 2005, “A tíz parancs a formális módszerekhez: Tíz évvel később”, IEEE Computer 39 (1): 40–48.
  • Brooks, FP, 1987, “Nincs ezüst golyó: a szoftverfejlesztés lényege és balesetei”, IEEE Computer 20 (4): 10-19.
  • Burge, T., 1998, “Számítógép-igazolás, Priori tudás és más elmék”, Filozófiai perspektívák 12: 1–37.
  • Bynum, T., 2001, “Számítógépes etika: alapvető fogalmak és történeti áttekintés”, a Stanfordi Filozófia Enciklopédia (2001. téli kiadás), Edward N. Zalta (szerk.), URL =
  • Colburn, T., 2004, „Számítástechnika módszertana”, A számítástechnika és az információ filozófiájának Blackwell útmutatója, Luciano Floridi (szerk.), Malden: Blackwell, 318–326.
  • Colburn, T. és Shute, G., 2007, „Absztrakció a számítógépes tudományban”, Minds and Machines 17 (2): 169–184.
  • Coleman, KG, 2008, „Számítástechnika és erkölcsi felelősségvállalás”, a Stanfordi Filozófiai Enciklopédia (2008. őszi kiadás), Edward N. Zalta (szerk.), URL = .
  • Copeland, B. Jack, 2008, “The Church-Turing Thesis”, a Stanfordi Filozófiai Enciklopédia (2008. őszi kiadás), Edward N. Zalta (szerk.), URL = .
  • Copeland, B. Jack, 2004, „Számítás”, A számítástechnika és információ filozófiájának Blackwell útmutatója, Luciano Floridi (szerk.), Malden: Blackwell, 3–17.
  • Coquand, Thierry, 2006, „Típuselmélet”, a Stanfordi Filozófia Enciklopédia (2006. téli kiadás), Edward N. Zalta (szerk.), URL = .
  • DeMillo, RA, Lipton, RJ és Perlis, AJ, 1979, “Témák és programok társadalmi folyamatai és igazolása”, ACM 22 (5): 271–280.
  • Denning, PJ, 1980, “A népi tételekről és népi mítoszokról”, ACM 23 (9): 493–494.
  • Denning, PJ, 1980b, „Mi a kísérleti informatika?” Az ACM 23 (10) közleményei: 534–544.
  • Denning, PJ, 1981, „Teljesítményelemzés: A legjobb kísérleti számítógépes tudomány”, ACM 24 (11): 725–727.
  • Denning, PJ, 1985, “A számítástechnika tudománya: Mi a számítástechnika?” Amerikai tudós 73 (1): 16–19.
  • Denning, PJ (szerk.) És munkatársai, 1989, “Számítástechnika mint tudományág”, ACM 32 (1): 9–23.
  • Dijkstra, E., 1968. „Ugrás a károsnak tartott nyilatkozatra”, ACM 11 (3): 147–148.
  • Dummett, M., 1991, „A metafizika logikai alapjai”, Harvard University Press.
  • Dummett, M., 2006, “Gondolat és valóság”, Oxford University Press.
  • Eden, Amnon, 2007, „Három paradigma a számítógépes tudományban”, Minds and Machines 17 (2): 135–167.
  • Feferman, S., 1992, “A funkcionális programok megszüntetésének és helyességének logikája”, Logic for Computer Science: 95–127, MSRI Pubs. vol. 21, New York, NY: Springer-Verlag.
  • Fetzer, JH, 1988, “Program ellenőrzése: a legfontosabb ötlet”, ACM 31 (9): 1048–1063 közleményei.
  • Fetzer, JH, 1999, „A modellek szerepe a számítástechnikában”, The Monist 82 (1): 20–36.
  • Finom, K., 2008, “Az absztrakció határai”. Oxford: Oxford University Press.
  • Floridi, Luciano, 2004. „Információ”, A számítástechnika és az információ filozófiájának Blackwell útmutatója, Luciano Floridi (szerk.), Malden: Blackwell, 40–62.
  • Floridi, Luciano 2007, „Információ szemantikus elképzelései”, a Stanfordi Filozófiai Enciklopédia (2007. tavaszi kiadás), Edward N. Zalta (szerk.), URL = .
  • Forrest, P., 2006, „Az észlelhetetlen személyek identitása”, a Stanfordi Filozófia Enciklopédia (2008. őszi kiadás), Edward N. Zalta (szerk.), Megjelenő URL =. >.
  • Fuchs, NE, 1992, “A műszaki adatok (lehetőleg) végrehajthatók”. Software Engineering Journal 7 (5): 323–334.
  • Gandy, R., 1980, „Egyházi tézis és mechanizmusok elvei”, Kleene-szimpózium, Barwise, J., Keisler, HJ és Kunen, K. (szerk.), Amszterdam: Észak-Holland.
  • Hagar, Amit, 2007, „Kvantum algoritmusok: Filozófiai leckék”, Elmék és gépek 17 (2): 233–247.
  • Hale, B. és Wright, C., 2001, „Az ok megfelelő tanulmánya: esszék a matematika neo-fregeai filozófiájához”, Oxford on-line ösztöndíjak, Oxford: Oxford University Press.
  • Hartmanis, J., 1993, “Néhány megfigyelés a számítástechnika természetéről”, Előadási megjegyzések a számítógépes tudományról 761, Shyamasundar, RK (szerk.): 1–12.
  • Hartmanis, J., 1994, “Turing-díjas előadás: A számítástechnikai komplexitásról és a számítástechnika természetéről”, ACM 37 (10): 37–43.
  • Hoare, CAR, 1969, „A számítógépes programozás axiomatikus alapja”. Az ACM 12 (10) kommunikációja: 576–585. [Online nyomtatás elérhető]
  • Hodges, A., 2006, “Van-e egy templom és Turing dolgozat a gépekről?”, Egyházi tézis 70 év elteltével Olszewski, Adam (szerk.)
  • Hodges, A., 2007, “Meg tud-e oldani a kvantumszámítás klasszikusan megoldatlan problémákat?”
  • Horsten, L., 2008, „Matematika filozófia”, a Stanfordi Filozófiai Enciklopédia (2008. őszi kiadás), Edward N. Zalta (szerk.), URL = .
  • Immerman, N., 2006, „Számíthatóság és komplexitás”, a Stanford-filozófiai enciklopédia (2006. őszi kiadás), Zald Edward (szerk.), URL = .
  • Irvine, AD, 2003, „Russell's Paradox”, a Stanfordi Filozófia Enciklopédia (2006. őszi kiadás), Edward N. Zalta (szerk.), URL =
  • Jones, CB és Hayes, IJ, 1990, “A műszaki adatok nem (szükségszerűen) ártalmasak”, Software Engineering Journal 4 (6): 330–339.
  • Krishnamurthi, S., 2003. Programozási nyelvek: alkalmazás és értelmezés,
  • Kreisel, G., Gandy, RO, 1975, „A rekurziós elmélet általánosításának néhány oka”. The Journal of Symbolic Logic 40 (2): 230–232.
  • Kripke, S., 1982, Wittgenstein a szabályokról és a saját nyelvről. Harvard University Press.
  • Kuhn, TS, 1970, A tudományos forradalmak felépítése, 2. sz. szerk., Chicago: Univ. of Chicago Press.
  • Landin, PJ, 1964, „Az kifejezések mechanikus értékelése”, Computer Journal 6 (4): 308–320.
  • Milne, R. és Strachey, C., 1977, A programozási nyelvszemantika elmélete, New York, NY: Halsted Press.
  • McLaughlin, B., 2004, “Számítástechnika, kapcsolat és az elme filozófiája”, A számítástechnika és az információ filozófiájának Blackwell útmutatója, Floridi, Luciano (szerk.) Malden: Blackwell, 135–152.
  • Minsky, M., 1970, “ACM Turing előadás: forma és tartalom a számítástechnikában”, A Számítástechnikai Gépek Szövetségének folyóirata 17. (2): 197–215.
  • Moor, JH, 1978, „A számítógépes tudomány három mítosza”, a British Journal for the Philosophy of Science 29 (3): 213–222.
  • Moschovakis, YN, 1998, „Az algoritmus elméletének megalapozásáról”, Igazság a matematikában, Dales, Harold G. és Oliveri, Gianluigi (szerk.), Oxford: Oxford University Press.
  • Pierce, Benjamin C., 2002, Típusok és programozási nyelvek, Cambridge, MA: MIT Press.
  • Plotkin, GD, 1981, “Az operatív szemantika strukturális megközelítése”, Tech. DAIMI FN-19, számítástechnikai tanszék, Aarhusi Egyetem, Aarhus, Dánia.
  • Rapaport, WJ, 2005a, „Számítástechnika filozófia: bevezető kurzus”, Filozófia tanítása 28 (4): 319–341.
  • Rapaport, WJ, 2005b, „A megvalósítás szemantikus értelmezés: További gondolatok.” Kísérleti és elméleti mesterséges intelligencia naplója 17 (4): 385–417.
  • Rosen, Gideon, 2001. “Absztrakt tárgyak”, a Stanfordi Filozófia Enciklopédia (2001. őszi kiadás), Edward N. Zalta (szerk.), URL = .
  • Shapiro, S., 1997, Matematika filozófia: felépítés és ontológia, Oxford: Oxford University Press.
  • Sieg, Wilfried, 2008, „Egyház dogma nélkül: Axiómák a kiszámíthatósághoz”, Új számítási paradigmák, Lowe, B., Sorbi, A. és Cooper, B. (szerk.), Springer-Verlag, 139–152.
  • Smith, BC, 1996, „A számítógépek korrekciójának korlátai”, Computerization and Controversy, Kling, R. (szerk.), Morgan Kaufman, 810–825.
  • Szabó, ZG, 2007, „Kompozitivitás”, a Stanfordi Filozófia Enciklopédia (2007. tavaszi kiadás), Zalta Edward N. (szerk.), URL = .
  • Thomason, R., 2005, „Logika és mesterséges intelligencia”, A Stanfordi Filozófiai Enciklopédia (2005. nyári kiadás), Edward N. Zalta (szerk.), URL = .
  • Turner, Raymond és Eden, Amnon H., 2007, „A programozási nyelv ontológia felé”, számítás, információ, megismerés - a Nexus és a végvonal, Dodig-Crnkovic, Gordana és Stuart, Susan (szerk.), Cambridge, Egyesült Királyság: Cambridge Scholars Press, 147–159.
  • Turner, Raymond, 2005, „A specifikáció alapjai”, Journal of Logic Computation 15: 623–662.
  • Turner, Raymond, 2007, “A programozási nyelvek megértése”. Minds and Machines 17 (2): 129-133
  • Tymoczko, T., 1979, „A négyszínű probléma és annak filozófiai jelentősége”, Journal of Philosophy 76 (2): 57–83.
  • White, G., 2004, “A számítógépes nyelvek filozófiája”, A számítástechnika és információ filozófiájának Blackwell útmutatója, Floridi, Luciano (szerk.), Malden: Blackwell, 318–326.
  • Wing, JM, 2006, “Számítógépes gondolkodás”, ACM közleményei, 49 (3): 33–35.
  • Wittgenstein, L., 1953. Filozófiai vizsgálatok. Blackwell Publishing.
  • Wright, Crispin, 1983, Frege koncepciója a számokról mint objektumokról, Aberdeen University Press.

Egyéb internetes források

  • Számítástechnika filozófia, az Essexi Egyetemen
  • Számítástechnika és Filozófia Nemzetközi Szövetsége

A téma által népszerű