Måndag 20 juni 1988.

Jag har nu sedan en tid tillbaka gått och funderat på ett program, som skulle vara ett mycket allmänt program.

När Petter och jag började tänka på vad vi skulle göra som fri Pascal-lab, skenade tankarna iväg och många idéer sprutade fram, de flesta om detaljer egentligen. Mycket var väl sådant som lagts på hög i hjärnan och byggts på periodvis i flera år, utvecklingar av det man samlat på sig genom erfarenhet av äventyrsspel. För ett äventyrsspel skulle det bli. Storslagna idéer fick man, varav en del faktiskt kom på pränt också (trots att det brukar bli så svårt att minnas vad man tänkte just när det ska fästas på papper!) Vårt äventyrsspel började mer och mer likna ett AI-program (vad nu ett sådant är; man har ändå en viss intuitiv uppfattning om det (vad jag nu menar med intuitiv; utan att definiera det har åtminstone jag en viss... (det här kommer inte att bli lätt, när jag inte ens kan komma vidare i den här berättelsen) (fel sagt av mig nyss! det kan jag visst!))) Naturligtvis blev vi tvungna att begränsa oss, och det kraftigt. Vi insåg ju snart, utan att någon av oss egentligen sa det rakt ut, att vi aldrig skulle vare sig orka eller ha tid att ens tänka igenom våra spridda idéer ordentligt. Förresten rörde det sig ju bara om en simpel programmeringsuppgift i Pascal, den sista som ingick i kursen Imperativa språk.

Petters och mitt äventyrsspel blev i alla fall färdigt (jovisst, jag håller med dig om att program inte blir färdiga i ordets exakta betydelse, men du förstår nog min tanke; om inte, så önskar jag dig lite skoj i din odödlighet, eller Guds välsignelse att ta dig ur din situation (exklusivt eller)). Metoden vi använde för att konstruera programmet var väl inte den mest rekommenderade: vi satte oss ner vid tangentbordet och började skriva. Rakt av bara. Resultatet blev väl därefter. Att det överhuvudtaget gick ihop berodde antagligen på att vi var vana Pascal-programmerare och förhållandevis väl samkörda. Examinatorn gav oss högsta betyg, och människa som man ändå är protesterade man inte. Programmet fick behålla sitt arbetsnamn "Hell City", tillika namnet på den första lilla testvärlden till spelet. Rätt träffande faktiskt. Nu måste jag nog tillstå, för att inte låta alltför negativ, eller uppfattas som utdömande, att vårt program trots allt fungerade väl, uppfyllde (den för ändamålet skickligt (=aningen öppet) formulerade) specifikationen och ägde ett visst, om än kortvarigt, underhållningsvärde. Om du någon gång skulle hamna i den värld, som bär namnet "Hell City", ber jag dig gå norrut längs 1:a Gatan, tills du når Ståltorget, och därifrån kliva in i minneslunden. Begrunda gärna minnesstenen, vars inskription lyder: "Till minne av Petter Aaro och Matthias Bolliger som skapade världen. Frid över deras minne."

Tänk efter vad du menar med "en värld"! Kanske använder du som jag ibland uttrycket "en begränsad värld"? En värld kan man simulera med ett program. (Du märker att jag inte längre ger dig möjlighet att säga emot. Gör gärna det ändå, och skriv till mig!) Det kan vara lätt eller svårt, men det går i princip. En begränsad värld är lättare att simulera. Vad är skillnaden mellan en begränsad värld och en värld? Är inte alla världar begränsade, utom möjligen hela den "vanliga" värld vi lever i? Anta att vi vill simulera hela vår "vanliga" värld i ett program. (Det är för övrigt något jag drömt om att göra. Just nu ställer jag mig dock mycket tveksam till det hälsosamma i det.)

Om en sådan simulering ska bli helt korrekt, måste den ta hänsyn till varje minsta del av universum. Det förefaller mig oändligt onödigt att göra en sådan simulering, eftersom "originalvärlden" lika gärna själv kan få visa mig (och alla andra) vad som händer. Du invänder kanske att simuleringen skulle kunna gå snabbare än "originalvärlden", och därmed bli en äkta kristallkula, där man kan se precis vad som kommer att hända i framtiden. Men en sådan simulering kan... - nu blir jag själv osäker... jag hade tänkt fortsätta ungefär så här: ... rimligen inte fungera, eftersom simulatorn ständigt måste simulera sitt eget beteende en stund in i framtiden, och därför blir totalt självupptagen, "hänger sig i en evig loop". Men vad är det som säger att det skulle vara ett problem för simulatorn att simulera sig själv? Jag hade tänkt påstå, att för att simuleringen ska fungera så måste man utesluta själva simulatorn ur den simulerade världen, som därmed inte längre är "hela världen", vilket den skulle vara. Men det vågar jag nu plötsligt inte påstå längre. Inte heller att hela vår värld, där en viss "supersimulator" blivit utesluten, är en begränsad värld.

Vad mer kan inte vara uteslutet; något vi inte känner till och inte kan tänka oss? Men innebär (nåja, kanske hellre tyder) inte det på att hela vår vanliga värld ändå är begränsad ur någon högre världs synvinkel? Fast vad menade jag egentligen från början med "hela vår vanliga värld"? Borde inte det lilla ordet "hela" betyda att alla eventuella högre världar är innefattade?

Jag märker nu igen, hur ytterst farligt det är att ge sig in på teoretiska resonemang utan att definiera alla ord man använder.

En praktisk kommentar bara: jag känner inget sätt att simulera en del av världen, så att varje detalj finns med, med en fysisk anordning som tar mindre plats än det som simuleras.

Det jag ville komma fram till var, hursomhelst, att när jag nu börjar arbetet med mitt program, som är tänkt att simulera vår naturliga värld, är det inte någon "supersimulator" jag är ute efter, utan en avancerad simulering av en begränsad värld. Jag kommer till exempel att tillåta (och troligen i stora delar bygga på) att försöka lura den mänskliga användaren av programmet att tro att simuleringen av världen är mer genuin än den verkligen är. Låter det cyniskt? Tänk på att de flesta äventyrsspel så gott som bara bygger på det här lurendrejeriet! Jag erkänner att jag kommer att göra så. Orsaken är enbart den, att jag som människa vill ha roligt när jag provkör mitt program.

Det som inte kommer att vara äkta simulering, kommer att vara slumpstyrt, eller delvis slumpstyrt, för att öka variationen, så att användaren får svårare att upptäcka återkommande mönster.

Jag vill alltså skriva ett program, som liknar de existerande äventyrsspelen, men där det viktiga inte är att få agera i en roll som spelare, utan att studera det som sker i en simulerad värld som liknar ens egen. Visst kan man tänka sig att det finns spelare också, men de ska i så fall inte ha större rättigheter än andra, helt simulerade, personer i världen.

Måste nämna en sak här i sammanhanget! I mina funderingar den här veckan kom jag på mig med något riktigt fult: jag höll på och gottade mig åt en finess jag just uppfunnit till det här programmet, nämligen att låta spelaren (=jag) växla mellan "normal mod", då man så att säga är i världen, och nånting i stil med "övervakarmod", där jag kan kika på lågnivåparametrar i t.ex. hjärnorna, studera ofullbordade tankegångar m.m. och ändra direkt på värdena. Är inte det att göra sig till Gud? Det är väl det. Sådant man kan se, förstå och göra i "övervakarmod" kan ingen person i världen göra. Säg inte det förresten! Kanske ligger det något i vissa övernaturliga förmågor hos vanliga människor. Men att njuta av tanken, det kallas fult! Jag har på känn att jag som människa inte kommer att kunna motstå frestelsen att lägga in denna "Ö-mod" trots allt. Så länge programmet och världen håller sig tillräckligt simpla, töntiga och har stor distans till verkligheten och framför allt inte innehåller några kopior av verkliga fysiska personer, lär det inte vara någon fara med det. Och det lär nog vara så länge, länge! Tyvärr, kanske. (Det är inte klokt vad jag verkar ha stora vilda planer. Bäst jag försöker lugna ner mig.)

Några praktiska detaljer har jag bestämt mig för:

  • Jag ska skriva programmet i språket Scheme, eftersom det är lätt att direkt uttrycka det man menar där, utan att behöva tänka alltför mycket på formella småsaker, som datatyper och sånt, eftersom det språket lämpar sig för data av i förväg okänd storlek, eftersom koden blir ganska kort, eftersom jag just nu vill lära mig Scheme ordentligare. Scheme är ett mycket vackert språk.
  • Jag ska till att börja med inte sträva efter att skriva effektiv kod i första hand. Jag ska däremot sträva efter att skriva snygg och läsbar kod, med fullständiga abstraktionsbarriärer, så att små ändringar i funktion kommer att kräva små ändringar av koden.

Funderingarna kring det här programmet har vuxit fram långsamt. De senaste veckorna har jag mer intensivt gått och tänkt på det. Jag har läst bl.a. "The Revised3 Report on the Algorithmic Language Scheme" och "MacScheme Reference Manual". "Gödel, Escher, Bach..." svävar runt i hjärnan sen jag läste den förra året. Där finns, åtminstone tidvis, en tro på att AI-program kan förverkligas, till den grad att de kan förväxlas med människor. Om och om igen har jag ältat tankar, resonemang runt i huvudet, fått infall och för den delen också anfall, av matthet och liknande känslor, men något större utfall har jag inte märkt av. En idé jag har är att AI-programmets begränsning är just en människa. Så länge AI-programmen är mindre intelligenta än vi, kommer vi att uppfatta dem som maskiner. Går de om oss i intelligens, når någon högre insikt, kan vi knappast räkna med att kunna uppfatta det. Men är de på vår egen nivå, kan de uppfattas som människor. "Uppfattas"! Är det inte snarare så, att de då är människor? Jag tror just nu inte att vi kommer att programmera en människa så som vi programmerar ett äventyrsspel, eller ett expertsystem heller för den delen. Snarare måste vi skapa en omgivning, plantera ett embryo med förmåga att växa, lära sig och fortplanta sig, och (svårast av allt, tror jag) sätta "startvärden" i detta det första embryot. Skapelsen? Och vi skapar detta till vår egen avbild...

Jag var tidigare i vår på ett kortseminarium om etik i samband med expertsystem. "Från Sokrates till expertsystem" var titeln, och den lätta förvirring som blandades med (antagligen) väl genomtänkta tal om det som varit, och konkreta arbetsresultat och -planer som presenterades så självklart och nästan lättvindigt fick också igång mina tankar, särskilt då tankarna på att göra något konkret istället för att bara sitta och tänka.

Medan jag försöker avsluta dagens anteckningar, slår mig tanken: hur skulle en medelsvensson kommentera det jag här skrivit ner? Skulle inte han eller hon undra vad jag egentligen bryr min hjärna med? Jo, det tror jag nog; det undrar jag också.

Min värsta filosoferarperiod är över. Mänskliga bekymmer och glädjeämnen tar över. Även om förnuftet kan säga att en AI-människa är möjlig, upplever jag stunder av känslor som jag har mycket svårt att tänka mig kan finnas hos en sådan.

Nyligen talade jag med en person som jag studerat tillsammans med på gymnasiet. Det är ingen jag känner särskilt väl; hon är lite av konstnärstyp, satsar på att bli artist i musikvärlden. Jag berättade om mitt intresse för datavetenskap, om det sköna och spännande i att formulera företeelser i formella språk, som ska vara uttrycksfulla på sitt område o.s.v. Hon nämnde (mest i förbigående, tror jag) att hon var mer intresserad av hur hjärnan fungerar.

Nu kommer jag att sätta igång arbetet på mitt program. Alla småfilosofiska tankegångar härovan till trots skall programmet bli ett relativt traditionellt, roande stycke mjukvara.

Troligen kommer dess namn att bli "La Folia" eller någon variant av det. Utredningar av ords många betydelser och associationer kan lätt förta spänningen och mystiken kring dem. Jag försäkrar dock att det finns goda anledningar för programmet att bära det namnet.

Följande citat kan passa som motton till programmet (motto vid arbetets början resp. motto vid arbetets slut):

"Redan i deras språk finnes något äventyrligt."
Lundabiskopen Wilhelm Flensburgs omdöme om stockholmarna, när han ville varna sin son Nils för frestelser som skulle möta honom vid hans första besök i huvudstaden.

"Kanske en klok människas enda och rätta uppgift är just pratet, dvs. ett avsiktligt ösande från ett tomrum till ett annat."
Fjodor Dostojevskij, Anteckningar från ett källarhål.


Copyright © Matthias Bolliger.
Hemsida