M>>Можно начать с вопроса: Когда там потоки в С++ на уровне языка/стандартных библиотек появились?
А>"Когда-то" и Путин сперматозоидом был. А>Не уходим от вопроса. А>Итак, что там у С++ за траблы с многопоточной невнятностью? И какие языки размалывают его по внятности?
Я не ухожу от вопроса. Для удобного использования многоядерности и вообще распараллеливания чего бы то ни было, нужно иметь, по сути, одну вещь: поддержку этого языком. Когда все, что язык предоставляет — это появившиеся в 2011-м стандарте thread'ы, то далеко на нем не уедешь. Во всяком случае пока умные люди не напишут вокруг всего этого костыли и библиотеки. Потому что первый же залетный mutex.lock убъет любую многопоточность и многоядерность.
По внятности C++ (и кого бы то ни было) размалывает только Erlang. Пока другие тольк-только подбираются к концепциям, которые были в нем уже в начале 90-х, они уже думают о том, как правильно работать на десятках тысяч ядер, и оптимизируют работу системы для грамотной работы с переключением контекстов в CPU и cache miss.
Здравствуйте, Mamut, Вы писали:
M>По внятности C++ (и кого бы то ни было) размалывает только Erlang. Пока другие тольк-только подбираются к концепциям, которые были в нем уже в начале 90-х, они уже думают о том, как правильно работать на десятках тысяч ядер, и оптимизируют работу системы для грамотной работы с переключением контекстов в CPU и cache miss.
Ужос. При таких аццких достоинствах эрланг таки болтается на грани стат-погрешности. Что-то не так в датском королевстве. Подскажешь, что именно ?
M>>По внятности C++ (и кого бы то ни было) размалывает только Erlang. Пока другие тольк-только подбираются к концепциям, которые были в нем уже в начале 90-х, они уже думают о том, как правильно работать на десятках тысяч ядер, и оптимизируют работу системы для грамотной работы с переключением контекстов в CPU и cache miss.
I>Ужос. При таких аццких достоинствах эрланг таки болтается на грани стат-погрешности. Что-то не так в датском королевстве. Подскажешь, что именно ?
Ты впервые узнал, что популярными становятся совсем не те языки, которые, кажется, должны быть популярными?
Здравствуйте, Mamut, Вы писали:
M>Ты впервые узнал, что популярными становятся совсем не те языки, которые, кажется, должны быть популярными?
А как там, у ерланга с производительностью?
Он уже научился не сливать С++у в десятки раз?
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Mamut, Вы писали:
I>>Ужос. При таких аццких достоинствах эрланг таки болтается на грани стат-погрешности. Что-то не так в датском королевстве. Подскажешь, что именно ?
M>Ты впервые узнал, что популярными становятся совсем не те языки, которые, кажется, должны быть популярными?
Ключевое слово у тебя — кажется. Тут как с людьми. Слишком часто сильно способные и трудолюбивые еле еле сводят концы с концами
M>>Ты впервые узнал, что популярными становятся совсем не те языки, которые, кажется, должны быть популярными? WH>А как там, у ерланга с производительностью? WH>Он уже научился не сливать С++у в десятки раз?
Что там с Немерле, он вообще появился в живом виде хоть где-то?
I>>>Ужос. При таких аццких достоинствах эрланг таки болтается на грани стат-погрешности. Что-то не так в датском королевстве. Подскажешь, что именно ?
M>>Ты впервые узнал, что популярными становятся совсем не те языки, которые, кажется, должны быть популярными?
I>Ключевое слово у тебя — кажется. Тут как с людьми. Слишком часто сильно способные и трудолюбивые еле еле сводят концы с концами
Кд.чевое тут то, что ты вообще не знаешь о чем говоришь. Но это не страшно. В КСВ можно.
Здравствуйте, Ikemefula, Вы писали:
I>Ужос. При таких аццких достоинствах эрланг таки болтается на грани стат-погрешности. Что-то не так в датском королевстве. Подскажешь, что именно ?
у него очень узкая ниша и кастрированные возможности по абстрагированию и метаизвращениям.
если утрировать, то выйдет, что это язык ровно для одной задачи — переложить что-то куда-то.
Здравствуйте, neFormal, Вы писали: F>если утрировать, то выйдет, что это язык ровно для одной задачи — переложить что-то куда-то.
Зато именно это он, @#$@, делает о@#$@нно быстро.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, neFormal, Вы писали:
I>>Ужос. При таких аццких достоинствах эрланг таки болтается на грани стат-погрешности. Что-то не так в датском королевстве. Подскажешь, что именно ?
F>у него очень узкая ниша и кастрированные возможности по абстрагированию и метаизвращениям. F>если утрировать, то выйдет, что это язык ровно для одной задачи — переложить что-то куда-то.
Дело не в абстрагировании. Что бы внятно работали процессы, эрланг должен иметь максимальный контроль над шедулингом. Что бы этого достичь, он выталкивает тяжелые блокирующие вызовы, коих большинство, в тред-пул а тем временем вызывает очередной процесс.
С одной стороны, это круто, но с другой стороны, классический UI того же виндовса становится на эрланге невозможной задачей, потому что тяжелые блокирующие вызовы, внезапно, вытолкнуть в тред-пул не выйдет, т.к. объекты прибиты гвоздями к конкретному треду.
Теоретически, сделать можно, но для UI нужна особая архитектура, которая ввергнет в ужас любого UI-девелопера.
Здравствуйте, Sinclair, Вы писали:
F>>если утрировать, то выйдет, что это язык ровно для одной задачи — переложить что-то куда-то. S>Зато именно это он, @#$@, делает о@#$@нно быстро.
но это все умеют.
просто энларг это делает чуть удобней и распределённо.
I>Что бы этого достичь, он выталкивает тяжелые блокирующие вызовы, коих большинство, в тред-пул а тем временем вызывает очередной процесс.
Так это же без проблем реализуемо на любом из распространенных языков, или нет?
"Больше 100кмч можно ехать на автобане в любом ряду кроме правого крайнего" (c) pik
"В германии земля в частной собственности" (c) pik
"Закрывать школы, при нулевой смертности среди детей и подростков, это верх глупости" (c) Abalak
Здравствуйте, Ikemefula, Вы писали:
I>С одной стороны, это круто, но с другой стороны, классический UI того же виндовса становится на эрланге невозможной задачей, потому что тяжелые блокирующие вызовы, внезапно, вытолкнуть в тред-пул не выйдет, т.к. объекты прибиты гвоздями к конкретному треду. I>Теоретически, сделать можно, но для UI нужна особая архитектура, которая ввергнет в ужас любого UI-девелопера.
хз, никогда не делал гуёвые приложения на нём.
но не понимаю, откуда там тяжёлые блокирующие вызовы?
Здравствуйте, Аноним931, Вы писали:
I>>Что бы этого достичь, он выталкивает тяжелые блокирующие вызовы, коих большинство, в тред-пул а тем временем вызывает очередной процесс. А>Так это же без проблем реализуемо на любом из распространенных языков, или нет?
Теоретически — да. Нужно всего лишь заврапать все такие вызовы в короутины, прикрутить внятный шедулинг, тред-пул и тд и тд.
Здравствуйте, neFormal, Вы писали:
I>>С одной стороны, это круто, но с другой стороны, классический UI того же виндовса становится на эрланге невозможной задачей, потому что тяжелые блокирующие вызовы, внезапно, вытолкнуть в тред-пул не выйдет, т.к. объекты прибиты гвоздями к конкретному треду. I>>Теоретически, сделать можно, но для UI нужна особая архитектура, которая ввергнет в ужас любого UI-девелопера.
F>хз, никогда не делал гуёвые приложения на нём. F>но не понимаю, откуда там тяжёлые блокирующие вызовы?
Там это где ? В самом эрланге нет таких вещей. Они есть в ОС. Чем больше тебе надо от этой самой ОС, тем больше нужно приседать. Например, в винде весь UI он вот такой — блокирующие вызовы и очень дорогие.
Условно, если ты захочешь писать под винду на эрланге чтото навроде десктоп приложений. Функция SendMessage — блокирующая. Если адресат слегка задумался, на пол-секунды, ты висишь вместе с ним.
Это значит, что нативный поток будет недоступен для других эрланговских процессов, вместе с SendMessage заснёт и эрланговский шедулер, который запущен из расчета по инстанцу на процессорное ядро.
С такими функциями Эрланг поступает следующим образом — делегирует вызов тредпулу, а сам работает со свободными процессами. Как только SendMessage завершился, эрланг продолжает процесс.
Т.е. фактически Эрланг ведет себя как операционная система, только использует кооперативную многозадачность, а не вытесняющую.
А>>Так это же без проблем реализуемо на любом из распространенных языков, или нет? I>Теоретически — да. Нужно всего лишь заврапать все такие вызовы в короутины, прикрутить внятный шедулинг, тред-пул и тд и тд.
Из чего логически следует, что для этого в С++ либо есть готовая свободная либа, либо эффорт настолько мал, что сторонняя либа не нужна и пишется своими силами.
Итак, со сторонней ли либой или со своей, в С++ "выталкивание тяжелых блокирующих вызовов в тред-пул" работает прекрасно. Какие тогда остаются преимущества эрланга перед С++?
"Больше 100кмч можно ехать на автобане в любом ряду кроме правого крайнего" (c) pik
"В германии земля в частной собственности" (c) pik
"Закрывать школы, при нулевой смертности среди детей и подростков, это верх глупости" (c) Abalak
M>Потому что первый же залетный mutex.lock убъет любую многопоточность и многоядерность.
Вот откуда эта боязнь мьютексов и уверенность в том что захват мьюеткса обязательно убьет производительность? Бывают медленные message-ориентированные системы и быстрые системы с кучей мьютексов то тут то там. Можно попробовать какой-нибудь параллельный алгоритм реализовать на Erlang(Akka, чем угодно умеющем акторы) и на мьютексах и общей памяти. Я уверен что смогу на мьютексах уж точно не хуже напедалить (а скорее всего намного лучше).
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Mamut, Вы писали:
M>>Что там с Немерле, он вообще появился в живом виде хоть где-то? WH>Слив засчитан.
M>>Что там с Немерле, он вообще появился в живом виде хоть где-то? WH>Слив засчитан.
Твой? Безусловно. Как всегда, в общем. Приперся в топик с видом «я дАртаньян, а вы тупое необразованное быдло» и говоришь об ортогональных топику вещах.
Так как там мега Немерле и мега Нитра поживают? Топик то про «Многопоточность: C++ vs Erlang vs другие». Ваше еле живое изделие уже хоть к кому-то из них приблизилось? Где-то на радарах регистрируется?