Je connais mieux Perl, alors je vais m'en occuper.
Perl a essayé de nombreuses idées. Certains étaient bons. Certains étaient mauvais. Certains étaient originaux et pas largement copiés pour une bonne raison.
L'une est l'idée de contexte - chaque appel de fonction a lieu dans un contexte de liste ou scalaire, et peut faire des choses entièrement différentes dans chaque contexte. Comme je l'ai souligné sur http://use.perl.org/~btilly/journal/36756, cela complique chaque API et conduit souvent à des problèmes de conception subtils dans le code Perl.
Le suivant est l'idée de lier si complètement la syntaxe et les types de données. Cela a conduit à l'invention du lien pour permettre aux objets de se faire passer pour d'autres types de données. (Vous pouvez également obtenir le même effet en utilisant la surcharge, mais l'attachement est l'approche la plus courante en Perl.)
Une autre erreur courante, commise par de nombreuses langues, est de commencer par proposer un cadrage dynamique plutôt que lexical. Il est difficile de revenir plus tard sur cette décision de conception et conduit à des verrues de longue durée. La description classique de ces verrues en Perl est http://perl.plover.com/FAQs/Namespaces.html . Notez que cela a été écrit avant que Perl ait ajouté des our
variables et des static
variables.
Les gens sont légitimement en désaccord sur le typage statique contre le typage dynamique. Personnellement, j'aime la frappe dynamique. Cependant, il est important d'avoir une structure suffisante pour permettre la capture des fautes de frappe. Perl 5 fait un bon travail avec strict. Mais Perl 1-4 s'est trompé. Plusieurs autres langues ont des vérificateurs de peluches qui font la même chose que strict. Tant que vous êtes bon dans l'application de la vérification des peluches, cela est acceptable.
Si vous cherchez plus de mauvaises idées (beaucoup d'entre elles), apprenez PHP et étudiez son histoire. Mon erreur passée préférée (corrigée il y a longtemps car elle entraînait tant de failles de sécurité) consistait à autoriser quiconque à définir n'importe quelle variable en passant des paramètres de formulaire. Mais c'est loin d'être la seule erreur.