Comment choisir un langage de programmation ?
Dans cette section, on essaie de t'aider à choisir, selon ta situation, un langage de programmation pour commencer. On ne s'intéresse qu'aux langages de programmation du catalogue du dev club de l'ISEM. En outre, les conseils donnés ici n'ont de valeur que dans le cadre de l'utilisation des langages de programmation pour la recherche en Biologie/Écologie/Évolution.
Indépendamment du langage choisi, c'est toujours bien de :
- Pratiquer toi-même, même sur de petits projets ou des projets expérimentaux.
- Faire réviser ton code par les amis et les collègues, pour obtenir des retours et apprendre des trucs cools.
Par exemple, tu peux t'entraîner gratuitement et obtenir des retour chez exercism.org (tu peux m'appeler là-bas en tant que mentor). Ou bien tu peux demander des retours sur le canal dédié du dev club.
[wikipédia] [officiel] [exercism]
Conseillé si :
- R a été fait pour ce que tu veux automatiser :
- Lire des données.
- Manipuler des tables de données.
- Ajuster des modèles statistiques.
- Produire des graphiques.
Exemples de ressources :
- R for Data Science.
- L'"Introduction" officielle pour une référence détaillée.
- R packages pour apprendre à écrire les tiens.
Déconseillé si :
- Tu as besoin d'implémenter ta propre logique / ton propre modèle sophistiqué (maigre fonctionnalités de programmation, maigres performances naives).
- Ton projet va devenir gros (maigres vérifications statiques).
- Tu cherches un bon langage de programmation, générique.
[wikipédia] [officiel] [exercism]
Conseillé si :
- Tu veux apprendre à programmer.
- Tu veux automatiser des calculs scientifiques (numpy/scipy, matplotlib, pandas/polars, ..):
- Lire des données.
- Manipuler des tables de données.
- Faire les calculs.
- Produire des graphiques.
- Tu veux automatiser des tâches système (pathlib, subprocess..):
- Créer/modifier/supprimer des fichiers.
- Lancer d'autres programmes systèmes (bash, R, ..).
- Envoyer des e-mails.
- n'importe quoi..
- Tu veux utiliser des librairies d'apprentissage machine comme torch.
- Tu veux implémenter ta propre logique / ton propre modèle sophistiqué.
Exemples de ressources :
Déconseillé si :
- Les performances sont importantes pour ta logique / ton modèle.
[wikipédia] [officiel] [exercism]
Conseillé si :
- Tu veux apprendre à programmer.
- Tu as besoin de librairies scientifiques puissantes :
- Résoudre des équations différentielles numériquement avec DifferentialEquations.jl.
- Apprentissage machine avec Flux.jl.
- Calcul formel avec Symbolics.jl.
- etc. (parcourir)
- Tu as besoin d'outils de méta-programmation sophistiqués (du code qui écrit du code).
- Les performances sont importantes pour ta logique / ton modèle.
Exemples de ressources :
Déconseillé si :
- Ton programme tourne en peu de temps mais tu le lances fréquemment (julia est rapide à l'execution mais lent au démarrage).
- Ton projet va devenir gros (maigres vérifications statiques).
Rust
[wikipédia] [officiel] [exercism]
Conseillé si :
- Tu veux apprendre à programmer en profondeur.
- Les performances sont très importantes pour ton projet / ta logique particulière.
- Tu dois être très strict·e au sujet du comportement de ton programme et t'assurer qu'il traite toutes les erreurs possibles correctement.
- Tu es un·e développeur·se C/C++ chevronné·e et (au choix) :
- Tu en as marre de C++ et tu as le sentiment qu'il devrait être déprécié.
- Tu passes beaucoup de temps à débug des accès concurrents et des erreurs de segmentation.
- Tu crains que quelqu'un·e (ou toi-même) puisse facilement introduire des accès concurrents ou des erreurs de segmentation dans ton programme.
Exemples de ressources :
- "The book".
- Rust by Example.
- Les exercices des Rustlings.
Déconseillé si :
- Ton projet va être très simple ou très petit.
- Tu n'a pas envie de connaître les détails de programmation de plus bas-niveau.