On Fri, Oct 16, 2015 at 09:43:25PM +0300, Artem Chuprina wrote:
> Vladimir Zhbanov -> debian-russian@lists.debian.org  @ Fri, 16 Oct 2015 
> 18:51:37 +0300:
> 
>  >> Я иногда тоже хочу параметров по умолчанию, но сильно подозреваю, что
>  >> это пережиток языков с duck typing.  На практике, учитывая, что язык
>  >> компилируемый, всегда можно либо добавить пару параметров и поменять все
>  >> (найденные компилятором) вхождения вызовов, добавив туда дефолтные
>  >> значения, либо, что чаще, одновременно со вводом дополнительных
>  >> параметров переименовать функцию, а старое имя определить как
>  >> каррирование нового.
>  VZ> А что если параметров десяток-два?
> 
> Тогда кто-то что-то делает не так.
Ожидаемый общий ответ. Типичный пример про кучу параметров, например, в
документации guile, он про графическое иксовое окошко, написанное хз на
чём, ну, скажем, на gtk, которое имеет кучу параметров только иксовых.
Или, например, взять тот же xrandr. Что если кто-то захочет сделать его
функцией для использования в модуле для какой-то графической хрени. Я не
буду приводить свои более спицфицкие примеры, но вот это -- такое
использование -- неправильно? Ты считаешь, правильно делать кучу функций
для каждой отдельной ерунды? Или таки вызвать 'такое окошко шириной
столько-то и высотой столько-то, со всеми остальными параметрами по
умолчанию' допустимо на твой взгляд? (Не, сразу оговорюсь, я здесь ни
разу не хочу спорить о том, кто должен решать размер окна, юзер или wm,
это о другом, есличо.)

> 
>  VZ> И, прошу прощения за невежество, что в языках с duck typing хуже по
>  VZ> сравнению с языками со статической типизацией, если не считать размер
>  VZ> объектного кода из-за проверок типа? Не знаю за другие языки (и даже за
>  VZ> другие лиспы), дюже не пробовал, но в guile scheme (который я пытаюсь
>  VZ> начать осваивать в последние пару лет) вопрос размера объектного кода
>  VZ> сейчас во многом решается на этапе прекомпиляции (если я правильно понял
>  VZ> одного из авторов), причём работа в этом направлении идёт масштабная.
> 
> Основная проблема заключается в том, что почти любая проблема выявляется
> только в рантайме.  Как раз размер объектного кода чем дальше, тем
> меньше важен.  А вот время на разработку...
Ага, понял, спасибо.  Таки ты считаешь си++ лучше лиспов в отношении
времени на разработку (из-за статической типизации; не говорю про
обычный си, искал, но не нашёл его в списках языков ни с динамической,
ни со статической типизацией; каюсь, ленивый, смотрел только в
"авторитетной" википедии)? Или сие касается только Haskel vs 'все
остальные'?

Ответить