Поэтому ерланг и такой тормозной, все что в ерланге выделяется на локальной куче в jvm с помощью escape analysis засовывается на стек, и операции с памятью обходятся вообще бесплатно.
В джаве есть JIT и миллионы денег вброшенные на её оптимизацию, я понимаю, что деньги зря не потрачены и джавистам есть чем гордиться. Опять сводишь к гигафлопсам. На тех задачах, на которых люди гоняют софт на Эрланге, он ни капельки не тормозит, а даже показывает замечательные результаты по времени отклика на сетевой запрос и количеству одновременных клиентов (конечно, какой тест не покажи, на любой скажут, что тест нечестный), а кому скорости мало — скоро будет LLVM бэкенд и стек станет настоящим стеком CPU, я надеюсь. Ну или всегда можно написать функцию на С/С++ и подключить там где производительность жмёт.
А стека проца у программы на Эрланге нету, BEAM является VM всё-таки. Вот допилят греки erlang-llvm тогда поглядим как у них там всё устроено в машинном коде.
Куча как будто отдельная, но большие данные VM передаёт по ссылке, но поскольку всё рид онли — проблем с синхронизацией не наблюдается.
Вот, мы почти пришли к общему знаменателю. Никто ведь не говорит, что Эрланг умеет что-то уникальное, чего нет в других языках. Другое дело, что то, что в Эрланге сделано, настолько замечательно друг с другом работает, отсутствие шаред памяти, отсутствие локов и синхронизаций, например, что писать многопоточное приложение становится просто и приятно. Ну и надёжность на высоте, обновление кода без остановки, обработка критических ошибок, самовосстановление. Чтоб завалить VM Эрланга надо либо сожрать всю память либо переполнить одну из внутренних таблиц (которые очень большие) — это надо здорово накосячить.
в ерланге тред выделяется на scheduler а не на процесс
Мы тут путаем терминологию. Я о процессах, ты о тредах. Я стартую процессы Эрланга, цена треда ОС меня не интересует — это делает VM Эрланга.
Мне совершенно не нужно знать какой шедулер будет выполнять мой процесс, они (шедулеры) между собой сами договорятся. «it just works™». Это не сишечка, где надо наизусть помнить все UB из стандарта и сколько байт выделено для стека в pthread, чтоб не дай бох на тысяче тредов не вывалиться с out of memory.
О, гуру Эрланга, тред в линуксе занимает столько, сколько стека изволит выделить конпелятор, счёт на мегабайты. В Эрланге процесс (будем называть всё своими именами, не путать с процессом ОС) занимает столько, сколько занимает стек и стейт треда + неочищенный мусор, счёт на десятки килобайт.
Не загуглил лишь потому, что меня не интересует нерелевантное выражение, и я не знаю его значения. Покормил ))
Стек и куча у всех потоков отдельные и GC отрабатывает отдельно для каждого потока так как этому потоку удобно. Можно очень экономно держать миллионы открытых подключений на одном хосте, по десятку килобайт на поток. Для современного веба, который работает на сессиях и вебсокетах, связность между сессиями и немедленный доступ ко всем данным системы — самое лучшее решение.
Никогда не понимал, что означает «слив» и почему он «засчитан». Треды у Эрланга честные, всё работает честно, одновременно и в количестве аппаратных потоков по числу ядер. Если вы собрались писать числодробилку на Эрланге и сравнивать гигафлопсы — вы явно ошиблись языком, вам либо в сишечьку, либо в хаскелл с лиспом, лисп кстати всех по скорости делает. Не тем Эрланг силён, не там копаете.
Программирование — скилл не зависящий от возраста. А вообще нужно поддерживать мозги в форме не расслабляться и не думать что всё уже изучил. Всегда осваивать новинки. Знаю отцов Эрланга, лично, дядьки по
Книги смотреть Армстронга (в оригинале сам читал и другим советую) и есть другая книга Франческо Чезарини, эта точно есть в переводе, если оригинал не осилите.
Видел кучу программистов ещё той старой закалки, которые были молодцы в 1970х, 1980х и 1990х. Сейчас им по60-70 лет, старики-разбойники ещё те, работают программистами в полную силу, постоянно толкают новые идеи. От возраста ваша полезность компании никак не зависит, разве что не сможете дотолкать инв.коляску до работы в один прекрасный день :)