From a231bd9587eefba7a4b6c51e3b5339a0320f87c3 Mon Sep 17 00:00:00 2001 From: "David A. Madore" Date: Wed, 15 Nov 2023 14:32:48 +0100 Subject: Various curiosities. (Thanks to Thierry Martinez for most of these suggestions.) --- transp-inf110-02-typage.tex | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'transp-inf110-02-typage.tex') diff --git a/transp-inf110-02-typage.tex b/transp-inf110-02-typage.tex index c9269d5..af96c40 100644 --- a/transp-inf110-02-typage.tex +++ b/transp-inf110-02-typage.tex @@ -117,8 +117,8 @@ Il y a autant de systèmes de typage que de langages de programmation ! \itempoint Typage \textbf{statique} (à compilation) vs \textbf{dynamique} (à exécution) ou mixte. -{\footnotesize En général on préfère : erreur à la compilation $>$ - erreur à l'exécution $>$ plantage.\par} +{\footnotesize Mixte = « graduel ». On préfère : erreur de + compilation $>$ erreur à l'exécution $>$ plantage.\par} \medskip @@ -200,7 +200,8 @@ Somme vide = type inhabité (impossible : aucune valeur). \bigskip \itempoint Types \textbf{fonctions} (= exponentielles). -P.ex. $\texttt{Nat} \rightarrow \texttt{Bool}$. +P.ex. $\texttt{Nat} \rightarrow \texttt{Bool}$ (f\textsuperscript{n} +de $\texttt{Nat}$ vers $\texttt{Bool}$). \bigskip @@ -465,6 +466,34 @@ linéarité. \itempoint Idris : langage fonctionnel + assistant de preuve. +\end{frame} +% +\begin{frame} +\frametitle{Quelques curiosités} + +\itempoint En F\#, les unités de mesure sont intégrées au système de +typage, qui peut donc vérifier l'homogénéité physique. + +\bigskip + +\itempoint En Rust, le système de typage évite non seulement les +fuites de mémoire mais aussi certains problèmes de concurrence +(absence de \textit{race condition} sur les données). + +\bigskip + +\itempoint Certains langages spécialisés assurent, éventuellement en +lien avec leur système de typage, des propriétés diverses de leurs +programmes : terminaison garantie en temps polynomial (Bellantoni \& +Cook 1992), voire constant (langage Usuba), validation XML (langage +CDuce), absence de fuite d'information (langage Flow Caml), etc. + +\bigskip + +\itempoint En Idris, le système de typage est aussi un système de +preuve (cf. Curry-Howard après) et permet de certifier des invariants +quelconques d'un programme (p.ex., correction d'un algorithme de tri). + \end{frame} % \begin{frame} -- cgit v1.2.3