From 0a7ceb70fd08c1483431fd5bd478d064226cfb2a Mon Sep 17 00:00:00 2001
From: "David A. Madore" <david+git@madore.org>
Date: Fri, 7 Nov 2025 13:46:34 +0100
Subject: Reading recommendations.

---
 conseils-lectures.tex | 186 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 186 insertions(+)
 create mode 100644 conseils-lectures.tex

(limited to 'conseils-lectures.tex')

diff --git a/conseils-lectures.tex b/conseils-lectures.tex
new file mode 100644
index 0000000..bcf703a
--- /dev/null
+++ b/conseils-lectures.tex
@@ -0,0 +1,186 @@
+%% This is a LaTeX document.  Hey, Emacs, -*- latex -*- , get it?
+\documentclass[12pt,a4paper]{article}
+\usepackage[a4paper,hmargin=2cm,vmargin=3cm]{geometry}
+\usepackage[shorthands=off,french]{babel}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\usepackage{newtxtext}
+% A tribute to the worthy AMS:
+\usepackage{amsmath}
+\usepackage{amsfonts}
+\usepackage{amssymb}
+\usepackage{amsthm}
+%
+\usepackage{mathrsfs}
+\usepackage{wasysym}
+\usepackage{url}
+%
+\usepackage{graphics}
+\usepackage[usenames,dvipsnames]{xcolor}
+%\usepackage{tikz}
+%\usetikzlibrary{arrows}
+\usepackage{hyperref}
+%
+\theoremstyle{definition}
+\newtheorem{comcnt}{Tout}
+\newcommand\thingy{%
+\refstepcounter{comcnt}\smallbreak\noindent\textbf{\thecomcnt.} }
+\renewcommand{\thefootnote}{\fnsymbol{footnote}}
+%
+\DeclareUnicodeCharacter{00A0}{~}
+\DeclareUnicodeCharacter{2026}{...}
+%
+%
+%
+\begin{document}
+\title{Logique et Fondements de l'Informatique\\Bibliographie et conseils de lecture}
+\author{David A. Madore}
+\maketitle
+
+\centerline{\textbf{CSC-3TC34-TP / INF110}}
+
+{\footnotesize
+\immediate\write18{sh ./vc > vcline.tex}
+\begin{center}
+Git: \input{vcline.tex}
+\end{center}
+\immediate\write18{echo ' (stale)' >> vcline.tex}
+\par}
+
+
+%
+%
+%
+
+\setlength{\parskip}{6pt plus 6pt}
+
+Ce document rassemble quelques conseils de lecture pour
+\emph{prolonger} ou bien \emph{compléter} le cours de « Logique et
+Fondements de l'Informatique », ou simplement en rapport avec des
+thématiques évoquées dans ce cours.
+
+\begin{itemize}
+\item\setlength{\parskip}{6pt plus 6pt}Commençons par un livre de
+  vulgarisation, qui est aussi un grand classique (et une référence de
+  toute une génération de geeks): \textit{Gödel, Escher, Bach} de
+  Douglas Hofstadter (1979).
+
+C'est un livre très difficile à classer, ou même à décrire, puisqu'il
+intercale des chapitres sérieux avec des dialogues humoristiques, et
+qu'il parle à la fois de sciences et d'art (ça va des maths à la
+biologie en passant par la physique, la linguistique, la philosophie
+zen, la linguistique…  et bien sûr les dessins d'Escher et la musique
+de Bach, ainsi que des réflexions sur l'intelligence artificielle qui
+restent étonnamment pertinentes pas loin de 50 ans après).  Le thème
+général est celui de la récursion et de l'auto-référence (et en
+particulier, de variations sur le théorème de Gödel et l'astuce de
+Quine).  On trouve aussi dedans une formalisation précise de
+l'arithmétique du premier ordre (mais présentée à un niveau grand
+public) ainsi qu'une description d'un langage de programmation
+(« BlooP ») qui calcule précisément les fonctions primitives
+récursives.
+
+En tout cas, je recommande très vivement ce livre (à la
+lecture duquel je dois beaucoup d'être moi-même devenu mathématicien)
+à tous ceux qui trouvent intéressants les thèmes abordés par ce cours.
+
+L'original est en anglais, mais il y a une excellente traduction
+française, à laquelle l'auteur lui-même a contribué.
+
+\item Sur la \textbf{calculabilité}, il existe de nombreux ouvrages,
+  parmi lesquels on peut par exemple recommander :
+\begin{itemize}
+\item\textit{Computability Theory} de Barry Cooper (2003) : assez
+  court et pas trop indigeste
+\item\textit{Calculabilité} de Benoît Monin \& Ludovic Patey (2022) :
+  beaucoup plus complet, mais très bien présenté
+\item\textit{Turing Computability: Theory and Applications} de Robert
+  I. Soare (2016) : concis et complet
+\item\textit{Computability Theory: An Introduction to Recursion
+  Theory} de Herbert B. Enderton (2011) : beaucoup plus élémentaire et
+  moins complet que les précédents
+\end{itemize}
+
+\item\setlength{\parskip}{6pt plus 6pt}Sur le \textbf{typage}, le
+  livre \textit{Types and Programming Languages} de Benjamin Pierce
+  (2002) aborde les aspects à la fois théoriques et pratiques du
+  typage dans différents langages de programmation de manière bien
+  plus complète que ce que j'ai pu faire en cours.
+
+Beaucoup plus costaud : {\textit{Proofs and Types}} de Jean-Yves
+Girard (disponible à l'adresse
+\url{http://www.paultaylor.eu/stable/prot.pdf} ; il s'agit de la
+traduction anglaise d'un original français, mais je crois que
+l'original est devenu introuvable).  Contient des définitions précises
+de divers systèmes logiques et de typage, la preuve de leur
+normalisation, et les explications mathématiquement précises sur la
+correspondance de Curry-Howard.
+
+\item\setlength{\parskip}{6pt plus 6pt}Sur le \textbf{théorème de
+  Gödel} : \textit{Gödel's Theorem (An Incomplete Guide to its Use and
+  Abuse)} de Torkel Franzén (2005) est un ouvrage de
+  semi-vulgarisation très bien écrit, et il prend notamment le temps
+  d'expliquer plein de malentendus sur l'usage fait de ce théorème
+  (notamment par des non-mathématiciens).
+
+Je peux aussi recommander \textit{An Introduction to Gödel's Theorems}
+de Peter Smith (Cambridge University Press, 2013), qui est moins de la
+vulgarisation et plus précis et complet, et qui est également très
+bien écrit, mais il est difficile à trouver.
+
+\item\setlength{\parskip}{6pt plus 6pt}Sur la \textbf{programmation
+  fonctionnelle} : si ce style de programmation vous intéresse, je
+  vous recommande fortement d'apprendre au moins un des langages de
+  programmation Scheme (non typé, proche du $\lambda$-calcul) et/ou
+  Haskell (fortement typé, mais diffère du OCaml en ce qu'il est
+  « paresseux » et « purement fonctionnel », c'est-à-dire sans effets
+  de bord, et c'est très instructif de comprendre ce que cela permet).
+
+\item\setlength{\parskip}{6pt plus 6pt}Concernant la programmation
+  fonctionnelle \textbf{non typée}, le livre \textit{Structure and
+    Interpretation of Computer Programs} d'Abelson et Sussman (1996 ;
+  aussi appelé le « Wizard Book », aussi bien en référence à
+  l'illustration de couverture que la compétence qu'il vous fera
+  acquérir) est un grand classique, qui a servi pendant des années de
+  support de cours au MIT.  Il est épuisé au format papier, mais il
+  est librement disponible en ligne à l'adresse
+  \url{https://web.mit.edu/6.001/6.037/sicp.pdf} sur le site du MIT.
+  Il est basé sur le Scheme (mais ne présuppose pas la connaissance du
+  Scheme), mais il ne s'agit pas non plus d'un cours de Scheme : il
+  s'agit d'un cours de programmation fonctionnelle non typée et des
+  concepts fondamentaux qui vont avec.  (Il y a aussi une “édition
+  JavaScript” du livre, plus récente, si vous préférez ce langage ;
+  mais je ne sais pas ce qu'elle vaut.)
+
+Notamment, ce livre explique comment écrire un interpréteur Scheme en
+Scheme (et ensuite comment le modifier), autrement dit, un programme
+universel, et ce que ça nous apprend sur la programmation et la
+sémantique des languages de programmation.  (L'exposé \textit{The Most
+  Beautiful Program Ever Written} de William Byrd, disponible sur
+YouTube à l'adresse \url{https://www.youtube.com/watch?v=OyfBQmvr2Hc},
+peut également être intéressant comme une sorte de version très
+abrégée de ce point.)
+
+Le livre de Christian Queinnec \textit{Lisp in Small Pieces} (2007 ;
+traduction d'un original français \textit{Les langages Lisp} devenu
+introuvable) est également très instructif.
+
+\item\setlength{\parskip}{6pt plus 6pt}Concernant la programmation
+  fonctionnelle \textbf{typée}, outre le OCaml, le Haskell est un
+  langage très intéressant (y compris mathématiquement).  À son sujet,
+  le livre de Christopher Allen et Julie Moronuki \textit{Haskell
+    Programming from first principles} me semble bien (il n'existe pas
+  au format papier, mais le PDF est achetable en ligne à l'adresse
+  \url{https://haskellbook.com/}).
+\end{itemize}
+
+\bigskip
+
+J'aurai certainement des ajouts à faire à cette liste ultérieurement.
+
+
+%
+%
+%
+\end{document}
-- 
cgit v1.2.3

