Мои мысли по теме Статика sv. Динамика
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.11.06 20:56
Оценка: 35 (4) +3 -7 :))
Тема ушла в полнейший аут. Так что лазить по ней нет никакого желания. Если у кого есть желание, то можете выскаться здесь.

Защитники статической типизации не то что бы верят, во что-то. Они пользуются доказанными фактами. А вот их оппоненты именно что верят. Причем, почему-то споря с защитниками статической типизации, они спорят не с их утверждениями, а с некими вымышленными.

Так, похоже, что в этой дискуссии ни один защитник статической типизации не говорит, что тесты это плохо. Они говорят другое. Они говорят, что тесты — это не всегда возможно. Что тесты не гарантируют отсутствия ошибок. И говоря, что с точки зрения надежности и простоты модификации кода лучше иметь статически типизированную программу с тестами, чем динамически типизированную с ними же.

Если подумать, то спорить с подобными утверждениями может только полоумный. Но как не странно находится на удивление не малое количество спорщиков.

Мне кажется, что очевидно, что при прочих равных статическая типизация лучше. Так что выбор динамики — это однозначный компромисс. Раз так, то этот выбор может быть оправдан, только при условии, что динамика дает какие-то существенные преимущества по сравнению со статикой.

И разумно было бы повернуть обсуждение именно в эту сторону. Потому как если таких преимуществ или они не значительны, то мы наблюдаем форменное проявление фанатизма и не желания видеть факты.

Пока что из преимуществ динамики я слышал:
1. Отсутствие аннотаций типов замусоривающих код. Мало того, что это утверждение спорно (многие считают аннотацию типов средством документирования и дополнительной информацией), так оно еще и ложно, так как есть очень нехилые СТЯП (статически типизированные языки программирования) занимающиеся выводом типов и не требующие наличия аннотаций или сокращающие их применение до мизерных величин.
2. Программу можно сделать гибче принимая решение в runtime-е. Да, само по себе это так. Но современные СТЯП без проблем позволяют делать это. А во многих случаях помогает метапрограммирование. Оно к тому же дает более надежный и более производительный код.
3. Более интерактивный режим разработки. Да, это, пожалуй, единственно верный пункт. Но и но скорее является обманом. Ведь современные СТЯП тоже предоставляют весьма интерактивный режим разработки. Фактически сегодня они не умеют править структуру типов на ходу. Но так ли это важно если на правку приложения и его перезапуск уходят считанные секунды? На мой взгляд совершенно не важно. По крайней мере остальные преимущества СТ (статической типизации) явно перевешивают этот недостаток.
4. Код на ДТЯП (динамически типизированные языки программирования) меньше и его легче держать в голове. Это откровенная лож. Но эта лож пожалуй чаще всего повторяется поклонниками ДТЯП. А чтобы эта лож не выглядила очень уж явно она всегда преподносится на фоне ЯП вроде С и С++ чья выразительность уже давно оставляет желать лучшего. Правда же заключается в том, что выразительность языка (а именно она определяет сколько кода нужно для выражения одной мысли) определяется не типом типизации, а количеством и качеством реализованных в них языковых конструкций (и/или средств расширения языка). Так ДТЯП чаще всего пиаримые на этом форуме — Питон и Руби существенно проигрывают как ДТ Эрлэнгу, так и СТ Nemerle-у просто потому, что в их арсенале нет таких мощных средств как алгебраические типы и сопоставление с образцом.

Если список не полон, то дополните его. Конкретно этот список на мой взгляд явно показывает надуманность гипотезы о преимуществе ДТЯП перед СТЯП.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.