Je pense que si tu ne précises pas un peu ta pensée, tu auras probablement obtenu la liste d’à peu près tous les langages connus avant la fin de cette page.
Alors les gens qui auraient répondu ne sauraient vraiment pas de quoi ils parlent : par exemple, il y a tellement peu de différences entre les langages de programmation Python et Ruby ou entre Java et C# que ça ne sert strictement à rien d’apprendre les deux pour avoir une "vision globale des paradigmes"
Commencer par apprendre à programmer proprement est effectivement un bon départ. En C, bon, pourquoi pas si tu as un bon cours.
Une fois que tu es un peu à l’aise en C, tu pourrais aller regarder un peu des langages haut-niveau. Par exemple, quelque chose comme Python, qui propose déjà une approche assez différente, avec de l’objet et du typage dynamique.
Ensuite, C et Python, dans le fond ça reste de l’impératif. Tu pourrais aller regarder des paradigmes vraiment différents, et parmi ceux-là, le plus connu est sans doute le fonctionnel. Un langage comme OCaml serait un bon choix pour découvrir, avec en bonus la programmation fortement, statiquement et proprement typée.
Le trio C/Python/OCaml est déjà une base raisonnable pour couvrir une bonne partie des concepts que tu croiseras dans une bonne partie des programmes. Tu pourras ensuite aller voir des choses un peu plus exotiques :
- Prolog, pour de la programmation logique (c’est une façon de penser très différente, assez peu utilisée en dehors de quelques cas d’application particuliers, mais qui mérite qu’on s’y intéresse)
- Erlang, pour de la programmation concurrente avec acteurs (c’est aussi du fonctionnel, et le modèle de concurrence proposé est assez amusant. Pareil, ça vaut le détour.)
- Pour aller un peu plus loin dans les langages typés :
- Coq, avec des types dépendants et de la preuve de programmes.
- Rust, pour un langage bas-niveau plus sûr grâce au typage.
Avec une liste comme ça, tu auras couvert une bonne partie des concepts de programmation actuels. J’insiste sur ce point : l’objectif n’est pas de maîtriser chacun de ces langages, mais de les utiliser assez pour comprendre la façon de penser la programmation proposée.
Bien sûr, cette liste n’est pas une liste définitive et absolue : d’une part, certains langages peuvent tout-à-fait être remplacés par d’autres qui présentent à peu près les mêmes idées (par exemple, Python et Ruby sont complètement interchangeables, et on pourrait parfaitement remplacer OCaml par Haskell), d’autre part, on pourrait toujours rajouter des choses. Mais je pense qu’il s’agit déjà d’un bon départ, et d’une couverture assez optimale des différents concepts que tu pourrais rencontrer.