Ответ на пост «Забавный способ найма в IT»

Erlang vs С++. Спонтанные вопросы по незнакомому Erlang на собеседовании.

Ну это принципиально разные языки. Императивная парадигма у С++ и функциональный Erlang. Статическая типизация у С++ и иммутабельность+динамическая типизация у Erlang. Куча легковесных потоков, бешенная масштабируемость у Erlang и проблемы с производительностью на ровном месте у С++.

По своему и по опыту команды скажу, что среднее время изучения "базы" Erlang - это где-то полгода. Т.е. спустя полгода программист сможет выдавать адекватный production код на Erlang. Большая часть С++'сных вакансий в геймдеве, где весь упор внимания на программирование рендера, шейдеров, ECS и paper'ов.

Ожидать от С++сника, что он сходу разберется в новом для себя функциональном языке очень странно, т.к. (повторюсь) интерес среднего С++'сника вообще не пересекается с миром других парадигм и других (неподобных С++) ЯП. Многие С++'cники идеологию C# не понимают, и не могут смириться, что C# во много раз удобнее и средний код на нем сильно быстрее аналогичного кода на С++ (C# - выше уровнем, больше пространства для оптимизации, 1000 человеколет вложены в оптимизацию CLR на уровне компиляции и т.д.).

На мой взгляд - это ошибка HR и тех. лидера команды.

1. Зачем звать всех подряд и тратить свое время на нерелевантных кандидатов, когда можно обозначить знакомство с Erlang, Haskell, F# и Lisp ) как обязательное требование?
2. Откройте бесплатные онлайн курсы по Erlang, а потом через 3 месяца отправьте офферы самым толковым.

3. Если тех. лидер позволяет себе такое, то скорее всего это не тот "начальник", с которым вы хотите работать.

Типичный программист

1K постов6.3K подписчика

Добавить пост
Автор поста оценил этот комментарий

ты дурак? если ты чутка пошевелишь мозгом, то блядь поймешь, что я с тобой СОВЕРШЕННО СОГЛАСЕН. я возражал не тебе, блядь, а твоему оппоненту. иди нахуй пей зеленку

раскрыть ветку (1)
Автор поста оценил этот комментарий

:) LMAO. Извини не так читаю. Много агро вылилось в теме. Defense mode и все дела.


Спасибо.

5
Автор поста оценил этот комментарий

Да. А потом лови на своих сервисах когда сборщик решил всех нафиг послать и поработать дворником. Разогретый. В плюсах хер ты позволишь кому то орудовать в работе своего процесса, если тебе это критично. И не надо тут теперь про кучу ломающихся костылей писать про дворника

раскрыть ветку (1)
Автор поста оценил этот комментарий

А зачем ты тогда выбрал средство языка, не под задачу?

23
Автор поста оценил этот комментарий
проблемы с производительностью на ровном месте у С++

Многие С++'cники идеологию C# не понимают, и не могут смириться, что C# во много раз удобнее и средний код на нем сильно быстрее аналогичного кода на С++

Ахахахаххахахах
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

А какой у вас бекграунд? Разве, вы никогда не встречали код в многопоточном приложении в продакшене, который работает не так, как задумывал программист и это влияло на производительность?

показать ответы
11
Автор поста оценил этот комментарий

Тоже резануло глаза. Но может быть автор имел ввиду, что крупное приложение на C# окажется быстрее такого же крупного на C++ (и на которое затратили относительно столько же времени) за счет того, что разработчик сможет больше внимания уделить общей картине, а не деталям реализации. Во всяком случае, я хотел бы верить, что автор имел ввиду это.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Да. Чуть ниже ответил более развернуто.

46
Автор поста оценил этот комментарий

средний код на нем сильно быстрее аналогичного кода на С++ (C# - выше уровнем, больше пространства для оптимизации, 1000 человеколет вложены в оптимизацию CLR на уровне компиляции и т.д.)

О как, оказывается managed ЯП, выполняемый виртуальной машиной, быстрее чем опасный ЯП, компилируемый в нативный код. Ведь чем выше уровень ЯП тем больше пространства для оптимизации. Как ещё Closure/Scala всех по производительности не зарулили, или Javascript с V8 который ещё сильнее заоптимизирован чем эта ваша CLR...

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Время, которое вы тратите на оптимальный код на С++ сильно больше, чем время, которое вы тратите на решение задачи на других языках (C#), а разница в производительности не существенна.


Как тех. руководитель, я буду выбирать средство под задачу. А не свято тащить везде С++, потому что его прекрасно знаю.

показать ответы
22
Автор поста оценил этот комментарий

Мдаа..

Многие С++'cники идеологию C# не понимают, и не могут смириться, что C# во много раз удобнее и средний код на нем сильно быстрее аналогичного кода на С++

Иллюстрация к комментарию
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Я знаю, о чем говорю. Одна и та же задача за короткое/приемлемое время решается совершенно по разному на языках с разным уровнем абстракции.


Если вам интересно, то поделюсь опытом. Проводил контест среди программистов на эту тему в компании. Выбрал задачу 'под С++':


Написать сервис по умножению матриц. (Слушать сокет, читать матрицы произвольного размера и возвращать результат). В качестве ограничения: 2-3 вечера. Использовать сторонние фреймворки где все готово - нельзя (хотя ради интереса были и такие варианты).

Ограничений по ЯП нет.


Решение на С# пишется проще, быстрее. По производительности не уступает другие решения. Пока С++сник пытается написать планировщик, другие программисты пишут тесты и думают, как оптимизировать на уровне подхода (векторизация, алгоритмы и т.д.).


Решения были:

Порядка 5-6 на С++ (eigen, boost тоже оценивали), Rust, пара на C#, пара на Erlang, Go.

------------------------------------


Но здесь видимо принято читать между строк и оскорблять других программистов.

показать ответы
1
Автор поста оценил этот комментарий

извини, мне нехуй делать читать всю ветку, клацни ссылку на пример

раскрыть ветку (1)
Автор поста оценил этот комментарий

Не поверишь, это мой первый пост - ответ на пикабу. Всю жизнь его только читал, а не чатился с аггро коммьюнити. Поэтому не разобрался, да и нет желания доказывать в интернете кому-то, что он не прав.

Автор поста оценил этот комментарий

хуйни не неси, ок? виртуальная машина вообще-то располагает тем, что плюсовому компилятору и не снилось, а именно рантайм статистикой по выполняемому коду. на высоких тьерах оптимизации нормальный компайлер порежет у тебя минимум 90% бранчей, не говоря о прочем. я, уж поверь, хороший плюсовик, достаточно хороший, что занимаюсь, внезапно, именно разработкой виртуальных машин, и мне и в голову не придет сравнивать быстродействие плюсов и явки на средней сложности бизнес-задаче. если не веришь, вот тебе совсем простенькая задачка: распарсить несколько-гигабайтный JSON на предмет записей определенного формата и слить результат в базу данных, -- напиши ее на плюсах, чтобы все правильно, чтобы все путем, а потом сделай то же самое на явке и сравни. результат тебя сильно удивит

раскрыть ветку (1)
Автор поста оценил этот комментарий

"Хороший плюсовик", прочитай в комментах ниже подобный пример, что я оформил. Во-первых, я не говорил про Java (правильное произношение "джава", а не "явка").

Во-вторых, забавно слышать от человека, который позиционирует себя, как крутой С++ сник, который пишет виртуальные машины "хуйни не неси" в публичном пространстве.

В-третьих, я занимаюсь разработкой и внезапно оптимизацией игровых движков, и опыт далеко не ограничивается стандартным набором форков для UE4/UE5, проектах на Unity и  CryEngine.

В-четвертых, повторю для тебя: в условиях ограниченного времени и конкретной задачи, программист C# будет думать о том, как ее решить и скомпиленный байт код будет нативным и "лучшим" (здесь в кавычках, потому что лучшим=быстрым), чем твои каракули на С++. Потому что типичный Сшник будет думать, как написать код в принципе и не устроить лишнее копирование, и лучшую синхронизацию потоков, если даже доберется до нее. А в итоге забудет поставить noexcept в операторе, из-за чего move semantic'а "не сработает". Когда код на C# в принципе более отказоустойчивый, потому что язык не позволяет этим заниматься программисту и больше доверяет компилятору.

В-пятых, я нигде и не утверждал что в итоге идеальный=оптимальный код можно написать только на C#. В пределе(на дальней дистанции) С++ выигрывает, но времени займет больше, багов будет больше и человеко часов будет затрачено существенно больше.

показать ответы
Автор поста оценил этот комментарий

А вы учились в университете ?

Помучали бы препода :)

раскрыть ветку (1)
Автор поста оценил этот комментарий

Научные публикации есть. Закончил университет больше 10 лет назад. Всю жизнь работал в геймдеве. С 13 лет выигрывал Олимпиады по программированию, внезапно на С++. 


В универе по специальности. java, erlang, smalltalk, C#.


Но всегда увлекался рендером, "движками". Этим и занимаюсь все время. По работе мои коммиты есть в хорошо известных играх. В том числе тех, которые только вышли и у всех на слуху.


Если интересен мой пет проект, чтобы поговнить мой код (зачем же ещё? :)), то смело пишите в личку.