Alle har mødt hver deres Frege

Gottlob Frege, den tyske logiker og filosof, der levede fra 1848 til 1925, er en legende, og alene hans navn ansporer tilsyneladende til en rejse i fantasiens verden. En af mine gamle medstuderende kaldte ham Lille Frække Frege, og en kollega fandt senere på sangen “Jeg går og hedder Frege”. Historien om Freges korrespondance med Bertrand Russell i forbindelse med Russells paradoks er lavet af det stof, romaner er lavet af – og dukker da også op i tegneserien Logicomix, som Palle Raabjerg har anbefalet mig. Mere om det en anden gang.

I går sad jeg til et seminar, hvor en PhD-studerende fremlagde resultaterne fra første år af sit forløb. Jeg nævnte i den forbindelse lineær logik og her til morgen bestemte jeg mig til at kigge i mit gamle eksemplar af Proofs and Types, som er det første sted (mig bekendt) hvor Jean-Yves Girard præsenterer lineær logik i bogform. Bogen, forfattet af Girard sammen med Yves Lafont og Paul Taylor er i øvrigt nu frit tilgængelig i PDF-format fra Paul Taylors webside.

Jeg faldt over dette citat fra første kapitel, hvor Girard (skrivestilen afslører ham!) er i det filosofiske hjørne og taler om Gottlob Frege:

So, one of the most fundamental distinctions in logic is that made by Frege: given a sentence A, there are two ways of seeing it:

  • as a sequence of instructions, which determine its sense, for example A \vee B means “A or B”, etc..
  • as the ideal result found by these operations: this is its denotation.
    “Denotation”, as opposed to “notation”, is what is denoted, and not what denotes. For example the denotation of a logical sentence is t (true) or f (false), and the denotation of A \vee B can be obtained from the denotations of A and B by means of the truth table for disjunction.

Frege kaldte det første for Sinn, det andet for Bedeutung og skrev en hel bog med denne titel, Über Sinn und Bedeutung. Hvorfor blev jeg fanget ind af dette sted i teksten? Vel netop fordi det er her, vi kan se en stor forhindring i undervisning i både matematik og datalogi: mange studerende taler konsekvent om Sinn, mens vi underviser i Bedeutung.

Enhver, der har undervist i automatteori, vil opleve at mange studerende opfatter determinisering af nondeterministiske endelige automater som først og fremmest fortællingen om en algoritme, man skal udføre, mens vi i undervisningen opfatter determinisering som en udvidelse af overføringsfunktionen \delta fra at være \delta : Q \times \Sigma \rightarrow Q til at være en funktion over mængder \delta : \mathcal{P}(Q) \times \Sigma \rightarrow Q. Tilsvarende kan man opleve mange studerende, der opfatter en matematisk funktion f ikke som en binær relation, men som en forskrift, der fortæller os hvordan vi, givet et argument x beregner f(x).

Også i programmering støder man på forskellen – imperative sprog som C og dets mange efterkommere (C++, C#, Java osv.) er Sinn-sprog, mens applikative sprog stræber efter at være Bedeutung-sprog (men trods alt skal implementeres på en maskine!). Mange studerende hævder at kunne forstå imperative sprog, men også at have gevaldige kvaler med de applikative.

Jeg grubler over, hvordan vi kan få de studerende til bedre at forstå, at der både er Sinn og Bedeutung, så vi ikke kun forstår hver vores halvdel af Den Lille Frække Frege.

(Visited 50 times, 1 visits today)
Loading Facebook Comments ...

Én kommentar til “Alle har mødt hver deres Frege”

  1. Jeg har helt sikkert selv lavet den slags fejl da jeg var ung og ikke vidste bedre 🙂

    Derfor vil jeg da også lige understrege at man naturligvis ikke kan klandre unge Dataloger og Softwareingeniører for at komme fra Sinn tankegangen.
    Det er jo fundamentalt set sådan de fleste, hvis ikke alle, fysiske computere fungerer.
    Det er også grunden til at de fleste Dataloger og SW-ingeniører føler sig mere hjemme i Turing Maskinen end i Lambda kalkylen.

    Og den allerbedste kur for den slags er nok at bruge et funktionelt sprog som basis for et par semesterprojekter. Det var grundlæggende det jeg besluttede mig for at gøre. Et lille kursus rækker simpelthen ikke for at ændre eller nuancere den grundlæggende tankegang man kommer ind i når man har rodet meget med computere og de populære Sinn-sprog. Men den slags er jo op til studenterne selv. Medmindre i nu bestemmer det som tema for et semester. Se dér var måske en idé alligevel.

    For jeg siger absolut ikke at det er godt bare at syre sin hjerne ind i Sinn, hverken som Datalog eller Softwareingeniør.

    Men det er naturligt at tænke Sinn. Man er i tættere kontakt med det metal man laver udregninger på, og det tillader generelt bedre optimering hvis man har brug for den slags.
    Men funktionel programmering, og dermed Bedeutung tankegangen, får efterhånden også større berettigelse i “den virkelige verden”:
    Multicore, distribuering og dermed Parallel programmering er en enorm plage for Sinn tankegangen. Det passer simpelthen ikke ind nogen steder at to ting kan ske på samme tid (“det er en sekvens af instruktioner for pokker! Aargh!”), og så går alt bare i stykker hvis man ikke tænker sig rigtig godt om og bruger en masse mærkelige instruktioner til at sikre sig at visse ting sker i den rigtige rækkefølge.

    Som jeg ser det:
    Sinn er stadig den mest optimerbare tankegang på metallet, hvis man kan få det til at fungere. Og det er måske relevant for HPC (High Performance Computing) at optimere til det yderste, men det er bare ikke det værd for almindeligt programmel. Der er alt for mange ting der kan gå galt i den uhellige blanding af imperativ og parallel programmering.
    Og så er den pæne separation af operationer man får i Bedeutung tankegangen en Guds gave til de dødelige programmører som ikke absolut skal optimere HPC programmer til det aller-yderste.

    Så ja, jeg tror faktisk at hvis man ikke lidt mere konsekvent begynder at lære de unge om Bedeutung tankegangen som du kalder det, får de sig enten en slem overraskelse når de kommer ud i den virkelige verden, eller også går den virkelige verden bare i stykker. Hold udkig efter projekter der kuldsejler fordi alt går galt når menige programmører forsøger at lave imperative, parallele programmer (jeg har meget stærke mistanker om computersystemerne i IC4, f.eks.)

Skriv et svar