Dois-je comprendre les internes d'un langage de programmation?

11

Je suis débutant en Python et je l'aime vraiment jusqu'à présent. Une question qui me vient à l'esprit très souvent est de savoir si j'ai besoin de comprendre et donc d'apprendre les internes d'un langage de programmation (comme dans mon cas Python). Comme vous le savez peut-être, Python lui-même est écrit en C.

Ma question est donc la suivante: à quelle profondeur doit-on plonger dans un langage de programmation pour maîtriser ou parler couramment ce langage? Je compare cette question aux langues "naturelles". Je ne connais pas tous les détails de grammaire dans ma langue maternelle mais je suis capable de m'exprimer sans problème dans cette langue. C'est quand je dis que je parle couramment une langue. Cela s'applique-t-il également aux langages de programmation?

Flo Schönfeld
la source
4
Les internes deviennent importants lorsque vous devez vous soucier des performances.
Gort the Robot
7
Je connais assez bien les internes CPython et PyPy, mais 80% du temps ils ne sont d'aucune utilité (ou même nuisibles, comme pour distraire) pour ma programmation Python. Je suis heureux de savoir que les 20% restants, et ce n'est pas seulement pour les performances, également pour comprendre les messages d'erreur stupides et éviter les comportements non portables.
2
Non et non. Certainement pas un doublon de l'un ou l'autre.
1
Cela dépend de ce que vous entendez par «les internes», mais je sais qu'il n'est pas rare du tout que les programmeurs C # et Java professionnels aient au moins une certaine compréhension de la CLI ou de la JVM.
user16764

Réponses:

8

Vous n'avez pas besoin de connaître les composants internes d'un langage de programmation pour écrire des programmes dans ce langage. Cependant, mieux vous comprendrez la langue, meilleurs seront vos programmes.

  1. La connaissance des structures de données et des algorithmes vous aidera à choisir les structures de données les plus appropriées pour votre tâche particulière. Certaines langues possèdent ces structures de données en interne.

  2. Comprendre la «culture» de la langue vous aide à écrire des programmes qui suivent les «meilleures pratiques», les rendant plus faciles à comprendre, plus faciles à maintenir et plus performants.

  3. Écrire un compilateur pour cette langue (ou un compilateur pour une autre langue dans cette langue) peut vous donner une compréhension approfondie de la langue et améliorer vos programmes au-delà de la simple moyenne.

  4. La maîtrise d'autres langues (en particulier celles d'un paradigme différent) fait de vous un meilleur programmeur dans votre langue principale, car vous pouvez apporter ces compétences et ces outils dans votre langue principale.

En corollaire, vous n'avez besoin de rien savoir sur votre ordinateur pour y écrire des programmes. Mais savoir comment fonctionne votre ordinateur vous permet de mieux écrire des programmes.

Robert Harvey
la source
7

Je ne connais pas tous les détails de grammaire dans ma langue maternelle mais je suis capable de m'exprimer sans problème dans cette langue. C'est quand je dis que je parle couramment une langue. Cela s'applique-t-il également aux langages de programmation?

Autrement dit, oui. Tant que vous pouvez bien vous exprimer (et comprendre les autres), alors vous êtes considéré comme parlant couramment la langue.

Cela dit, le simple fait de parler couramment ne suffit pas pour certains emplois. Certains types d'auteurs, des emplois qui nécessitent des compétences de prise de parole en public exemplaires et certains universitaires qui se concentrent sur la langue doivent la connaître "mieux que couramment". De même, certaines spécialités de programmeur nécessitent une connaissance du langage interne, mais pour la plupart des gens, connaître l'équivalent du langage de programmation pour savoir comment demander son numéro ou commander un cheeseburger est suffisant.

Telastyn
la source
0

Je définirais "compétent" avec une langue comme:

  • Comprenez la majorité de la syntaxe et des connaissances suffisantes pour rechercher toutes les nouvelles fonctionnalités que vous trouvez dans le code d'autres personnes.
  • Connaissance pratique de toutes les bibliothèques et / ou cadres standard, et capacité de trouver, lire et comprendre la documentation officielle sur tout ce que vous devez utiliser.
  • Compréhension et capacité à utiliser des idiomes communs et des conventions de dénomination pour la langue.

Notez que le fonctionnement de la langue n'est pas sur cette liste, mais il y a beaucoup de "capacité à apprendre". Avoir au moins une compréhension superficielle des internes peut être utile, mais n'est pas nécessaire pour être compétent. Cependant, en savoir suffisamment à leur sujet pour pouvoir comprendre toutes les références dans la documentation que vous lisez est une très bonne idée.

Par exemple: je sais que VB.NET et C # sont compilés dans IL (Intermediate Language) de .NET, qui est ensuite compilé pour le framework cible. Je ne connais pas grand chose à l'IL, mais j'en sais assez pour le reconnaître quand je le vois et comprendre de manière générale comment il gère certaines choses. Je me considère compétent en C #, mais pas en VB.NET, même si les "internes" sont les mêmes, et ma compréhension d'eux n'est pas profonde.

Bobson
la source