Здравствуйте, Basil2, Вы писали:
B>Впервые за почти 10 лет начал искать работу. И с удивлением обнаружил, что на плюсах почти не осталось обычной работы.
А что такое "обычная работа"?
B>Практически все вакансии требуют специфического опыта: B>- embedded
Чего там специфического?..
B>- графика или игры
Тут да, есть разное специфическое.
B>- OpenCV и прочий ML B>- крипта, блокчейн или алготрейдинг
Я так и не понял, зачем это надо. Но да, модно.
B>- серверы и сервисы с высоконагруженностью и многопоточностью
Так это и есть "обычная работа", не?
B>И почти не осталось вакансий, где просто требуется хорошее знание С++. Что для меня весьма печально, т.к. как-то не довелось погрузиться в вышеозначенные области, а кодил в основном под десктоп всякие мелкие вещи. На последний пункт вся надежда, все-таки с сокетами, протоколами и потоками немного дела имел, смогу рассказать что там к чему. Но речь не об этом
А, под десктоп... Там же C++ уже давно уступил всяким C# (вин) и прочим питонам (лин), не?.. Я, впрочем, далёк.
Но и там бывают внутренности на С++, чтобы быстрее.
У меня С++ пока ничем не заменён. Не знаю уж, увы или ура, но пока что альтернативы для кроссплатформенного кода iOS/Android не придумано.
Есть подвижки, но пока на любительском уровне.
У меня в конторе большинство пишет на С++. Под винды.
Здравствуйте, Pzz, Вы писали:
Pzz>>>Кончилось тем, что освобождения я вообще отломил, ибо было невыносимо медленно. Так что мог бы сразу на сишечке писать
M>>И нигде бы не ошибся с указателями?
Pzz>Ну, если память вовсе не освобождать, с чего бы мне с ними ошибаться?
Ну, хз, я давно на голых указателях ничего большого не делал, но помню, что это всегда была боль
Навскидку — у вас там операторов присваивания нет, источник и приемник легко перепутать. Хотя, конечно, если много лет этим занимался, то таких проблем будет мало
M>>Хз, конечно, что это значит, но чем-то неподъемным не выглядит. Странно, что сложные манипуляции со сложными данными, а выбрал ты строки.
Pzz>Строки там были, помимо прочего.
M>>Профайлить пробовал?
Pzz>А какой смысл профайлить, если запрет освобождения дал сразы прирост скорости больше, чем на порядок?
Ну, ок
Но это всё, согласись, всё равно не говорит о том, что C++ — плохой язык
Здравствуйте, Skorodum, Вы писали:
M>>Но вот например, забагованное до нельзя поделие — GCC — написано от и до на чистой сишечке, а качественный компилятор с человеческим лицом (clang/llvm) — на C++ S>По качеству генерируемого кода clang пока не дорос до GCC (вроде не один большой проект еше не использоует clang для релизов), но он уже получает очень широкое распространение за счет лучшей архитектуры. Clang-tidy, clang-format, clazy реально облегчают жизнь и улучшают качество кода.
Проекты есть, та же фряха перешла.
А вот кто-нибудь видел сравнение clang/gcc/msvc в плане качества/скорости генерируемого кода? Насколько clang хуже?
Здравствуйте, Pzz, Вы писали:
Pzz>>>В принципе, это хорошо, конечно, что этих дебильных внешних форматов, в которые надо сериализовать, не так уж и много. Но как-то не очень-то generic получается. В общем, серебряной пули опять не получилось.
M>>В случае динамической рефлексии описанная ситуация чем-то отличается?
Pzz>Нет, конечно.
Здравствуйте, Skorodum, Вы писали:
M>>По виртуализации в рантайме: S>Это ж масло-масленное S>Виртуальные функции это полиморфизм времени выполнения по определению.
Есть еще виртуализация в компайл-тайме, и виртуальные функции там не причем
Здравствуйте, B0FEE664, Вы писали:
BFE>>>Всё это хорошо, только вот на практике, ещё на этапе составления спецификации известно что, куда и с какой скорость писать, поэтому такая потребность в абстрагировании оказывается излишней.
M>>И? Надо писать и COM-порт и на флешку. BFE>В COM-порт вы будете писать без ответа-подтверждения?
Зависит от
BFE>Что будете делать, если на флешке нет места?
Зависит от
M>>А еще я хочу, чтобы тот же код работал в утилите на компе, и там уже, куда писать, определяется в рантайме BFE>Тогда надо предоставить спецификацию на комп и тесты для всех видов рантайма.
Здравствуйте, Pzz, Вы писали:
Pzz>>>В принципе, это хорошо, конечно, что этих дебильных внешних форматов, в которые надо сериализовать, не так уж и много. Но как-то не очень-то generic получается. В общем, серебряной пули опять не получилось.
__>>При чем тут статическая интроспекция?
Pzz>Пытаюсь понять, насколько она вообще полезна.
Она полезна также, как и динамическая, только используется в момент компиляции/кодогенерации
Здравствуйте, RussianFellow, Вы писали:
B>>И почти не осталось вакансий, где просто требуется хорошее знание С++. RF>Почему это так?
Потому что появились другие языки, которые лучше решают простые задачи (типа запилить десктопное приложение с интерфейсом).
B>>Что для меня весьма печально, т.к. как-то не довелось погрузиться в вышеозначенные области RF>Аналогично. RF>Я кодил (и кожу) решение сложных математических задач.
Ну, тут можно в криптографию или блокчейн идти — достаточно много задач, и почти везде плюсы/раст/го.
RF>Почему схлопывается такой хороший, мощный (пусть и сложный) язык программирования?
Потому что в других областях есть более специализированные решения.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, Sinclair, Вы писали:
S>Благодарю за шикарную тему. S>Такого количества каминг-аутов не было, имхо, со времён Синтаксического Оверхеда или Линукс против Всех.
На здоровье!
И я ведь не нарочно, просто был под впечатлением от беглого просмотра вакансий. Но дык, ведь 10 лет почти не смотрел...
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, Мирный герцог, Вы писали:
B>>А о том, что С++ повторяет судьбу С и постепенно сужается в узкие вышеозначенные области. Причем последние две области будут, скорее всего, относительно динамично переползать на Go и Rust. И только графика и ML, в силу мощных устоявшихся библиотек, еще долго будут тащить за собой C++. МГ>из C++ надо убегать роняя тапки, rust кстати не взлетит, потому что птичий язык для извращенцев-мазохистов (а-ля C++ или Haskell), а не для инженеров.
Дык таких "извращенцев" море! С и С++ программистов огромное количество, и им очень сподручно переходить на Rust, особенно плюсовикам.
МГ>Го взлетит, потому что наоборот, практичный язык для инженеров, а не теоретиков кайфа.
Инженерам сподручнее Python. Но да, Go им тоже хорош.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, Pzz, Вы писали:
B>>Я здесь не про язык вообще, а конкретно про С++. Он сложнее чем большинство предметных областей. Если человек знает С++, он осилит почти что угодно. Поэтому знание С++ является определяющим, на мой взгляд.
Pzz>Ну тогда военных пилотов надо до любой профессии без собеседований и сертификатов допускать. Если человек осилил истребитель, он осилит почти что угодно.
Вы путаете "допускать без сертификатов" и "осилит". Осилит означает что наверняка сможет, хотя конечно после некоторой тренировки.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, Pzz, Вы писали:
Pzz>>>В линухе stdlib'овский malloc и есть платформенный.
CC>>Ну, значит то же самое что и в MSVC — просто вызывается платформенный аллокатор.
Pzz>Да, но это совсем не объясняет, зачем он такой тормозной.
У винды есть еще debug heap реализация кучи, она обычно включается, когда производится запуск под отладчиком. Но, мало ли, может что-то пойти не так, и она всегда будет использоваться.
Плюс, можно покопать, из какой конкретно кучи по умолчанию память выделяется (скорее всего GetProcessHeap), попробовать её потюнить
Здравствуйте, Dair, Вы писали:
D>У меня С++ пока ничем не заменён. Не знаю уж, увы или ура, но пока что альтернативы для кроссплатформенного кода iOS/Android не придумано.
Ничего себе у вас выбор для мобил.
А почему именно С++? Не JavaScript или C# например?
(сам мучаюсь выбором, сейчас на JS/Phonegap но дерьмище еще то. Хотел бы Python или Lua но с ними там не особо, а в C# залезать не хочу).
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, Skorodum, Вы писали:
lpd>>В распозновании речи важен алгоритм, а не тулзы. Потому что оптимизировать будут именно его(при необходимости), а не лепить мув-семантику везде где попало. S>Сейчас подобные задачи решаются и на ОЧЕНЬ ограниченном железе (в т.ч. на 8051)
Ну, про распознавание речи и 8051 это ты, мне кажется, загнул
P>>А можно подробностей? А то все что я видел "у взрослых пацанов" без динамической памяти — это своя нарукоблуженная вариация хипа поверх статического буфера. Но память они не аллоцируют, ага. И исключений нету =)
BFE>так делают, потому, что тогда можно написать доказательные тесты работы, когда память кончилась.
В чем здесь отличие от OOM?
BFE>Однако обычно можно написать код, где вообще не нужна динамическая аллокация, а нужна аллокация только при инициализации. Например, если при старте концигурационные данные не помещаются в статически заказанные буферы, то выдаётся ошибка типа power-up-built-in-test failed.
Если она не нужна — зачем ее использовать хоть в С, хоть с С++?
Здравствуйте, Basil2, Вы писали:
D>>У меня С++ пока ничем не заменён. Не знаю уж, увы или ура, но пока что альтернативы для кроссплатформенного кода iOS/Android не придумано.
B>Ничего себе у вас выбор для мобил. B>А почему именно С++? Не JavaScript или C# например?
Завязываясь на third-side библиотеки завязываешься на время их жизни. Завтра любая библиотека легко закончится (или, например, выйдет из моды) и что будет с приложением?
Поэтому пользуемся тем, что даёт сам производитель. Apple даёт Xcode, в котором Swift, ObjectiveC и C++.
Android даёт Android Studio, в которой Kotlin, Java и C++.
Здравствуйте, Marty, Вы писали:
S>>Сейчас подобные задачи решаются и на ОЧЕНЬ ограниченном железе (в т.ч. на 8051)
M>Ну, про распознавание речи и 8051 это ты, мне кажется, загнул
Наверное, слово из трех букв можно и на 8051 распознать, если поднапрячься.