Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

🇬🇧 🇫🇷

Apprendre à programmer

Si tu le souhaites, cette collection de sujets ambitionne de te faire progresser depuis l'étape où tu n'as aucune idée qu'un logiciel puisse être écrit par un·e humain·e jusqu'à l'étape où tu te sens autonome en tant que développeur·se, avec des bonnes compétences de programmation.

Sujet 1 : Démystifier

À propos:

  • Préparer ton ordinateur.
  • Ton premier programme :
    • R/Python/Julia : ce qu'est un interpréteur.
    • Rust : ce qu'est un compilateur.
  • Les variables : la mémoire de la machine.
  • Les opérateurs / les fonctions : la machine calcule.
  • Les sorties : la machine est à ton service.
  • Les entrées : nourris la machine avec tes données.
  • Les branches (if/else) : tu prends les décisions.
  • Discussion autour d'exercices simples.
  • Partage des ressources pour progresser de ton côté.

Sujet 2 : Les types natifs

À propos:

  • Depuis les uns et les zéros jusqu'aux nombres entiers : l'encodage décimal vs. binaire.
  • Les entiers signés.
  • Les caractères textuels.
  • Les nombres à virgule flottante et IEEE754.
  • R/Python:
    • Les types composés : vecteurs, chaînes, listes, dictionnaires, matrices, tables de données.
  • Julia/Rust :
    • Les références et les pointeurs.
    • Les types composés : tableaux, vecteurs, structures associatives, dictionnaires.
  • Les boucles : la machine ne se fatigue pas.
  • Introduction à la complexité algorithmique.

Sujet 3 : Le sens du code

À propos:

  • Les fonctions : ton code est sensé et réutilisable.
  • Alias et copies : il y a plus qu'il n'y paraît dans la mémoire de l'ordinateur. Que veut vraiment dire a = b ? Que veut vraiment dire f(a) ?
    • R: copies par défaut.
    • Python/Julia : alias par défaut.
    • Rust : la sémantique de mouvement, les références partagées et la mutabilité.
  • Discussion autour d'exercices simples, possiblement tirés d'exercism.

Sujet 4 : S'organiser

À propos:

  • Sépare ton travail en plusieurs fichiers.
    • R : la structure d'un paquet.
    • Python : les paquets et les modules.
    • Julia : les environnements, les paquets et les modules.
    • Rust : cargo, les "caisses" (crates) et les modules.
  • Teste ton projet.
    • R : testthat.
    • Python/Julia : doctests natives.
    • Rust : tests natifs pour les modules et les fonctions.
  • Documente ton projet.
    • R : Écris tes propres pages d'aide avec Roxygen.
    • Python/Julia/Rust : les docstrings et les doctests.
    • Markdown, Bookdown, MdBook..

Sujet 5 : Définis tes propres types

En définissant tes propres types, tu rends ton programme plus sensé pour les humain·es : plus facile à comprendre, à modifier sans introduire de bugs.

À propos:

  • Python :
    • Les classes et les méthodes.
    • La programmation orientée objet.
    • L'héritage, les bonnes pratiques et les dangers associés.
  • Julia :
    • Les structures.
    • Le dispatch multiple.
    • Les types paramétriques et la programmation générique.
  • Rust :
    • Structures et énumérations : les types somme et les type produit.
    • Les méthodes et les traits : la composition.
    • Les types paramétriques, les contraintes de traits et la programmation générique.

Définir ses propres types en R est exagérément compliqué. R est un logiciel de niche pour les statistiques. Si tu as besoin de types personnalisés dans ton programme, c'est que tu as quitté le domaine original de R et que tu as sans doute besoin d'un autre langage.

Sujet 6 : La métaprogrammation

Les machines peuvent écrire du code. Les programmes peuvent écrire des programmes. C'est très puissant, à condition de ne s'en servir que pour alléger l'écriture et améliorer à lisibilité.

À propos:

  • Python :
    • Les décorateurs.
    • Les métaclasses.
    • La fonction eval et les dangers associés.
  • Julia/Rust :
    • Le moment de la compilation vs. le moment de l'exécution.
    • L'Arbre Syntactique Abstrait (AST).
    • Les macros et leur expansion.
    • Citer et interpoler.
    • L'hygiène et comment la plier / s'en échapper.

Attends.. 6 sujets et c'est bon: je suis un·e "développeur·ses avec des bonnes compétences de programmation" maintenant ? õ.Ô

Bien sûr que non : il faut pratiquer beaucoup d'abord, tu t'en doutes. Tu es venu·e ici avec un projet scientifique : c'est le moment de t'y mettre. Écris du code et encore du code pour le faire fonctionner. Fais relire ton code par tes pairs. C'est comme ça qu'on apprend des trucs cools. À la fin oui, tu deviendras ça c'est sûr ;)