Conozco a Perl mejor, así que lo elegiré.
Perl probó muchas ideas. Algunos fueron buenos. Algunos fueron malos. Algunos eran originales y no se copiaban ampliamente por una buena razón.
Una es la idea del contexto : cada llamada a una función tiene lugar en un contexto de lista o escalar, y puede hacer cosas completamente diferentes en cada contexto. Como señalé en http://use.perl.org/~btilly/journal/36756, esto complica cada API y con frecuencia conduce a problemas sutiles de diseño en el código Perl.
La siguiente es la idea de vincular completamente la sintaxis y los tipos de datos. Esto condujo a la invención de la vinculación para permitir que los objetos se enmascaren como otros tipos de datos. (También puede lograr el mismo efecto usando la sobrecarga, pero el empate es el enfoque más común en Perl).
Otro error común, cometido por muchos idiomas, es comenzar ofreciendo un alcance dinámico en lugar de léxico. Es difícil revertir esta decisión de diseño más tarde, y conduce a verrugas duraderas. La descripción clásica de esas verrugas en Perl es http://perl.plover.com/FAQs/Namespaces.html . Tenga en cuenta que esto se escribió antes de que Perl agregara our
variables y static
variables.
La gente está legítimamente en desacuerdo con la escritura estática versus la dinámica. Personalmente me gusta la escritura dinámica. Sin embargo, es importante tener una estructura suficiente para que los errores tipográficos sean detectados. Perl 5 hace un buen trabajo de esto con estricto. Pero Perl 1-4 se equivocó. Varios otros idiomas tienen correctores de pelusa que hacen lo mismo que estricto. Siempre que sea bueno para hacer cumplir la verificación de pelusas, eso es aceptable.
Si está buscando más ideas malas (muchas de ellas), aprenda PHP y estudie su historia. Mi error pasado favorito (solucionado hace mucho tiempo porque conducía a tantos agujeros de seguridad) fue dejar de permitir que cualquiera establezca cualquier variable pasando parámetros de formulario. Pero eso está lejos de ser el único error.