- 1
-type maybe(A) :: A | nothing.
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−12
-type maybe(A) :: A | nothing.
Erlang, dialyzer spec. Коротко и в точку.
CHayT 16.02.2017 18:39 # +1
Elvenfighter 16.02.2017 18:55 # +6
roman-kashitsyn 17.02.2017 18:02 # +3
barop 17.02.2017 18:22 # 0
barop 17.02.2017 18:23 # +2
Лол! Единственный язык без типизации это forth
CHayT 17.02.2017 19:32 # 0
Хм. Не понял, как ты пришёл к выводу, фанаты диалайзера утверждают, будто типы не нужны. Скорее наоборот, динамический питух -- это печальное легаси.
Тут говно в том, что maybe умудрились списать с хаскеля неправильно: что видно на примере maybe(maybe(A)) и maybe(term()).
roman-kashitsyn 17.02.2017 19:47 # 0
Именно поэтому в хорошо продуманных языках, зарекомендовавших себя в продакшене, используются стоящие особняком инструменты проверки типов, наподобие dialyzer в эрланге. Они помогут отловить ошибки, но не заставляют разработчика танцевать с арбузом вприсядку, если функция вдруг легитимно полиморфна.
> maybe умудрились списать с хаскеля неправильно
Видимо, это надо было уточнить в комментарии к посту.
CHayT 17.02.2017 20:09 # 0
Не стоит обобщать мнение одного человека, и тем более посетителя швабры, на фанатов диалайзера.
> Видимо, это надо было уточнить в комментарии к посту.
Мне это очевидным казалось.
roman-kashitsyn 17.02.2017 20:14 # +1
>> есть живые фанаты диалайзера
Хм, похоже, пора писать кванторами, чтобы фразы интерпретировались правильно.
∃, а не ∀
dxd 17.02.2017 21:07 # +2
roman-kashitsyn 17.02.2017 22:55 # +3
И Вена мне очень нравится
Кстати, вот люди говорят, что, мол, разработка софта — это ремесло, а не техническая наука. Я не согласен. Мне кажется, разработка не слишком отличается от научной деятельности.
Что важно в науке? Нужно уметь выдвигать гипотезы, строить модели, правильно производить измерения, собирать доказательства в подтверждение своих гипотез, записывать результаты.
Чем это отличается от того, что должны уметь делать программисты? Да ничем. У нас просто данных больше, и мы можем работать гораздо быстрее.
* Нормальный софт нынче обвешан метриками (потребление памяти, процессора, диска, сеть, QPS, etc.), которые надо уметь правильно собирать и анализировать.
* Все наши "оптимизации" без доказательств в виде реальных измерений метрик до/после — пустые слова и расход времени. Разумеется, желателен правильный эксперимент, чтобы одна и та же нагрузка проверялась разными версиями софта.
* Багтрекер — это журнал с наблюдениями. По уму нужно класть туда всё, что может иметь отношение к "исследованию", все "улики": гипотезы и результаты их проверки, куски логов, участки кода, коммиты с фиксом, etc. А то воспроизводишь багу, закрытую 2 года назад, а там один коммент от разработчика: "Fixed".
barop 17.02.2017 23:20 # +2
inkanus-gray 18.02.2017 23:45 # +4
CHayT 17.02.2017 21:20 # 0
Тупею, так что да, кванторы нужны.
barop 17.02.2017 19:56 # 0
>>А жесткая типизация приводи
Ай, мели емеля, твоя неделя: статическая типизация равно жесткая типизация и противопоставляется отсутствию типизации
roman-kashitsyn 17.02.2017 19:58 # 0
barop 17.02.2017 20:05 # 0
ну ради бога. Это как если я в джаве буду все переменные как Object объявлять, и кастить перед самым вызовом, да?
Только вот жесткая(строгая) типизация это вообще не про то. Она про автоматический кастинг, раширение итд.
CTEPTOP 17.02.2017 20:16 # 0
@ну ради бога
Возможно, Вы имели в виду "ради бага" ?