1. Куча / Говнокод #22344

    −12

    1. 1
    -type maybe(A) :: A | nothing.

    Erlang, dialyzer spec. Коротко и в точку.

    Запостил: CHayT, 16 Февраля 2017

    Комментарии (18) RSS

    • SEO: #опердени #квазистатическийпитух #язнаюhaskell
      Ответить
    • Как оказалось, "Nothing" -- сингл группы "A".
      Ответить
    • Хм, оказывается, есть живые фанаты диалайзера, отверждающие, что хорошему программисту типы в 99% только мешают, а плохого программиста — никакие типы не спасут
      https://habrahabr.ru/post/321862/#comment_10076362
      Ответить
      • лол, да 15 лет назад половина питонистов говорила тоже самое про стат типизацию. А теперь у них pep-484.
        Ответить
      • >>языку типизация вообще не нужна

        Лол! Единственный язык без типизации это forth
        Ответить
      • > отверждающие
        Хм. Не понял, как ты пришёл к выводу, фанаты диалайзера утверждают, будто типы не нужны. Скорее наоборот, динамический питух -- это печальное легаси.
        Тут говно в том, что maybe умудрились списать с хаскеля неправильно: что видно на примере maybe(maybe(A)) и maybe(term()).
        Ответить
        • > Не понял, как ты пришёл к выводу, фанаты диалайзера утверждают, будто типы не нужны

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

          > maybe умудрились списать с хаскеля неправильно

          Видимо, это надо было уточнить в комментарии к посту.
          Ответить
          • > quote
            Не стоит обобщать мнение одного человека, и тем более посетителя швабры, на фанатов диалайзера.
            > Видимо, это надо было уточнить в комментарии к посту.
            Мне это очевидным казалось.
            Ответить
            • > Не стоит обобщать мнение одного человека
              >> есть живые фанаты диалайзера

              Хм, похоже, пора писать кванторами, чтобы фразы интерпретировались правильно.
               фанат диалайзера f: мнение(f) содержит "хорошему программисту типы в 99% только мешают"

              ∃, а не ∀
              Ответить
              • Роман Карнап.
                Ответить
                • Ого, спасибо за наводку, не слышал раньше о Рудольфе Карнапе.
                  И Вена мне очень нравится

                  Кстати, вот люди говорят, что, мол, разработка софта — это ремесло, а не техническая наука. Я не согласен. Мне кажется, разработка не слишком отличается от научной деятельности.

                  Что важно в науке? Нужно уметь выдвигать гипотезы, строить модели, правильно производить измерения, собирать доказательства в подтверждение своих гипотез, записывать результаты.

                  Чем это отличается от того, что должны уметь делать программисты? Да ничем. У нас просто данных больше, и мы можем работать гораздо быстрее.

                  * Нормальный софт нынче обвешан метриками (потребление памяти, процессора, диска, сеть, QPS, etc.), которые надо уметь правильно собирать и анализировать.
                  * Все наши "оптимизации" без доказательств в виде реальных измерений метрик до/после — пустые слова и расход времени. Разумеется, желателен правильный эксперимент, чтобы одна и та же нагрузка проверялась разными версиями софта.
                  * Багтрекер — это журнал с наблюдениями. По уму нужно класть туда всё, что может иметь отношение к "исследованию", все "улики": гипотезы и результаты их проверки, куски логов, участки кода, коммиты с фиксом, etc. А то воспроизводишь багу, закрытую 2 года назад, а там один коммент от разработчика: "Fixed".
                  Ответить
                  • "разработка софта" это очень широкое понятие. Бывает ремесло, а бывает и наука.
                    Ответить
                    • А уж разработка фронтенда/бекенда — это ещё более широкое понятие, чем разработка софта.
                      Ответить
              • Наконец дошло, как были расставлены акценты в первоначальном посте.

                Тупею, так что да, кванторы нужны.
                Ответить
    • >>https://habrahabr.ru/post/321862/#comment_10076362
      >>А жесткая типизация приводи

      Ай, мели емеля, твоя неделя: статическая типизация равно жесткая типизация и противопоставляется отсутствию типизации
      Ответить
      • https://existentialtype.wordpress.com/2011/03/19/dynamic-languages-are-static-languages/
        Ответить
        • >> Dynamic typing is but a special case of static typing
          ну ради бога. Это как если я в джаве буду все переменные как Object объявлять, и кастить перед самым вызовом, да?

          Только вот жесткая(строгая) типизация это вообще не про то. Она про автоматический кастинг, раширение итд.
          Ответить
          • @Dynamic typing is but a special case of static typing
            @ну ради бога
            Возможно, Вы имели в виду "ради бага" ?
            Ответить

    Добавить комментарий