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

    +129

    1. 1
    2. 2
    Func = fun(X, Y) -> if X > Y -> true; true -> false end end,
    ...

    Из одного из видеоуроков по Erlang.
    Удивлюсь, как можно было даже в этом языке сделать boolshit...

    Запостил: tirinox, 25 Декабря 2013

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

    • в каком уроке по erlang?
      Я знаю только http://erlang-mnesia-video.ru/
      Ответить
      • Что это за П-ц?)
        Набери в Ютубе "erlang уроки". Я ожидал найти там серьезных дядь, а нашел одно лишь школоло, которое вчера еще строило ловушки в майнкрафте, а сегодня создает за 5 уроков по 10 минут безотказный многопоточный распределенный сервер.
        Ответить
        • erlang настолько крут, что даже школоло, которое вчера еще строило ловушки в майнкрафте, может создать за 5 уроков по 10 минут безотказный многопоточный распределенный сервер
          Ответить
          • Мне нравится отношение эрланга к ошибкам выполнения - где то появилась ошибка? - отсекаем ветку исполнения нафиг!
            Ответить
            • Супервизор один хрен перезапустит упавший процесс :)

              Если есть необработанная ошибка, значит скорее всего состояние процесса уже запорото, и дальнейшая работа будет доставлять только косяки и проблемы. Это во всех языках так ;)
              Ответить
              • В erlang это сделано с особой элегантностью)
                Ответить
                • Ну в эрланге для этого неплохой фреймворк (OTP), на котором можно с легкостью запилить супервизоров, следящих за супервизорами, следящих за супервизорами...
                  Ответить
                  • И замкнуть их в кольцо!
                    Ответить
                  • А еще можно заниматься распределенным параллельным программированием даже не зная что это такое
                    Ответить
                    • > распределенным
                      Пока две ноды научишь спариваться - узнаешь ;)
                      Ответить
                  • Кто на часах над часовыми? (q)
                    Ответить
            • Одно дело, когда что-то слабозависищее от нас действительно упало.
              В других случаях говно какое-то получается.
              Не нашел в базе запись – нужно вернуть клиенту код ошибки, а не молча послать его...
              Ответить
              • Никто не мешает вернуть код ошибки ;)

                Принцип let it crash нужен, имхо, для непредвиденных ошибок, которые никто не обработал.
                Ответить
                • выглядит это как то так
                  http://www.youtube.com/watch?v=HcfHBgUTn7I
                  Ответить
                • When I find myself in times of trouble
                  Mother Mary comes to me,
                  Speaking words of wisdom -
                  Let it crash.
                  Ответить
    • А что именно не так то?)

      Ну кроме классического if true then true else false
      Ответить
      • Так классическое и есть.
        Func = fun(X, Y) -> X > Y end,

        Так лучше, наверное.
        Ответить
        • Func = fun(X, Y) ->
              X > Y
          end
          же.
          Ответить
        • Ну так этот пример почти в том же виду в офф документации лежит)
          http://www.erlang.org/doc/reference_manual/expressions.html
          пункт 7.7

          Это же для нубов а не для прокуренных админов
          Ответить
          • Понятно откуда это растет :)
            В документации этот пример для того, чтобы показать аналог else (т.е. если ничего больше не сработало) – делай по true->
            Все-равно пример неудачный.
            Ответить
    • > Удивлюсь, как можно было даже в этом языке сделать boolshit...
      Говно можно писать на любом языке... Кстати, а оно и в оригинале было в одну строку?
      Ответить
      • В одну.
        Ответить
      • > Говно можно писать на любом языке... Кстати, а оно и в оригинале было в одну строку?

        Это типичный пример оформления кода. В книжках и туториалах этот стиль называют "expressive and readable".

        Как по мне, основное говно что не пользуются `when`ом. Но для туториала это простительно.
        Ответить
        • Типа того?
          Fun1 = fun(X, Y) when X > Y -> true; (_, _) -> false end.
          Ответить
          • ну так это просто замена if записи на pattern matching.
            Ответить
            • но типа быстрее, т.к. это две функции и на рантайме быстрее функцию подходящую выбрать нежели чем внутри функции сравнение делать.

              по крайней мере в одном из туториалов так было написано. я сам только чуть дальше helloworld в эрланге продвинулся прежде чем забить. забил потому что синтакс мне совсем не читабельный - с ихними точками, запятыми и точка-с-запятыми.
              Ответить
              • в первом случае он просто выполнить ветку true а во втором пудет выяснять а картеж ли это.

                не вижу смысла в этот нано оптимизации
                Ответить
          • (_, _)

            В тему сайта...
            Ответить
    • Нужно выкинуть видеоуроки в байтреактор и читать книжку джо армстронга до наступления просветления.
      Ответить
      • > байтреактор
        Перерабатывает файлы в энтропию?
        Ответить
        • Файлы раззаписываются -> выделяется энергия -> и уже электрокомпания должна тебе)
          Ответить
      • Ты не думай, что я собрался учить Erlang по видеоурокам.
        Просто смотрел Ютуб в сортире, надоели эти Макс +100500 и КВН, решил вот глянуть, что по программированию там есть.
        Ответить
        • > в сортире
          Видеоуроки достойны обстановки
          Ответить
        • Хуясе у тебя жизнь
          Ответить
          • Ну знаешь, однажды надоедает читать текст на балончике освежителя, и ты покупаешь планшет...
            Ответить
            • А как же мысли в боге?)
              Ответить
              • Боюсь попасть в ад за мысли о боге в таком месте.
                Ответить
                • Я думаю, просмотр видеоуроков по эрлангу уже обеспечил тебе именное место в аду.
                  Ответить
            • Ты там проводишь большую часть сознательной жизни, раз ради этого купил планшет? :)
              Ответить
              • Да как этот сайт почитаю, сразу хочется... Ну вот опять!
                Ответить
                • это здорово и хорошо что оно у тебя вот так просто и бысро выходит.
                  Ответить
    • сейчас придёт @wvxvw и начнёт писать длинные и скучные комменты про
      #'>
      In soviet haskell it's just
      (>)
      Ответить
      • (apply #'> '(5 3))
        T

        Ты об этом?
        Ответить
        • Типа того. Эквивалентность функций и операторов на практике довольно удобна.
          /me с досадой смотрит на std::less
          Ответить
      • > (>)
        Жопа с ручкой. Сорри за оффтоп.
        Ответить

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