Go vs Erlang vs Elixir
От: chaotic-kotik  
Дата: 09.02.17 09:12
Оценка:
Может кто-нибудь объяснить, почему люди считают что Go подходит для concurrency и сервисов, хотя там нет нормального планировщика (любая горутина может неотдавать управление неограничено долго), общая память и глобальный GC, невозможно нормально остановить горутину, нет нормальной обработки ошибок?
Самое главное, есть же нормальная алтернатива — Erlang/Elixir + OTP.
Re: Go vs Erlang vs Elixir
От: Лось Чтостряслось СССР  
Дата: 09.02.17 09:22
Оценка: +3 :)
Здравствуйте, chaotic-kotik, Вы писали:

CK>Может кто-нибудь объяснить, почему люди считают что Go подходит для concurrency и сервисов, хотя там нет нормального планировщика (любая горутина может неотдавать управление неограничено долго), общая память и глобальный GC, невозможно нормально остановить горутину, нет нормальной обработки ошибок?


потому что го — это модно, стильно, молодежно
социализм или варварство
Re[2]: Go vs Erlang vs Elixir
От: chaotic-kotik  
Дата: 09.02.17 09:31
Оценка: +1
Здравствуйте, Лось Чтостряслось, Вы писали:

ЛЧ>потому что го — это модно, стильно, молодежно


Может быть и правда молодежно, я когда на го пишу, сразу вспоминаю юность и турбопаскаль, те же ощущения от языка, что в свое время были от турбопаскаля, руки так и тянутся написать Uses Crt вместо import "fmt"!
Re[3]: Go vs Erlang vs Elixir
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 09.02.17 09:37
Оценка: 1 (1) +1
Здравствуйте, chaotic-kotik, Вы писали:

ЛЧ>>потому что го — это модно, стильно, молодежно


CK>Может быть и правда молодежно, я когда на го пишу, сразу вспоминаю юность и турбопаскаль, те же ощущения от языка, что в свое время были от турбопаскаля, руки так и тянутся написать Uses Crt вместо import "fmt"!


Ничего удивительного — Go это паскаль с алголом68 (включая параллельность) в тылу с немного человеческим лицом в стиле C
The God is real, unless declared integer.
Отредактировано 09.02.2017 9:38 netch80 . Предыдущая версия .
Re: Go vs Erlang vs Elixir
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 09.02.17 09:43
Оценка: +2
Здравствуйте, chaotic-kotik, Вы писали:

CK>Может кто-нибудь объяснить, почему люди считают что Go подходит для concurrency и сервисов, хотя там нет нормального планировщика (любая горутина может неотдавать управление неограничено долго), общая память и глобальный GC, невозможно нормально остановить горутину, нет нормальной обработки ошибок?

CK>Самое главное, есть же нормальная алтернатива — Erlang/Elixir + OTP.

1. Erlang VM не умеет статическую типизацию. На практике для задач, на которые целится Go, это даёт проигрыш до порядка по скорости.
2. Erlang имеет ряд тяжёлых специфических болезней. Например, неуправляемый входной поток данных — убийство VM. Это проблема VM в целом, Elixir это не вылечит. На практике против последствий этого строят сложные системы управления. Или куча процесса — если процесс толстый, можно не суметь её собрать — это к тому, что глобальный GC может быть даже лучше, чем на отдельный внутренний процесс.

Это не отменяет того, что Go крив как баба-яга после драки, но они тут друг друга стоят.
The God is real, unless declared integer.
Re: Go vs Erlang vs Elixir
От: Sharov Россия  
Дата: 09.02.17 11:01
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>Может кто-нибудь объяснить, почему люди считают что Go подходит для concurrency и сервисов, хотя там нет нормального планировщика (любая горутина может неотдавать управление неограничено долго), общая память и глобальный GC, невозможно нормально остановить горутину, нет нормальной обработки ошибок?

CK>Самое главное, есть же нормальная алтернатива — Erlang/Elixir + OTP.

>любая горутина может неотдавать управление неограничено долго


Откуда инфа?


>общая память


Вроде по уму, через каналы. Или это опять не то?
Кодом людям нужно помогать!
Re[2]: Go vs Erlang vs Elixir
От: Sharov Россия  
Дата: 09.02.17 11:04
Оценка:
Здравствуйте, netch80, Вы писали:

N>Это не отменяет того, что Go крив как баба-яга после драки, но они тут друг друга стоят.


Чем он крив? Я интересуюсь не ради спора, т.к. начал изучать язык буквально неделю назад. Пока все нравится -- каналы, горутины, select'ы (poll). Вроде неплохо для легко масштабируемых веб-сервисов. С указателями можно на прямую работать, т.е. сишники могут запрыгнуть.
Кодом людям нужно помогать!
Re[2]: Go vs Erlang vs Elixir
От: neFormal Россия  
Дата: 09.02.17 11:16
Оценка:
Здравствуйте, netch80, Вы писали:

N>2. Erlang имеет ряд тяжёлых специфических болезней. Например, неуправляемый входной поток данных — убийство VM.

N>На практике против последствий этого строят сложные системы управления.

это как "неуправляемый"?
и о каких системах речь?

N>Или куча процесса — если процесс толстый, можно не суметь её собрать — это к тому, что глобальный GC может быть даже лучше, чем на отдельный внутренний процесс.


а тут что помешает?
gc же на каждый шедулер, а не на процесс.
...coding for chaos...
Re[2]: Go vs Erlang vs Elixir
От: chaotic-kotik  
Дата: 09.02.17 11:21
Оценка:
Здравствуйте, netch80, Вы писали:

N>1. Erlang VM не умеет статическую типизацию. На практике для задач, на которые целится Go, это даёт проигрыш до порядка по скорости.


Для критичных к производительности участков есть NIF-ы и порты.
Ну а для статических проверок есть dialyzer.

N>2. Erlang имеет ряд тяжёлых специфических болезней. Например, неуправляемый входной поток данных — убийство VM. Это проблема VM в целом, Elixir это не вылечит. На практике против последствий этого строят сложные системы управления. Или куча процесса — если процесс толстый, можно не суметь её собрать — это к тому, что глобальный GC может быть даже лучше, чем на отдельный внутренний процесс.


А можно подробней, я не понял о чем идет речь.
Отредактировано 09.02.2017 11:26 chaotic-kotik . Предыдущая версия .
Re[2]: Go vs Erlang vs Elixir
От: chaotic-kotik  
Дата: 09.02.17 11:31
Оценка: 1 (1)
Здравствуйте, Sharov, Вы писали:

>>любая горутина может неотдавать управление неограничено долго


S>Откуда инфа?


Компилятор го вставляет вызовы runtime.Gosched перед некоторыми конструкциями, чтобы шедулер получал управление и мог прервать выполнение кода. В BEAM вытесняющая многозадачность, а в Go — кооперативная, со всеми вытекающими проблемами.


>>общая память


S>Вроде по уму, через каналы. Или это опять не то?


И через мьютексы и общую память.
Re: Go vs Erlang vs Elixir
От: Слава  
Дата: 09.02.17 11:38
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>Самое главное, есть же нормальная алтернатива — Erlang/Elixir + OTP.


Потому что Go — простая и понятная императивщина. А если ты хочешь почувствовать неудобство функциональщины, как его чувствуют другие люди — возьми LanguageExt. Вот уж дрянь из дряней.
Re[2]: Go vs Erlang vs Elixir
От: chaotic-kotik  
Дата: 09.02.17 12:00
Оценка:
Здравствуйте, Слава, Вы писали:

С>Потому что Go — простая и понятная императивщина. А если ты хочешь почувствовать неудобство функциональщины, как его чувствуют другие люди — возьми LanguageExt. Вот уж дрянь из дряней.


Ну это уже какие-то ваши детские травмы. Elixir это Lisp, только с нормальным синтаксисом + BEAM + OTP. Ну а .NET это всегда боль и унижение.
Re: Go vs Erlang vs Elixir
От: TK Лес кывт.рф
Дата: 09.02.17 12:18
Оценка: +1
Здравствуйте, chaotic-kotik, Вы писали:

CK>любая горутина может неотдавать управление неограничено долго


В Go приложения на текущий момент монолитные — т.е. если горутина не отдает управление то это только потому, что это выбор разработчика.
А писать так, что одна рука не знает что делает другая — оно конечно можно но, зачем?
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[3]: Go vs Erlang vs Elixir
От: neFormal Россия  
Дата: 09.02.17 12:31
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>Ну это уже какие-то ваши детские травмы. Elixir это Lisp, только с нормальным синтаксисом + BEAM + OTP. Ну а .NET это всегда боль и унижение.


при чём тут лисп?
...coding for chaos...
Re[3]: Go vs Erlang vs Elixir
От: DrDred Россия  
Дата: 09.02.17 12:40
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>Ну это уже какие-то ваши детские травмы. Elixir это Lisp, только с нормальным синтаксисом + BEAM + OTP. Ну а .NET это всегда боль и унижение.


Почему Lisp? Вроде автор писал, что вдохновлялся Ruby в основном...
--
WBR, Alexander
Re[4]: Go vs Erlang vs Elixir
От: chaotic-kotik  
Дата: 09.02.17 12:52
Оценка:
Здравствуйте, DrDred, Вы писали:

DD>Почему Lisp? Вроде автор писал, что вдохновлялся Ruby в основном...


А получился полноценный Lisp!
Re: Go vs Erlang vs Elixir
От: VTT http://vtt.to
Дата: 09.02.17 13:07
Оценка:
Здравствуйте, chaotic-kotik, Вы писали:

CK>Может кто-нибудь объяснить, почему люди считают что Go подходит для concurrency и сервисов, хотя там нет нормального планировщика (любая горутина может неотдавать управление неограничено долго), общая память и глобальный GC, невозможно нормально остановить горутину, нет нормальной обработки ошибок?


Так гугл же форсит его, как только можно.

CK>Самое главное, есть же нормальная алтернатива — Erlang/Elixir + OTP.


go мне представляется скорее альтернативой джаве, только с еще более низкими требованиями к кодерам.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Re[2]: Go vs Erlang vs Elixir
От: Sharov Россия  
Дата: 09.02.17 13:16
Оценка:
Здравствуйте, VTT, Вы писали:


CK>>Может кто-нибудь объяснить, почему люди считают что Go подходит для concurrency и сервисов, хотя там нет нормального планировщика (любая горутина может неотдавать управление неограничено долго), общая память и глобальный GC, невозможно нормально остановить горутину, нет нормальной обработки ошибок?


VTT>Так гугл же форсит его, как только можно.


Например? Языку шесть лет как минимум, особо про него ничего не слышно. Сообщество у него не очень больше. В самом то гугле на нем что написано?

CK>>Самое главное, есть же нормальная алтернатива — Erlang/Elixir + OTP.


VTT>go мне представляется скорее альтернативой джаве, только с еще более низкими требованиями к кодерам.


Куда уж ниже требования? Go явно не альтернатива жабе, скорее язык где мн-во многопоточных идиом изкаропки. Он больше конкурент erlang'у.
Кодом людям нужно помогать!
Re[2]: Go vs Erlang vs Elixir
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 09.02.17 13:39
Оценка: 2 (1)
Здравствуйте, Sharov, Вы писали:

S>Здравствуйте, chaotic-kotik, Вы писали:


CK>>Может кто-нибудь объяснить, почему люди считают что Go подходит для concurrency и сервисов, хотя там нет нормального планировщика (любая горутина может неотдавать управление неограничено долго), общая память и глобальный GC, невозможно нормально остановить горутину, нет нормальной обработки ошибок?

CK>>Самое главное, есть же нормальная алтернатива — Erlang/Elixir + OTP.

>>любая горутина может неотдавать управление неограничено долго


S>Откуда инфа?


Например, тут пункт 58.
The God is real, unless declared integer.
Re[3]: Go vs Erlang vs Elixir
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 09.02.17 13:45
Оценка: 1 (1)
Здравствуйте, Sharov, Вы писали:

S>Здравствуйте, netch80, Вы писали:


N>>Это не отменяет того, что Go крив как баба-яга после драки, но они тут друг друга стоят.


S>Чем он крив?


неплохой сборник особенностей. Как по мне, большинство в минус.
1 — Нет возможности указать, что строка продолжается (как финальная \ в Python), собственные правила для этого достаточно путаны.
2,3 — Хорошо до тех пор, пока не хочешь чего-то временно закомментировать, или если код генерится автоматом. Считаю, что не дело языка навязывать тут политику.
5 — тупой ляп дизайна.
7 — надо было хотя бы предупреждения делать.
10 — недоработка.
19 — не зря в Питоне отдельные байтовые строки.
Из того, что не упомянуто
* Экспорт по регистру — абсолютно тупая идея с неприятными последствиями в виде массовых замен при реэкспорте.
* На тупизну их модуля http не жалуется только ленивый. Остальная библиотека не сильно лучше, слишком много сделанного совсем на коленке.
* Стандартное "сегодня потребности в колбасе нет" на наследование, исключения и дженерики.
* Из того, что для моих целей крайне критично — нет приоритетов в select. Наоборот, явно прописан случайный выбор среди доступных — как по мне, это преступление. Случайный выбор должен быть дополнительным режимом, но не по умолчанию, и в идеале — в выделенной подгруппе случаев.
* Народ делает закат солнца вручную написанием своего ассемблера. Его качество резко хуже доступных аналогов вроде gcc и llvm.
The God is real, unless declared integer.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.