Ответы пользователя по тегу Erlang
  • 8 != 8.0 в Erlang - Почему так?

    begemot_sun
    @begemot_sun
    Программист в душе.
    rem это целочисленная операция.
    8 - это целое число (int)
    8.0 - это дробное число (float).

    сравнение по значению:
    8> 8 == 8.0.
    true
    12> 8 /= 8.0.
    false

    сравнение по значению и типу
    9> 8 =:= 8.0.
    false
    10> 8 =/= 8.0.
    true

    я рекомендую всегда использовать сравнение по значению и типу .. это надежнее.
    Ответ написан
    Комментировать
  • Erlang/Elixir нужно ли разбирать Erlang перед изучением Elixir? Или нет?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Для более глубокого понимания идущих внутри процессов - конечно нужно. Особенно про OTP и паттерны проектирования.
    В целом Elixir дает делать более абстрактный код, но за счет этого гораздо легче выстрелить себе в ногу.
    Ответ написан
    Комментировать
  • Как отправить tcp запрос от Qt клиента erlang серверу?

    begemot_sun
    @begemot_sun
    Программист в душе.
    У вас проблема на стороне вашего Qt кода. А именно неверная сериализация в структуры Эрланга.
    Cм ссылку: erlang.org/doc/apps/erts/erl_ext_dist.html
    для описания этого формата.
    Ответ написан
    Комментировать
  • Рекурсивная функция на практике?

    begemot_sun
    @begemot_sun
    Программист в душе.
    В общем случае рекурсия это когда функция вызывает саму себя.

    Возьмем числа фибоначи: f(x)=f(x-1)+f(x-2), f(0) = 1, f(1) = 1

    Erlang код:
    ```
    f(0) -> 1;
    f(1) -> 1;
    f(X) -> f(X-1)+f(X-2).
    ```
    Это общая рекурсия, она не может быть оптимизирована т.к. результат исполнения зависит от результата исполнения той же функции с другими аргументами. Но данный результат зависит от чего-то еще, поэтому рекурсия не может быть оптимизирована (не хвостовая).

    Любой цикл:
    ```
    for i=10 to 1:
    do_something
    ```
    loop(0) -> ok;
    loop(N) ->
    do_something,
    loop(N-1).
    ```

    В данном случае рекурсия зовется хвостовой, т.к. результат текущего выполнения функции есть полностью результат выполнения функции для следующей итерации. Т.е. в данном случае компилятор\интерпретатор может не заботиться о том. чтобы отслеживать из какой функции была вызвана текущая функция. Он просто запомнил точку входа в данную рекурсию, и теперь знает что результат самого первого вызова будет результатом самого последнего.
    Т.е. другими словами вызов loop(3) будет эквивалентен коду:
    ```
    loop(3),
    loop(2),
    loop(1),
    ok.
    ```
    это обычный линейный код, который никак не является рекурсивным в общем смысле этого слова.
    Ответ написан
    3 комментария
  • Нельзя что ли нейросеть на зеленых потоках?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Сделать можно. Вопрос эффективности.
    В одном потоке вы можете обработать один нейрон, но эффективнее будет целую сеть .
    Т.о. вы приходите к тому, что обрабатывать нужно параллельно несколько сетей.
    Теперь с учетом того, что сеть вы будете обрабатывать с помощью TensorFlow и т.п. приходим к тому, что Erlang нужен лишь для того, чтобы быть клеем между такими частями программы.
    Ответ написан
    Комментировать
  • Необходимо переписать кусок erlang-кода php. Как?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Давайте по-русски напишем:
    $a = $salt + $password;
    $hash = хеш sha512 от $a

    а что такое util_hex:from_binary я хз
    предположу что перевод из двоичного представления в шестнадцатеричное
    Ответ написан
    Комментировать
  • Какие перспективы есть у Elixir?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Язык для хипстеров.
    Приходит такой хипстер со своим стартапом и говорит: у меня есть классная идея, давайте запилим ?
    А на чем пилить будем ?
    ну вот тут есть говорят руби, он такой няшный но тормоз.
    оо .. так вот есть эликсир, он тоже руби-лайк, но не тормоз.

    И короче начинается девелопмент для эликсире, такой себе веб-сайт на эликсире.
    На самом деле продукт нишевый, потому что построен на Эрланге. И когда задают вопрос, для чего эликсир - да для того же самого что и Эрланг, только с бОльшими возможностями выстрелить себе в ногу, но и большими выразительными средствами языка.
    А по факту что Эрланг, что Эликсир, компилируются в BEAM-код для Эрланг виртуальной машины. Т.о. все это дело взаимозаменяемое, и либы для эликсира можно использовать для эрланга и наоборот.

    По сути если люди используют эликсир для веба, то обязательно вместе с фреймворком Феникс. Это такой фреймворк, где очень много умолчаний, и просто показывается как надо делать, но чтобы было объяснение что-к-чему, то это надо лезть в исходники, там много "магии", которая скрывается самим фреймворком.

    Для тех кто знаком с Эрлангом и использует его каждый день, Elixir must have.
    Для тех кто только пришел, и не знаком с Эрлом, Elixir это такой быстрый язык-фреймворк, который позволяет тяп-ляп-и-в-продакшн. Наврядли люди понимают все архитектурные ограничения, и как там оно внутри под капотом.
    Ответ написан
    2 комментария
  • Что не так с сервером, что erlang net_adm:names() выдаёт {error,address} при запуске?

    begemot_sun
    @begemot_sun
    Программист в душе.
    erlang.org/doc/man/net_adm.html#names-0

    names() -> {ok, [{Name, Port}]} | {error, Reason}
    names(Host) -> {ok, [{Name, Port}]} | {error, Reason}
    Types
    Host = atom() | string() | inet:ip_address()
    Name = string()
    Port = integer() >= 0
    Reason = address | file:posix()

    Similar to epmd -names, see erts:epmd(1). Host defaults to the local host. Returns the names and associated port numbers of the Erlang nodes that epmd registered at the specified host. Returns {error, address} if epmd is not operational.
    Ответ написан
  • Для чего можно использовать Erlang?

    begemot_sun
    @begemot_sun
    Программист в душе.
    > А можно ли на нём писать вещи не касающиеся Веб разработки?
    www.wings3d.com
    Где-то еще был Erlang messanger c GUI, но за давностью лет забыл о нём.
    Ответ написан
    Комментировать
  • Почему нет IDE для функциональных языков программирования?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Erlang plugin для INTELLIJ IDEA чем не подошел ?
    Ответ написан
    Комментировать
  • Как импортировать модули из различных каталогов?

    begemot_sun
    @begemot_sun
    Программист в душе.
    При запуске erl прописывать путь до .beam файлов.
    Пример: erl -pa some/path.
    В исходниках ничего делать не надо. Просто используйте имя модуля как оно есть.
    Ответ написан
    Комментировать
  • Какие книги почитать по функциональному программированию?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Касаемо Эрланга.

    Изучай эрланг во имя добра. Дмкпресс.

    Для вводного достаточно.

    Что касается эрланга и хаскеля - это примерно как пхп и сиплюсплюс в обычном мире. Выбирайте что вам ближе.
    Ответ написан
    Комментировать
  • Кто нибуть пробовал уже Elixir и Phoenix?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Да это просто сделали RoR похожим чтобы войти на этой волне. На самом деле, это ни разу не RoR.
    В целом stdlib Elixir впечатляет, и мне нравится.
    Феникс - слишком много магии, который я не осилил. :)
    Ответ написан
    1 комментарий
  • Онлайн чат для сайтов: node.js / erlang / другое?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Здравствуйте, Александр.

    Для публики: Я - это тот самый разработчик, который предлагает Erlang.
    Давайте теперь по пунктам:
    1. Erlang :)
    2. Я не специалист в node.js, не скажу. Я уже писал вам в письмах почему Erlang.
    3. Абсолютно не страшно. "Erlang учится за 2 недели, то есть за год можно выучить до 26 Эрленгов" ( tonsky.livejournal.com/281876.html )
    4. Наверное есть.
    5. Я бы усомнился в вашей адекватности. Предоставив какую-то мокап админку, вы просите оценить стоимость и объем работ по серверу-чата. При этом абсолютно уверуя, что мне достаточно информации.

    Также вы всегда можете найти ерланг разработчика в русской расылке Erlang:

    https://groups.google.com/forum/?utm_source=digest...

    Удачи.
    Ответ написан
    Комментировать
  • Какие есть русскоязычные ресурсы для изучения Elixir?

    begemot_sun
    @begemot_sun
    Программист в душе.
    wunsh.ru -- только там материалы в виде рассылки приходят, и на сайте не доступны :-?

    https://habrahabr.ru/hub/erlang/
    https://habrahabr.ru/hub/elixirphoenix/
    Ответ написан
    Комментировать
  • Дебажу erlang io:format('text ~p', [Variable]) падает при каждом чихе, как смотреть что находится в переменных?

    begemot_sun
    @begemot_sun
    Программист в душе.
    io:format('text ~p', [Variable])
    а вы кавычки те ли поставили ?

    может надо ?
    io:format("text ~p", [Variable])
    Ответ написан
    Комментировать
  • Пишу чат на erlang ковбой, вебсокет соединение идет но как будто каждый юзер в своем канале?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Все верно, вебсокеты это просто тунель от вас к серверу. Вам надо еще организовать чат комнату и туда слать сообщения от юзеров. А чат комната будет пересылать сообщения другим.
    Ответ написан
    Комментировать
  • Что производительнее Go или Erlang?

    begemot_sun
    @begemot_sun
    Программист в душе.
    В числодробилках Go побеждает.
    https://benchmarksgame.alioth.debian.org/u64q/comp...

    в более реальных кейсах я думаю одинаково.

    В общем надо исходить того что вам нужно.
    Если легко и не принужденно работать множить задачи на все ядра проца + перекладывать байтики из одного сокета в другой, то Erlang в самый раз. Насчет Golang сказать не могу, не использовал.
    Сам практикую Erlang уже 5ый год. Доволен.
    с PHP сравнивать смысла нет.
    Ответ написан
    4 комментария
  • Подходт ли elixir для highload web-сервиса?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Я ерлангер. Для начала опишите ваш кейс. Просто странички генерировать может кто угодно, где-то это быстрее, где-то это медленнее. Вы вообще можете переписать все на C/C++, летать будет - гарантирую.

    По части Erlang/Elixir. По сути это одно и тоже, только в разной обертке. Все это выполняется на Erlang VM.
    Cчитаю Elixir в настоящее время больше заточен для веб наличием разного рода либ, типа Феникса или ORM Octo (так кажется?).
    В Erlang это более низкоуровневые либы, но и свободы творчества больше.
    Есть всякие N2O, Nitrogen и т.п.

    Что хорошо в этих языках, так это:
    1. Вы можете не использовать сторониие сервисы чтобы хранить состояние. Все может хранится в памяти.
    2. Вы легко можете распаралелить работу на несколько ядер (если это позволяет задача). Никакой PHP не даст тут такой гибкости.
    3. Вы можете быть уверены в надежности. Можете контроллировать когда приложение будет падать, а когда нет.
    4. Ну всякие бенчмарки: www.ostinelli.net/a-comparison-between-misultin-mo...
    5. Да еще. Erlang/Elixir-приложуху можно прозрачно кластеризовать на несколько машин, конечно она должна это поддерживать.
    Ответ написан
    3 комментария