{ "cells": [ { "cell_type": "markdown", "metadata": { "toc": "true" }, "source": [ "# Table of Contents\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Exemple de notebook dans un autre langage interprété : OCaml\n", "\n", "OCaml (https://www.ocaml.org/) est un langage de programmation fonctionnelle, statiquement typé, qui peut être utilisé en mode interprété (comme Python) ou compilé.\n", "Conçus par des chercheurs de l'INRIA, hériter de CAML puis caml_light, le langage utilisé pour l'enseignement de l'option informatique en classes préparatoires MPSI et MP en France.\n", "\n", "OCaml, et les langages fonctionnels en général, n'est pas un langage très populaire dans le monde, en comparaison de C/C++, Java, PHP, Python et Javascript (les cinq plus populaires), mais il a des avantages, et reste très utilisé pour l'enseignement de l'informatique théorique en France.\n", "\n", "> Liens :\n", "> - http://caml.inria.fr/ et https://www.ocaml.org/ sont les sites officiels du langage,\n", "> - http://try.ocamlpro.com/ pour essayer le langage depuis un navigateur,\n", "> - Par exemple http://www.janestreet.com/ est un groupe de trading, qui est connu pour utiliser des applications codées en OCaml,\n", "> - Un autre exemple, Facebook utilise OCaml pour ses outils d'analyse statique de code, comme [flow](https://github.com/facebook/flow) et [infer](https://github.com/facebook/infer), et pour son environnement [Reason](https://github.com/facebook/reason)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Une faiblesse d'OCaml ?\n", "OCaml est connu pour manquer d'environnement de développement moderne et \"séduisant\", et la plupart des enseigants utilisent Emacs et son mode Tuareg pour Caml/OCaml, qui manque de modernité.\n", "\n", "Les élèves habitués à des logiciels très modernes, faciles d'accès et très visuels, se retrouvent confrontés à un logiciel qui n'a guère évolué depuis les années 1980.\n", "\n", "Mon expérience montre que mêmes des élèves de niveau master, préparant l'agrégation de mathématiques option informatique à l'ENS de Rennes, ont un peu de mal à prendre correctement en main le logiciel Emacs et son mode Tuareg.\n", "A l'opposé, j'ai vu des élèves de première et deuxième années de prépa (MPSI et PSI) maîtriser très bien l'environnement Jupyter, qu'ils avaient appris à utiliser pour l'oral \"maths avec Python\" du concours CentraleSupélec.\n", "\n", "> Liens :\n", "> - https://opam.ocaml.org/packages/tuareg/\n", "> - https://pro.yannsalmon.fr/ide#opam_ocaml_emacs_tuareg" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Notebooks Jupyter pour le langage OCaml\n", "Utiliser des notebooks Jupyter avec le *kernel* `ocaml-jupyter` (https://github.com/akabe/ocaml-jupyter) est une très bonne solution pour montrer du code, des commentaires, et les résultats d'évaluation des morceaux de code, pour des cours, TD ou TP d'informatique avec OCaml." ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "val entier : int = 0\n", "val flottant : float = 1.\n", "val chaine : string = \"Superman\"\n", "val fonction : int -> int -> int =