Code stipule complets que vous devriez code aways dans une langue , par opposition au code dans ce. Par cela, ils veulent dire
Ne limitez pas votre pensée de programmation aux seuls concepts pris en charge automatiquement par votre langage. Les meilleurs programmeurs pensent à ce qu'ils veulent faire, puis ils évaluent comment atteindre leurs objectifs avec les outils de programmation à leur disposition. (chapitre 34.4)
Cela ne conduit-il pas à utiliser un style de programmation dans chaque langue, quelles que soient les forces et les faiblesses particulières de la langue en question?
Ou, pour mettre la question dans un format plus répondable:
Proposeriez-vous que l'on essaie de coder son problème aussi soigneusement que possible avec les particularités de sa langue, ou si vous préférez rechercher la solution la plus élégante dans son ensemble, même si cela signifie que vous devez mettre en œuvre des constructions éventuellement maladroites qui n'existent pas nativement dans sa langue?
Réponses:
Il existe une approche encore meilleure: oubliez votre langage de programmation fixe pathétique. Encodez votre problème dans un langage que vous venez d'inventer, dérivé des termes mêmes du domaine problématique concerné, encodez-le aussi naturellement que possible, et pensez alors à implémenter ce nouveau langage de programmation ou à simplifier votre code jusqu'aux limites de la langue existante.
Cette approche est appelée programmation orientée langage . Il existe de nombreuses techniques de mise en œuvre efficace des langages spécifiques au domaine , et c'est un sujet particulièrement brûlant pour la communauté Ruby.
la source
Je crois que la bonne réponse, et celle voulue par le livre est:
En programmant dans un langage, j'ai toujours supposé que c'était d'utiliser des techniques en dehors du style normal du langage où cela conduirait à un avantage . Il s'agit d'une différence clé par rapport à l'écriture dans un style dans toutes les langues.
Par exemple, l'apprentissage de Haskell a considérablement amélioré mes compétences dans l'utilisation de fonctions d'ordre supérieur. Maintenant, lors de la programmation en c #, j'utilise les différentes
IEnumerable
méthodes telles queSelect
plus souvent, car l'utilisation de ces méthodes conduit à un code plus propre que l'écriture de boucles. J'ai également tendance à utiliser les passes et les fonctions (c'est-à-direFunc<int, int>
) plus souvent en raison de mon expérience avec haskell. Mon utilisation de l'héritage a chuté à cause de cela, et la plupart du temps le résultat est un code plus simple.Cependant, je n'utilise pas de concepts comme les monades ou les types de données algébriques en c #. C'est parce que ni l'un ni l'autre ne sont clairement représentables en c #, et conduisent à peu d'avantages en échange d'une grande obscurité.
J'utilise donc les outils de la langue pour utiliser au mieux les compétences que j'ai. Je crois que c'est de la programmation dans la langue.
la source
Le point est que les bons programmeurs ne sont pas une langue. La citation du livre parle des "outils de programmation à leur disposition" - cela signifie que si vous connaissez Perl et Java, alors vous devriez peut-être utiliser Perl pour cette manipulation de chaîne rapide. Les langages de programmation ne sont pas des boîtes pour nous limiter, mais des outils que nous utilisons pour résoudre des problèmes. C'est (imo) ce que Code Complete veut dire. Ne codez pas dans une boîte de langage / environnement de programmation, mettez la meilleure solution dans le meilleur langage / environnement de programmation pour vous, votre problème et votre solution.
la source