Я найкраще знаю Перла, тому я підберу його.
Перл спробував багато ідей. Деякі були добрі. Деякі були погані. Деякі з них були оригінальними і не були широко скопійовані з поважних причин.
Одне - це ідея контексту - кожен виклик функції відбувається в списку або скалярному контексті, і може робити абсолютно різні речі в кожному контексті. Як я вказував на http://use.perl.org/~btilly/journal/36756, це ускладнює кожен API і часто призводить до тонких проблем із дизайном у коді Perl.
Наступним є ідея повного зв’язання синтаксису та типів даних. Це призводить до винаходу краватки, що дозволяє об'єктам маскуватися під інші типи даних. (Ви також можете домогтися того ж ефекту, використовуючи перевантаження, але прив'язка - це найпоширеніший підхід у Perl.)
Ще одна поширена помилка, допущена багатьма мовами, полягає в тому, щоб почати, пропонуючи динамічні рамки, а не лексичні. Пізніше повернути це дизайнерське рішення важко, і це призводить до довготривалих бородавок. Класичний опис цих бородавок в Perl - http://perl.plover.com/FAQs/Namespaces.html . Зауважте, що це було написано до того, як Perl додав our
змінні та static
змінні.
Люди законно не погоджуються щодо статичного та динамічного набору тексту. Мені особисто подобається динамічний набір тексту. Однак важливо мати достатню структуру для того, щоб помилки друкувати. Perl 5 добре справляється з цим суворо. Але Перл 1-4 помилився. Декілька інших мов мають шашки, які виконують те саме, що і суворі. Поки ви добре домагаєтесь перевірки ворсинок, це прийнятно.
Якщо ви шукаєте більше поганих ідей (їх багато), вивчіть PHP та вивчіть його історію. Моя улюблена помилка минулого (давно виправлена через те, що вона призводила до такої кількості дірок у безпеці) була дефолтом, що дозволяла кожному встановлювати будь-яку змінну, передаючи параметри форми. Але це далеко не єдина помилка.