Perso, je pense qu'il faut d'abord apprendre "les bases" avant d'utiliser des langages de plus haut niveau. Je dirais donc,
- Le C, qui est un langage "relativement" facile a apprendre, mais parfois difficile a utiliser correctement. Cela permettra de mettre en évidence à l'étudiant les différents problèmes universelles en programmation: Typage, gestion de la mémoire et pointeurs. Et au passage, un peu d'assembleur pour comprendre ce qui est fait d'un "code source" lorsqu'on le compile peut être très utile.
- En // je dirais Pascal, pour l'étude de la programmation structurée, et l'études des principales "Structures de données" (stack, list, dict, ...).
- Ensuite, tout en restant dans les langages "qui compilent nativement", Ada, Rust et (C++). Ils permettent l'utilisation de la POO, avec les avantages et les défauts des concepts de la POO (encapsulation, héritage, polymorphisme) . Je mets volontairement le C++ à part, car sa syntaxe est horrible, rendant un "code source" difficile à lire (et on lit plus souvent un code qu'on en écrit). Le passage par cette étape permet aussi d'aborder les "Design Patterns" (voir le GoF).
- Pour finir, étudier un langage dit de "haut niveau". Là je préconniserais Python, non seulement parce qu'il est simple a apprendre une fois les étapes précédentent franchie. Mais attention, "Python" a tendance à se compliquer au fil du temps. Mais si on s'en tient aux "bases" du langages, c'est le meilleur choix.
Armé ainsi, on peut plus facilement s'adapter à ce qu'on rencontrera dans le future. Mais si l'étudiant est curieux, je pense qu'il est bon d'avoir des notions de ce qu'est :
- Le travail fait par un compilateur (lexer, parser, type checker, IR code, ...). Qui expose un tas de "concepts", qu'on retrouvera tout au long de sa carrière, et de mieux comprendre le pourquoi et le comment des choses qui sont ce qu'elles sont actuellement.
- Le travail d'un RTOS, (µC/OS II ou III ou FreeRTOS). C'est non seulement très instructif, mais permet de mettre en lumière et d'expliquer ce qui régit nos programmes.
Et si notre étudiant à le feu sacré,
- Définir un (nouveau) petit langage, via la compréhension des règles BNF.
- De développer un interprèteur et/ou un compilateur pour ce petit langage.
Ensuite, tout dépend du sur quoi on tombe dans son boulot, où on a pas trop le choix des armes.
BàV et Peace & Love.
Partager