Вот гайд
Ты выбрал тернистый путь, юный падаван.
Иди наладчиком ЧПУ, мой совет тебе.
Иди наладчиком ЧПУ, мой совет тебе.
Подумай с плюсов ли надо начинать?
С плюсов лучше заканчивать
>куда смогу пойти на работу
gamedev||embedded
но такие вещи лучше спрашивать у linkedin||hh
gamedev||embedded
но такие вещи лучше спрашивать у linkedin||hh
как минимум код в Unreal Engine писать надо на C++
Там не чистые плюсы, потому как у них виртуальная машина, что уже для плюсовиков нонсенс. Если пытаться пропихивать ему чистый плюсовый код, не обмазанный анриловскими макросами, то он будет падать в любой непонятной ситуации, даже если со стороны твоего кода, казалось бы, все норм. А с макросами код мало чем отличается от какого-нибудь шарпа.
Там сборка мусора есть для наследников от UOBJECT, а не виртуальная машина. Макросы там по сути для рефлексии и всего вытекающего. Садись обратно на свой диван, эксперт.
С UE изучать плюсы не советую, так как атрофируется мозг безвозвратно. STL там можно сказать свой, но он местами странный.
С UE изучать плюсы не советую, так как атрофируется мозг безвозвратно. STL там можно сказать свой, но он местами странный.
Попробуй поюзай чистые плюсовые классы в лямбдах, таймерах, и RPC функциях, и найди ошибку где упало, грамотей. А так же изучи как работают потоки в геймтреде.
То что выше ты описал, не работает скорей всего как раз таки из-за необходимости рефлексии, либо менеджмента лайфтайма со стороны движка. Тут я не эксперт, так как не ебу про этот ваш анрил (я С++ разраб).
Допустим я не ебу как они работают. В каком месте это противоречит моим словам про вм? Ты мне хочешь сказать что кол игры и эдитора компилится не в код для конкретной платформы? В каком месте там вм начинается?
Допустим я не ебу как они работают. В каком месте это противоречит моим словам про вм? Ты мне хочешь сказать что кол игры и эдитора компилится не в код для конкретной платформы? В каком месте там вм начинается?
"Тут я не эксперт, поэтому пошлю на диван человека, который, возможно, имеет какой-то опыт".
Ты прав только в том, что сборщик мусора обращает внимание только на наследников UObject(это база, на которой все держится), и то, что изучать анриал, с целью изучения С++ - это плохая идея (в итоге только больше запутаешься и не поймешь ни языка, ни движка).
Считается ли чистым С++ кодом использование заранее написанных для тебя методов? Я думаю, нет. Строчка "А + В" будет выглядеть одинаково на большинстве языков, а плюсовые "финты ушами" с указателями очень не приветствуются ни движком, ни кодстайлом.
В анриале ты вообще должен забыть про существование таких опасных операторов как "new" и "delete", и всю присущую им арифметику указателей. Все, что касается игровых потоков, накладывает на разработчика жесткие ограничения в используемых методах. Под любой класс или структуру у фреймворка есть свои заранее заготовленные макросы и набор методов, которые ты обязан использовать. В противном случае, код даже после успешной компиляции будет либо просто игнорироваться, без выполнения, либо падать во время выполнения, а стектрейс забурится внутрь движка так глубоко, что ты будешь долго откапывать место, где "рвануло" и почему. С одной стороны, соблюдение кодстайла нужно для читабельности кода, с другой для уменьшения количества багов, поверх тех, что уже наговнокодили разработчики движка (а они тоже не редко ошибаются, особенно в последние годы).
Виртуальная машина тут не такая продвинутая, как у какого-нибудь шарпа. Она начинает работать там, где начинаются блюпринты и некоторые фичи редактора. Нужна не для кроссплатформенности, а, прежде всего, для того, чтобы блюпринты не компилились так же долго, как и плюсы. А вот билд под конкретную платформу уже собирается на чистых плюсах, после того, как в них интерпретируется все блюпринтовые элементы проекта. Именно поэтому, например, некоторые вещи в релизном билде работают иначе чем в эдиторе под виртуальной машиной.
С диванным погорячился, но энивэй
В плюсах ты тоже обычно не юзаешь ни new, ни delete напрямую. Как минимум потому что есть умные указатели и штуки вроде make_shared, make_unique.
Кроме того в том же анриле есть как раз таки те самые пресловутые умные указатели, https://docs.unrealengine.com/4.26/en-US/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/SmartPointerLibrary/.
С виртуалькой я согласен, я не знал как УЕ ранает блюпринты. Но это не отменяет факта что тебе никто не мешает писать код не касаесь этой хуйни, ровно как не касаять наследования от UOBJECT и сборки мусора. До тех пор, пока ты не пытаешься писать что-то около геймплейной логики например.
Предлагаю закончить страдать хуйней и сойтись на том, что мы смотриим на одно и тоже под разными углами. Так как технически то что сказал ты, не противоречит тому что сказал я
В плюсах ты тоже обычно не юзаешь ни new, ни delete напрямую. Как минимум потому что есть умные указатели и штуки вроде make_shared, make_unique.
Кроме того в том же анриле есть как раз таки те самые пресловутые умные указатели, https://docs.unrealengine.com/4.26/en-US/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/SmartPointerLibrary/.
С виртуалькой я согласен, я не знал как УЕ ранает блюпринты. Но это не отменяет факта что тебе никто не мешает писать код не касаесь этой хуйни, ровно как не касаять наследования от UOBJECT и сборки мусора. До тех пор, пока ты не пытаешься писать что-то около геймплейной логики например.
Предлагаю закончить страдать хуйней и сойтись на том, что мы смотриим на одно и тоже под разными углами. Так как технически то что сказал ты, не противоречит тому что сказал я
Из интересного только геймдев. Но интересную вакансию в РФ будешь очень долго искать, даже если наберешься достаточно опыта, чтобы называться джуном. Все остальные востребованные для плюсов области тебя так задушат, что перспектива "стать проституткой" будет не такой плохой. Десктопные приложения сейчас никому не нужны, а программировать контроллеры и налаживать станки на заводе это очень на любителя.
3 года работы на заводе программистом C++. Это дрочево. Куча старых программ с древним кодом. Документации нет, как и живых свидетелей сотворения кода. Задачи самые обычные, примитивные, но гугление решений для C++ вызывает кучу скепсиса. Всё, что они там предлагают, выглядит излишне мудрёным. И это меня ещё избавили от работы с контроллерами.
Лучше идти на что-то более современное. Даже наши динозавры понимали, что всё это говно надо удалять и писать с нуля на каком-нибудь вебе.
Лучше идти на что-то более современное. Даже наши динозавры понимали, что всё это говно надо удалять и писать с нуля на каком-нибудь вебе.
Намедни попалась на глаза вакансия на плюсовика - Мск, опыт от трех до шести лет, ЗП - 60-120 тыс.
Это к тому, что если Си - это не от любви к искусству, а за деньги, то лучше в тестирование или девопс(но там сложное).
Это к тому, что если Си - это не от любви к искусству, а за деньги, то лучше в тестирование или девопс(но там сложное).
Подтвержу на все сто пидоров выше, идти в плюсы сегодня надо либо от большой любви к искусству, либо я хз зачем. Если твоя задача - получить работу, изучай что-то более простое и современное. Go очень востребован на бэкэнде, js (вернее typescript и его вариации) на фронтенде. По ощущениям подавляющее количество вакансий в больших компаниях сейчас закрываются этими языками. Можно вообще начать с тестировщика, изучая питон и постепенно вкатываться в автотестирование. Это нормальные пути с хорошими зарплатами и без лишнего дрочева.
Начни с CS50, как раз новый вышел.
А еще мне понравилась книга "Освой самостоятельно C++ за 21 день", начал читать по приколу, просто из-за мемасиков.
С++ далеко не для всех, слабые духом не освоят. И я не освоил.
А еще мне понравилась книга "Освой самостоятельно C++ за 21 день", начал читать по приколу, просто из-за мемасиков.
С++ далеко не для всех, слабые духом не освоят. И я не освоил.
А что вообще понимается под "освоил"? Как это вообще определить?
Ну, это когда не случайно код лепишь в надежде что оно должно работать, а как-то осознно прогарммируешь и оно работает :)
Осознанно можно написать и hello world, и chatgpt. Что из этого считается за освоил?
это считается что освоил выводить текст
Ну допустим я несколько лет работал на нём, что-то осознанно кодил, и оно даже работало. Ни у кого ко мне вопросов не возникло. Однако про Qt знаю только название. Все программы были элементарные, ни разу не приходилось погружаться вглубь, весь байтодрочь всегда обходил стороной. Ни разу не ассоциирую себя со словом "освоил". Сейчас вот Go колупаю, но тоже без понятия, как оценивать свои познания. Деньги за работу на нём ещё не получал, но написал парочку тг ботов. Это считается за "освоил"?
А говорили "IT это просто", чёртовы жирафы.
А говорили "IT это просто", чёртовы жирафы.
А занудство видимо передаётся какой-то стандроной библиотекой.
Что бы освоить С++ не обязательно надо осваивать Qt, оно не всем надо.
На собеседование пойди, возьмут на работу - значит освоил :D
Что бы освоить С++ не обязательно надо осваивать Qt, оно не всем надо.
На собеседование пойди, возьмут на работу - значит освоил :D
>>возьмут на работу - значит освоил :D
Ну такое себе. Мой прошлый собес:
- C++ знаешь?
-- Нет
- узнаешь.
не узнал (
Ну такое себе. Мой прошлый собес:
- C++ знаешь?
-- Нет
- узнаешь.
не узнал (
ну бывает
>А что вообще понимается под "освоил"?
Хотя бы каким-то объективным критерием считаю то, что если тебе за это платят - то в принципе можно считать, что освоил. Остальное - слишком субъективно.
Но даже эта точка зрения очень субъективна
Хотя бы каким-то объективным критерием считаю то, что если тебе за это платят - то в принципе можно считать, что освоил. Остальное - слишком субъективно.
Но даже эта точка зрения очень субъективна
У меня практическое применение плюсов началось с Qt, пока там и закончилось. Документация неплохая, и примеры можно разобрать, но я с этим столкнулся уже имея опыт с Си, и зная теорию ООП после универа. В остальном, как обычно, лучше искать задачи и пытаться их решить. Кроме самих плюсов советую изучить системы сборки, типа CMake, и как работать с компилятором. По работе, ну, с этим в embedded.
1. Если ты не знаешь, чем заниматься на плюсах, то вероятнее всего тебе эти плюсы не нужны.
2. Полагалаю, что ты не совсем тот вопрос задаешь. Надо не язык выбирать, а то, чем ты хочешь заниматься (хотя бы перечень сузить), а уже под него выбирать технологию/язык.
3. Плюсы сложны и их сложность в данный момент довольно не часто окупается. Не так много задач, для которых плюсы будут хорошим решением. т.к. большую часть задач эффективнее (с точки зрения суммарного выхлопа и разработки, а не производительности) решают более высокоуровневые языки, а для кусков, которые критичны по производительности можно дописать библиотеку на С (ну или С++).
4. Если таки брать проекты на плюсах, то это таки либо упомянутые embeded (хотя там больше C), геймдев (Unreal Engine либо самописные), тяжеловесные десктоп-приложения (ну а вдруг привалит какой-нибудь Photoshop или 3dsMax писать, либо IDE какую-нибудь), либо какие-нибудь критичные к производительности или платформе части серверной системы.
2. Полагалаю, что ты не совсем тот вопрос задаешь. Надо не язык выбирать, а то, чем ты хочешь заниматься (хотя бы перечень сузить), а уже под него выбирать технологию/язык.
3. Плюсы сложны и их сложность в данный момент довольно не часто окупается. Не так много задач, для которых плюсы будут хорошим решением. т.к. большую часть задач эффективнее (с точки зрения суммарного выхлопа и разработки, а не производительности) решают более высокоуровневые языки, а для кусков, которые критичны по производительности можно дописать библиотеку на С (ну или С++).
4. Если таки брать проекты на плюсах, то это таки либо упомянутые embeded (хотя там больше C), геймдев (Unreal Engine либо самописные), тяжеловесные десктоп-приложения (ну а вдруг привалит какой-нибудь Photoshop или 3dsMax писать, либо IDE какую-нибудь), либо какие-нибудь критичные к производительности или платформе части серверной системы.
5. Если смотреть другие языки, то это уже обсосано везде, но кратко:
- хочешь фронтенд сайтиков - тут Javascript (+ обёртка в виде Typescript) и к нему какой-нибудь фреймворк популярный. Альтернатив по языкам нет.
- хочешь бекенд сайтиков, то тут выбор самый широкий - c#, java, js (nodejs), python, ruby, go и т.д., дофига их.
- хочешь игры пилить - C# (Unity) либо C++ (Unreal Engine), остальное на уровне погрешности.
- хочешь банковские системы - java
- мобильные приложения - java/kotlin под андроид, swift (ну и к нему вероятно придётся Objective-C чуть выучить) - под ios. + сейчас ещё часто используют всякие технологии типа ionic, xamarin, react native и т.д. чтобы можно было на C#, JS/TS писать под все мобильные платформы сразу пилить одну приложуху.
- десктоп - C#, Java, C++, а сейчас ещё и JS/TS используя упомянутые выше electron, nwjs (дофига их разных)
- хочешь ИИ, аналитику, математику - Python
- хочешь долбиться в задницу - 1C или Ruby
Вообще, при всей своей отвратительности, Javascript (и к нему ОБЯЗАТЕЛЬНО Typescript) позволяет иметь более широкий диапазон сфер, куда можно приткнуться т.к. сейчас на нём помимо фронтенда можно и бекенд, и с меньшей вероятностью, но всё же десктоп и мобайл.
Если хочешь диапазон сфер и нормальный язык - то C#
- хочешь фронтенд сайтиков - тут Javascript (+ обёртка в виде Typescript) и к нему какой-нибудь фреймворк популярный. Альтернатив по языкам нет.
- хочешь бекенд сайтиков, то тут выбор самый широкий - c#, java, js (nodejs), python, ruby, go и т.д., дофига их.
- хочешь игры пилить - C# (Unity) либо C++ (Unreal Engine), остальное на уровне погрешности.
- хочешь банковские системы - java
- мобильные приложения - java/kotlin под андроид, swift (ну и к нему вероятно придётся Objective-C чуть выучить) - под ios. + сейчас ещё часто используют всякие технологии типа ionic, xamarin, react native и т.д. чтобы можно было на C#, JS/TS писать под все мобильные платформы сразу пилить одну приложуху.
- десктоп - C#, Java, C++, а сейчас ещё и JS/TS используя упомянутые выше electron, nwjs (дофига их разных)
- хочешь ИИ, аналитику, математику - Python
- хочешь долбиться в задницу - 1C или Ruby
Вообще, при всей своей отвратительности, Javascript (и к нему ОБЯЗАТЕЛЬНО Typescript) позволяет иметь более широкий диапазон сфер, куда можно приткнуться т.к. сейчас на нём помимо фронтенда можно и бекенд, и с меньшей вероятностью, но всё же десктоп и мобайл.
Если хочешь диапазон сфер и нормальный язык - то C#
Чтобы написать коммент, необходимо залогиниться