что такое Erlang? это первый функциональный язык общего назначения, разработанный, в первую очередь, для промышленных нужд. в отличие от того же хаскелла, erlang создавался не для бесконечного аутирования над кучей абстракций (и мастурбацией на свою охуительность), которые надо было каким-то образом повязать друг с другом, а для решения прикладных задач – в первые годы его существования такие нужды определила сфера телекома. язык разрабатывался в CSLab с середины восьмидисятых и был представлен уже компанией Ericsson для промышленного использования в 95 году, и сразу же взорвал общественность своим появлением.
>>1109086 (OP) В Эрланге/Элексире полезна в основном только натуральная параллелизация и отказоустойчивость всего с этим связанного. Очень ситуационный язык/семейство языков, на мой взгляд.
>>1109087 Это язык для некоторых аспектов промышленного кода, имо. Вообще странно его немного выделять в отдельный тред, тред о ФП в целом зашёл бы лучше.
>>1109088 Создавать треды широкой направленности имо не очень продуктивно, потому что разговор будет идти обо всем, и не о чем одновременно. Если бы делал тред про фп, то делал бы его максимально оторванным от языка и больше о теории.
По поводу нишевости тут достаточно спорно. Я как евангелист вижу скорее то, что на Erlang можно code the world для всего, где не нужны числовые операции (хотя даже это ограничение легко можно обойти с помощью нифов) и воспринимаю ERTS больше как полноценную ОС, чем просто язык. Тред и создал затем, чтобы внести свою лепту в популяризацию языка, чтобы скрипткиддис и ноде.жс брейнлеты познали настоящую силу HPC.
Правильно ли я понял, что Erlang похож на Go? По сути, многопоточность в нем такая же? “Do not communicate by sharing memory; instead, share memory by communicating”?
>>1109094 Go не альтернатива Erlang для бекенда, где доступность и низкая задержка для большого числа одновременных запросов является обязательным требованием.
Работы на нём нет нихуя удаленной :-/ Так-то я уже в трех конторах проекты на нём прострелял, но вот фиг теперь удалёнку на нём найдешь. Приходится страдать с жавой, дотнетом и жабаскриптом.
>>1109088 Не зайдёт он в треде о ФП. Erlang/Elixir надо в разрезе конкурентного программирования/распределённых систем обсуждать: actor model, flow-based-programming, reactive streams вот этого всего.
>>1109088 Не согласен. В эрланге ценность ФП заключается в довольно базовых вещах: иммутабельность, TCO, pattern matching. Хуль тут обсуждать то? А вся польза лежит в пиздатом рантайме и в actor model.
>>1109095 Поясни почему у го будут какие-то проблемы с задержкой на высоких RPS? Я читал похожий блог-пост 200мохнатого года, до того как в Go сделали пиздатый GC, который подходит для soft real time. Можно с бенчмарками.
Алсо, вам не кажется, что дефолтные для Эрланга механизмы кластеризации немного ограничены для реального мира, когда постоянно происходят net split'ы? Нет ли более мощной либы для этого?
>>1110090 Самая большая проблема разработки – сложность кода как правило превышает способности человеческого мозга. Поэтому главные критерии кода должны быть: простота и понятность (ваш кэп)
>>1110090 > Бля, ну чет там короч ебаться надо было с отп, мы не разобрались короче, а тут у нас уже целый отдел сидит костыли на крестах хуярит, ну хуль мы, зря им деньги платим что ли? пусть еще костылей нахурят, зато свое, родное, invented here
Я охуеваю с их практик разработки, например. Из этой же серии их история про то, что они наговнячили свой сайтик на пхп, а потом ВНЕЗАПНО обнаружили, что под нагрузкой оно тормозит и постоянно падает, а еще слаботипизированную динамикодрисню оче трудно поддерживать - и что они сделали? НУ КОНЕЧНО накостылили свой тайпчекер для пхп и навелосипедили свой компилятор для пхп. Просто пиздец, ебаная галера.
>>1110466 Эрлангую адеквата. У меня такое же отношения к их говноподходам и к их HHVM. Они просто руководствуются техникой запила быстро чтобы бабки рубить, а в случае проблем сделать оптимизацию. И заодно других говном полить не забыть.
>>1110497 >быстро чтобы бабки рубить, а в случае проблем сделать оптимизацию Так в том все и дело, что они НЕ пилят прототип, выкидывают, пишут стабильную версию, грубо говоря. Они пилят прототип, а потом обмазывают его сотнями костылей, просто потому что NIH и чтобы иметь контроль над максимальным количеством кода. Эдакий младший брат-дауненок у гугла.
Тот же реакт - концептуально говновелосипед, переизобретающий webcomponents и virtual dom просто потому что МЫ ФЕЙСБУК, МЫ МОЖЕМ ССАТЬ НА СТАНДАРТЫ, АХАХАХА.
>>1110523 >говновелосипед, переизобретающий webcomponents и virtual dom -- вот буквально вчера ночью о том же думал. Почему не могу с новой строки написать, абу совсем охуел?
>>1110090 >one server in the group would fail and cause cascading issues И это в заизолированном асинхронном мирке акторов. Если нормальную топологию построить не могёшь, то никак ершланг не поможет, да.
>we found a number of instances where Erlang wasn't scaling well to multiple cores. А по докладам он скейлился отлично даже не тысячеядерной Paralella.
Ну и ушли обратно жрать говно на сипипи, ясно.
А по факту: ни кода, ни конкретных проблем, о чём базар вообще? Конечно хотелось бы верить что фб-шники не просто хипстеры меняющие шило на мыло каждый год, и у них действительно были реальные причины, но в посте никакой конкретики же.
>>1111333 Всё остальное можно оставить, но конкретно абзац про Elixir лучше переписать или вообще выпилить.
>"erlang для ленивых" Не совсем понятно. Имеется в виду что есть масса полезных абстракций, а значит не понадобится набивать кучу лоулевельного бойлерплета? Но с другой стороны эти абстракции нужно будет изучать и уметь применять, так что хз насчет "для левнивых".
>по сути – erlang с ruby синтаксисом. Какая глупость. Там от руби синтаксиса почти ничего не осталось, кроме do end блоков и ещё пары мелочей. Ну и да, это больше чем erlang с руби синтаксисом, что уже не раз обсуждалось в Erlang/Elixir тредах.
>на самом деле, можно начать с него погружение в erlang-среду На самом деле Elixir надо рассматривать как отдельный язык, и перекот с него в Erlang это как перекот со скалы в джаву, или с крестов в сишку, т.е. такие уникумы конечно найдутся, но это скорее исключение.
>всё вышеописанное действительно и для Elixir, но у него намного проще абстракции Штооу? У него сложнее абстракции, их больше и они разнообразнее. Это как раз ерланг простой и прямой как палка (в чём конечно есть определённое преимущество).
>а и комьюнити у него, как ни странно, более активное Ну да, следует напомнить что в плане активности комьюнити Elixir за три года своего существования обогнал Erlang в несколько раз. Как ни странно, ведь это всего лишь "Erlang с руби-синтаксисом".
>но я бы не советовал, честно, на нем зацикливаться, потому что Elixir много вещей пересоздает заново В смысле? Он ничего не пересоздаёт заново, везде где можно и целесообразно используется то, что уже есть в erlang, другое дело, что в последнем для комфортной разработки чего-то, кроме прошивки для роутеров, толком ничего и нет. Более того erlang суппортеры и комьюнити настолько распиздяйское, что даже типовые проблемы в лучшем случае выносили во внешнюю недолибу, в худшем вообще ничего не делали, продолжая из проекта в проект набивать однотипный бойлерплет. Сейчас, с появлением Elixir ситуация несколько улучшилась, одни работают над языком (эликсиром), другие над вмкой (в основном). И судя по последним изменениям, влияние первых на вторых таки усилилось, и благодаря этому в языке наконец-то появятся вменяемые сообщения об ошибках (и это в 2017 году), если бы не Джозе, так всю жизнь жили бы с error: bad argument.
>чтобы хорошо писать на elixir нужно все же хорошо познать erlang/OTP Это вовсе не обязательно. Ну вернее OTP обязательно, но это можно сделать и в контексте Elixir. К тому же там есть некоторые отличия, например в Elixir GenEvent был справедливо выкинут нахуй, сразу с выходом GenStage, хотя и без него это имело смысл.
Итого: Elixir нужно рассматривать как отдельный язык, и из шапки про Erlang вовсе выпилить, чтобы не сбивать неофитов с толку. А про Elixir пусть спецы по Elixir расскажут а не предвзятые телебайтоёбы у которых уже всё есть и ничего не нужно.
>ни кода, ни конкретных проблем, о чём базар вообще? Конечно хотелось бы верить что фб-шники не просто хипстеры меняющие шило на мыло каждый год, и у них действительно были реальные причины, но в посте никакой конкретики же. У вас ООП
>>1109086 (OP) >в отличие от того же хаскелла, erlang создавался не для бесконечного аутирования над кучей абстракций Как-то противно сразу стало, повеяло оскорбляющими друг-друга школьниками, травлей, аргументами ад хоминем и прочим пиздецом.
>>1115510 > В рашке на Erlang/Elixir вакансий нет Ну хуй знает, меня знакомый уже с полгода к себе зовёт на эликсире писать, а мне всё лень его нормально выучить, так и сижу на жаве. И все полгода вакансия открыта, никого не могут найти мимо
Я совесем нуб, решил поковырять немного этот ваш Erlang. Скопировал какой-то простейший пример кода из книжки Армстронга. Запускаю, а он мне вместо ответа выдает: exception error: no match of right hand side value XXX, где XXX- правильный ответ. Что это?
Еще один нубас на связи. На чем потренироваться, что сделать в качестве самого-самого первого приложения? Нужно что-то максимально простое, вкат для начинающих почти с нуля.
Оффтоп, но все же. Дело такое: я долгое время влачил жалкое существование на совсем уж чмошной работенке. В один прекрасный момент решил, что так дальше нельзя и надо что-то менять. Решил стать погромистом. Все же закончил технический недовуз и хотя бы самое общее представление о теме имел. Начал учить. Через 7 месяцев удалось вкатиться в неожиданную тему. Погромирование на руби, рельсы. Точнее... я не могу назвать это погромированием. Есть уже готовый, достаточно большой проект. И вот команда "разработчиков" в Мухосрани, под присмотром из Москвы занимается тем, что устраняет косяки, добавляет нехитрый функционал, правит имеющийся и тп. В свободное время решил чем-то себя дополнительно занять. Сначала думал о Java как о "штуке, которая всегда пригодится"(в том числе и в той конторе, где работаю сейчас). Но потом душа попросила чего-то нового, неизведанного и потянулась к Erlang. Вот я помеленьку его осваиваю. Мне это кажется даже приятным, но... есть такая проблема. Она есть и в том, чем я занимаюсь на работе сейчас, но в Erlang выражена сильнее. Ну ок, когда есть готовый код и надо что-то подправить- я смогу... наверное. А вот написать что-то свое- нет. Дело даже не столько в том, что я не могу написать что-то свое с нуля, а в том, что у меня нет понимания "а что я вообще мог бы создать пользуясь теми инструментами, которые у меня есть". Может Erlang все же не для таких как я? Или погромирование в принципе не моя тема?
Когда что-то создашь теми инструментами, которые у тебя есть - тогда и поймешь, что вообще мог бы создать теми инструментами, которые у тебя есть. Довольно просто.
Эталонный нуб снова на связи. Читаю книжку армстронга. Решил поковырять примерчик, но... не могу его запустить. https://dyp2000.gitbooks.io/russian-armstrong-erlang/content/chapter11.html В пятом параграфе читаем "Для запуска приложения получите исходные коды веб-сайта этой книги и распакуйте их в какой-нибудь каталог." А дальше терминал и make. Как это понимать? Я посмотрел на github, но что-то не увидел там make-файлов
>>1116431 Там же есть ссылки на все файлы с исходниками. Про какой гитхаб ты говоришь мы, как заметил анон выше, не знаем (эх, щас бы гуглить, что он там скачал, чтобы ему помочь, потому что ему самому лень было ссылки в пост добавить). Просто возьми и собери проект, как собираешь все остальные проекты - исходники-то у тебя есть.
>>1117698 Может ты просто пока не определился, чем больше сего нравится заниматься в программировании? Какой софт вы там вышлифовываете у себя в конторе мухосранской?
Насколько похожи между собой функциональные языки? Ну, т.е. если я буду на сносном уровне владеть Erlang, просто ли при необходимости переключить на Haskell?
>>1116841 Ну так используй фреймворки. Параллельно прочитай какую-нибудь книжку про хттп.
>>1118173 Настолько же, насколько между собой похожи джава, кресты и сишарп, например. Нет, не очень просто, но в разы проще, чем если бы ты не владел ерлангом.
>>1118900 У LoL часть сетевого стека на ерланге, емнип. Нет никакого "AI".
>>1119726 Ты, видимо не прочитал все с самого начала. Я бы рад хуярить, но для этого все равно придется сначала выбрать что именно хуярить. У меня как раз большая проблема с выбором цели. Вот есть инструмент - Erlang - я не понимаю какие задачи я мог бы решить с его помощью. Мне нужно что-то более менее типичное и достаточно простое
>>1119776 Я думал вешаться на цепи от велосипеда, но тут вдруг оказалось, что я пригоден хотя бы к говнокодингу. А раз так, то надо же как-то развиваться. Но у меня общий кругозор по части кодинга очень слабый, поэтому и не знаю, что запилить.
>>1119772 >>1119945 Ну давай теперь ты еще неделю будешь выбирать, что бы такого запилить, это нихачу, это нибуду, ой как же так почему я ни расту как прогормист((9
У меня появилась задача написать небольшую прогу. Функционал состоит из двух частей, для первой части идеально подходит Erlang, а вот вторая подразумевает возможность делать скриншоты и делать на них пометки. Erlang подойдет?
Начал изучать erlang. Дошёл до списков и кортежей. Чем лучше строить бинарное дерево? Списком или кортежем? Или кортежем внутри списка? Или наоборот? Оцените дерево на ОПпике.
>>1109086 (OP) Короче пока изучал эрланг пришла идея для одного приложения. Вобщем нужно будет загружать и выгружать объявления с фото через мобилу, естественно нужно будет делать выборку по фильтрам. Собственно вопрос - на чём пилить серверную часть - elixir или erlang? Думается мне - приложение должно быть устойчивым к большим нагрузкам. На чём пилить клиентскую часть, я так понял программирования под андроиды эрлангу ещё не завезли?
Crash dump is being written to: erl_crash.dump...{"init terminating in do_boot",{function_clause,[{shop,cost,[1],[{file,"c:/Users/Iven/IdeaProjects/erltest/src/shop.erl"},{line,14}]},{erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,670}]},{init,start_it,1,[{file,"init.erl"},{line,1099}]},{init,start_em,1,[{file,"init.erl"},{line,1085}]},{init,do_boot,3,[{file,"init.erl"},{line,793}]}]}}
>>1132781 В книге сказано, что в языке нет for, совсем нет. Ок, допустим. Он просто не нужен? Или же когда он нужен используют что-то готовое для этого? Или же каждый раз пишут руками что-то подобное примеру из этой книжки?
Что всегда не нравилось в подобных книгах, так это то, что порой не ясно, что действительно важно и должно быть как можно быстрее изучено глубже, а что просто абстрактные, сугубо учебные примеры слабо связанные с реальной жизнью
Посоны, я тут пытаюсь вкатываться, и у меня назрело желание увидеть реальный код на Эрланге. Где бы посмотреть на Эрланг-код типичного реального или близкого к реальному проекта?
Начал читать про Эралнг. Написано, что переменные не меняются. Смотрим на любой receive. Приняли сообщение. Сопоставили с шаблоном, получили совпадение, к переменной из шаблона теперь привязано значение. Приняли второе сообщение, оно совпало с тем же шаблоном и в ту же переменную попало другое значение. Янихуянепонял. Не бейте, только обоссыте.
>>1135423 Да хуй знает, как объяснить даже. Ну вот ты сам ее меняешь? Нет, она неизменяемая. Тебе просто извне приходят какие-то данные, а сам ты их изменить не можешь. Но они приходят по одному и тому же каналу в одно и то же место, а потому ты их можешь обозначить каким-то именем. Имя одно, данные - разные (и неизменяемые). Ну вот представь, что ты работаешь в офисе банка, у тебя есть окошечко, куда подходят клиенты за консультациями. Ты можешь назвать человека, который стоит в данный момент в окошечке, клиентом. Это каждый раз разные люди: клиент Вася, клиент Петя. Но для тебя важно, что у тебя в окошечке клиент, потому что у тебя есть алгоритм действий: ну, типа, поздороваться с клиентом (а не Васей, Петей и т.п. - кто там конкретно нам неважно), выслушать вопрос клиента, ответить клиенту. Вот, и еще ты изменять своих клиентов не можешь: вот они какие к тебе пришли, с такими тебе и надо работать. Ты не можешь сделать их менее тупыми, не можешь им отрезать руку или ногу, не можешь изменить их вопрос, с которым они к тебе пришли; какие есть - такие есть. И ты с ними работаешь по единому алгоритму - то есть у тебя не тыща разных алгоритмов для Васи, Пети и т.п., а один алгоритм, который работает для любого клиента.
Но еще раз: это все абсолютно базовые вещи, тебе нужно читать книжку по основам программирования, а не по эрлангу. От объяснения в двух словах никакого понимания не будет.
>>1135472 Я для себя это примерно так и понял. Т.е. принципиально важно не то, чтобы Х был только одним самым первым из присвоенных, а в том, чтобы если я его откуда-то получил(как вариант сам создал и присвоил значение) то тогда уже менять не могу, а получать разный могу сколько угодно раз новый.
>>1135555 то, что в скобках зря написал, но почти уверен, что все понял правильно. А так да, теоретической базы мне сильно не хватает, но в 29 поздно ее нарабатывать
>>1135555 >>1135557 Не поздно. К тому же это не "теоретическая база" (обмазываться монадами и разбираться в лямбда-комбинаторах тебя никто не заставляет), а минимальные необходимые основы.
Короче, я немного рубирую, и сейчас мне мой клиент такой говорит: а давай ты лучше попишешь тесты для моей приложеньки на Elixir + Phoenix, там ничего сложного, просто критичный функционал онлайн-биржи с реальными юзерами, так что если накосячишь, нам всем пизда, и тебе в первую очередь. Знаешь, что они делают в тюрьмах со снежками вроде тебя?
Следует добавить, что до этого момента я видел эликсир только в паре снов. Там было что-то про то, как я задаю значение переменной, а она не меняется, я пытаюсь снова и снова, но ничего не выходит и только в консоль валятся сообщения об ошибках. Тогда я начинаю проваливаться сквозь код в текстовом редакторе, падаю куда-то вниз в самую темноту, окружённый кусками текста и чьим-то протухшим байткодом, пока, наконец, не просыпаюсь в холодном поту, зажимая себе рот, чтобы не закричать.
Кстати, начать нужно будет завтра (через 4 часа). Собственно, вопрос: что делать? Нет, не так. ЧТО ДЕЛАТЬ?
>>1151158 Поясните нубасу, что такое рантайм. Часто встречаю это слово, гуглил, читал, но нихуя не понял, от источника к источнику совершенно разный смысл.
>>1151158 >>1151219 Спасибо за ваши драгоценные советы, без них я бы не выжил.
Короче, накатил всё, час сидел как обоссаный, ждал, пока докер закончит свои делишки. Стал читать доки. У нас в проекте есть несколько тестов, я их запустил и получил пикрелейтед. Так-так-так, что тут у нас, всратые спеки, ахахах, всратые спеки наканец-та! На самом деле, обрадовался конечно, потому что править чужой код попроще, чем писать свой. Да, кстати, всё запускается молниеносно, хотя там и бд задействована, и всё такое. Прогон тех же 300 тестов на рельсопроекте дал бы время пораковать в слаке, а тут чет не вышло. Тесты я починить не осилил (вот это сюрприз), но примерно понял, что мы используем почти все инструменты, к которым я привык - factory girl, faker etc.
Ещё понравилось, что mix идёт в комплекте с языком, а не как bunder в руби-мирке. И что можно писать как скрипт-кидди (файлы .exs), а можно компилировать, будто ты пердолевый барон (.ex).
Не понравилось передавать в тесты задействованные переменные. И ещё, к примеру, метод Agent.get_and_update. Мне лично НЕПРИЯТНО использовать его, потому что кажется, что он нарушает SRP.
В целом нихуя не понятно, но я думал, что будет хуже.
>>1152467 >Agent.get_and_update. Мне лично НЕПРИЯТНО использовать его, потому что кажется, что он нарушает SRP. А как ты собираешься атомарно взять и обновить значение в некоординированной асинхронщине? compare and swap у тебя тоже SRP нарушает, лол, ООП-блядок ты хуев?
На самом деле добра тебе, жду новой серии :3 Код у вас за сотней NDA или скидывать можно?
>>1151000 >там ничего сложного, просто критичный функционал онлайн-биржи с реальными юзерами, так что если накосячишь, нам всем пизда, и тебе в первую очередь. Знаешь, что они делают в тюрьмах со снежками вроде тебя? Типичный бизнес в рашеньке г-ди, как же я проиграл с твоего рассказа
Не бейте, лучше обоссыте. Можно ли с помощью Erlang написать аналог прельстивой функции создания скриншотов в огнелисе? Если да, есть ли какие-то серьезные доводы против использования Erlang для этого?
Шапка треда: http://telegra.ph/SHapka-treada-Erlang-12-18