Re[23]: DSL'и и инструменты для них
От: WolfHound  
Дата: 05.08.15 15:38
Оценка: :)
Здравствуйте, meadow_meal, Вы писали:

_>1) Динамика удобнее при интеграции с другими динамическими системами или сервисами, о типизации которых на этапе компиляции ничего не известно.

Ничего не сможешь с этим сервисом сделать. Даже обратится к нему не сможешь.
Либо тебе известен контракт. А если есть контракт, то уже есть типы.

_>Примеры — работа с удаленным rpc-сервером без схемы, чтение данных из базы если схема заранее неизвестна, стык с другими динамическими системами, в общем все юзкейсы для которых ms ввел dynamic.

И что ты будешь дальше делать?
Максимум что ты можешь сделать, это распечатать то, что ты получил.
Это при условии, что ты вообще смог к нему обратиться.

А вот если ты хочешь сделать что-то осмысленное, то тебе нужно знать что там лежит
Вот тут уже и появляются статическая типизация.

_>2) Динамика удобнее, когда статическая типизация в имеющихся альтернативах недостаточно гибка. Например когда нужно объединение типов — вот в Nemerle есть variant, но что делать если одна переменная имеет тип A | B | C | D, а другая — A | C | E | F?

Это легко делается.
Просто это нужно настолько редко что никто это не делает.
Но если тебе так хочется, к немерле 2 я это прикручу.

_>Ну а если в языке даже неуклюжего variant/pm нет, то вообще туши свет — мысль, которая могла быть выражена лаконично, растекается.

Так в большинстве динамически типизированных языков этого тоже нет.

_>Да что там, в большинстве языков даже тип со значениями ( T | null (значение отсутствует) | undefined (значение не определено) ) уже страшная проблема.

Мы всё ещё говорим про динамическую типизацию, где в переменной может быть любое говно?

_>3) Системы с горячей заменой кода. Наверное, удачно совместить ее со статической типизацией в принципе возможно, но пока на этом поле играет динамика.

Ну, она много где играет только по тому, что никто статику засунуть не пробовал.

_>Когда в руках молоток, все вокруг кажется гвоздями. Если проблемы типизации должно решать метапрограммирование, то у типизации проблема.

Дело в том, что динамическая типизация позволяет некоторое метапрограммирование.
Так что если в языке нет метапрограммирования, то сравнение будет просто не корректным.
Ну и вывод типов ты изящно проигнорировал.

_>Как и все трюизмы, эти, верные в целом (если, конечно, опустить "100 строк"), могут не соответствовать действительности в конкретных условиях.

Когда конкретно они не соответствуют действительности?

_>Например, почему-то поддержка того же Эрланга со стороны ИДЕ намного лучше, чем существующая на данный момент поддержка Nemerle.

Я ещё не видел ни одной ИДЕ для динамически типизированных языков, которую не мог бы запутать десятком строк кода.

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

Пока что таких причин так и не назвали.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.