Quelle est une liste de langages de programmation classés du plus facile au plus difficile à apprendre ?


Eh bien, il est plutôt difficile de dire objectivement quels langages sont plus faciles ou plus difficiles à apprendre, et différentes personnes pourraient trouver différents langages plus difficiles. Pourtant, il y a des candidats sur le fait d'être "objectivement difficile". Donc, en énumérant seulement les langues que je connais, de la plus facile à la plus difficile (subjectivement, bien sûr):

  1. Basic - Allez, c'est dans le nom ! Conçu à l'origine comme un "langage d'enseignement", pas beaucoup d'utilisation dans le monde réel.
  2. Pascal - Également un "langage d'enseignement", également pas beaucoup d'utilisation dans le monde réel. Un peu plus de concepts à apprendre qu'avec Basic.
  3. assemblagex86 - on ne peut pas descendre beaucoup plus bas que ça en termes d'abstraction. Ce qui complique les choses, c'est une quantité impensable d'extensions diverses (pour n'en citer que quelques-unes, MMX, au moins 4 versions de SSE, FPU, etc), et au moins trois modes distincts (16-, 32- et 64-bit), qui utilisent tous des modèles de mémoire différents et permettent différents sous-ensembles de commandes.
  4. Python - il est très facile d'apprendre le langage de base. Mais pour vraiment prétendre connaître Python, vous devez également connaître quelques bibliothèques, et la conception des bibliothèques n'est pas toujours cohérente. Donc, pour faire court, il y a simplement beaucoup à apprendre.
  5. Go - très similaire à Python en termes de complexité d'apprentissage, bien que la conception des bibliothèques soit généralement un peu plus cohérente. Pourrait être un peu plus difficile à apprendre cependant, principalement en raison de se faire passer pour un langage de bas niveau alors qu'il ne l'est pas vraiment, donc il y a un peu de déconnexion parfois.
  6. Java - également très similaire à Python en termes de complexité, mais sans doute une plus grande collection de bibliothèques à connaître.
  7. PHP - pourrait être proche de Python en termes de complexité, mais PHP est beaucoup moins cohérent que Python. Les versions plus récentes sont meilleures, mais sont rétrocompatibles, ce qui signifie qu'il y a encore beaucoup de choses franchement bizarres dans le langage, et beaucoup de code horrifiant flottant autour.
  8. C - c'est plutôt facile si nous parlons d'apprendre le langage, mais il y a cette chose appelée "comportement indéfini" qui complique beaucoup les choses. En gros, il y a quelques nids de poule dans le standard du langage. Si vous utilisez l'un d'entre eux, qui est indéfini, le compilateur est libre de faire ce qu'il veut, et dans la plupart des cas, il ne vous en informera pas. Cela dit, ironiquement, le "comportement indéfini" est bien défini, il est donc possible d'apprendre à le connaître et à l'éviter. Pourtant, cela ajoute une complexité d'apprentissage.
  9. JavaScript - le langage de base est vraiment simple, mais il y a beaucoup de gotchas et d'incohérences, que vous devez connaître, similaire à "comportement indéfini" en C, mais pas aussi bien défini. De plus, dernièrement, beaucoup de syntaxe franchement inutile a été ajoutée dans les nouvelles normes, donc vous devrez apprendre cela aussi (avec tous les gotchas qui viennent avec cela, et il y en a quelques-uns)
  10. Rust - vous vous battrez avec le compilateur beaucoup, parce que Rust essaie de vous donner beaucoup de garanties statiques. Il y a quelques choses inattendues que vous pourriez rencontrer, mais pour la plupart, c'est plutôt cohérent et intuitif. Eh bien, au moins après avoir enveloppé votre tête autour de toute la chose "garanties statiques".
  11. Haskell - vous vous battrez avec le compilateur beaucoup, aussi parce que Haskell essaie de vous donner beaucoup de garanties statiques, mais pas nécessairement les mêmes garanties que Rust fait. Haskell est beaucoup plus facile si vous avez une formation en mathématiques et peu ou pas d'expérience en programmation (impérative). Les programmeurs (impératifs) accomplis ont souvent du mal avec Haskell car ils doivent d'abord briser certains stéréotypes préconçus. Pourtant, Haskell regorge de concepts très abstraits qui peuvent être difficiles à appréhender au début. Google "monads" en est un exemple. Une liste intimidante d'extensions de langage complique aussi un peu les choses.
  12. C++ - tout d'abord, c'est vaste. Le C++ est fondamentalement trois langages distincts dont vous devez être conscient : le préprocesseur, le C++ lui-même et le métalangage de template ; tous trois utilisent une syntaxe différente ; tous trois ont leurs propres gotchas. Il y a aussi beaucoup de choses franchement bizarres dans la norme C++, dont beaucoup (mais pas toutes) sont des accidents historiques. En conséquence, le C++ est rempli de règles souvent peu intuitives que vous devez connaître. Ajoutez à cela une énorme bibliothèque standard, cette horrible chose appelée "comportement non défini" héritée du C, et pas mal de nouvelles choses introduites avec chaque nouvelle norme, et vous obtenez un langage qui est involontairement très difficile à apprendre.
  13. Malbolge - un langage de programmation ésotérique. Il est conçu spécifiquement pour être presque impossible à utiliser ou à apprendre. Appelé après huitième cercle de l'enfer dans l'Enfer de Dante, ce qui en dit long sur l'intention générale de ses auteurs.

4-9 sont quelque peu interchangeables, il n'y a pas trop de différence de complexité entre ceux-ci. Parmi ces 6, certains pourraient soutenir que le C est le plus difficile, mais parmi ceux qui le feraient, la plupart pointeraient du doigt la gestion manuelle de la mémoire. La gestion manuelle de la mémoire n'est pas difficile à apprendre, elle est difficile à utiliser. Conceptuellement, elle se résume à "allouer de la mémoire avant de l'utiliser, libérer la mémoire que vous avez allouée, ne pas utiliser après avoir libéré, ne pas essayer de libérer plus d'une fois". En fait, faire tout cela sans erreur est plutôt difficile, et le compilateur ne vous avertira pas si vous faites une erreur. Malgré tout, la gestion manuelle de la mémoire n'est pas exclusive au C, et il n'est pas impossible de faire des erreurs, même dans les langages garbage-collected, donc je trouve que ce sentiment n'est pas justifié.


Vous avez peut-être remarqué qu'il n'y a qu'un seul langage fonctionnel dans la liste, à savoir, Haskell. J'aurais pu aussi mentionner OCaml, Scala et F#, mais je ne suis pas aussi familier avec l'un ou l'autre, donc je ne me sens pas qualifié pour commenter leur complexité d'apprentissage. Ces trois langages ont tous des parties orientées objet dont il faut se préoccuper, alors que Haskell n'en a pas, donc la question de savoir s'ils sont plus difficiles à apprendre que Haskell reste ouverte. Je dirais que l'ajout des "objets" de la programmation orientée objet dans le système de types rend ce dernier plus compliqué, et donc plus difficile à apprendre. D'un autre côté, Haskell est souvent plus abstrait, et certaines personnes ont un peu de mal avec cela.


.