Я студент, который изучает С++ уже около года, в университете и отдельно самостоятельно. Я знаю С++ (я правда не знаю насколько много я знаю С++) и азы ООП. Опыта в написании програм однако не очень много. Моя главная цель - попасть в геймдев. Недавно мне попалась мысль изучить С#, правда я не знаю насколько он мне пригодиться и нужно ли распыляться(да, я знаю про Unity). Я попытался найти курсы в интернете, и даже нашел несколько хороших платных, но, похоже, они все изучают С# с нуля, когда мне нужно только адаптировать мой багаж знаний под С#, чтобы потом изучать другие парадигмы програмирования(ну или хотя бы то же ООП, С# ведь более ООПшный, верно?). В общем я пока метаюсь среди идей и раздумий что делать дальше, и я бы хотел спросить эсть ли какой-то наиболее приоритетный вариант для такой ситуации?
Если подсуммировать вопросы, то:
С++, С# или все вместе?
Если С# то учить с нуля?
Если С++, то что учить дальше кроме ООП?
Есть ли что-то что повысит мои шансы попасть в геймдев?
Заранее огромное спасибо.
Не знаю что вас смущает, я вообще сначала учил С++, потом внезапно Javascript со всем стеком технологий, потом VBA :D, потом Java, С#... и понеслась. Ну если вы начнете программировать на C# вам точно не захочется возвращаться к С++
P.S. В целом можно сказать что вы уже знаете C#, только несколько моментов подучить по синтаксису, тогда вам сразу нужно создавать игру на Unity, и учить его апи, это уже сложнее чем С#, создайте пару тройку простых игр, поймете что к чему
CuteDoge, Ну я так понимаю он на Unity собрался делать игры, а там C# или js. Хотя лучше на том же unreal engine, он пооптимизированней будет, и там на С++ писать можно.
P.S. По поводу производительности, если она нужна то даже не стоит смотреть в сторону таких универсальных движков как unity
twobomb, ответ на PS: а где можно подучить эти самые моменты по синтаксису? Есть ли какие нибудь курсы изучения С# для людей, которые знают С++, а не для новичков? И да, я не писал что хочу писать именно на юнити, мне так то анриал больше нравится тоже. Похоже я плюсофил какой-то) Скорее всего я начну изучать геймдев с анриала, но курсы по С# все равно возьму, на всякий случай)
CuteDoge, относительно мук выбора между языками у меня некоторое время назад был такой комментарий.
Коротко, цитатами оттуда.
Язык программирования - это просто инструмент.
Инструмент всегда выбирается под конкретный проект.
Профессионализм - это способность владеть широким набором инструментов и постоянная готовность осваивать новые инструменты.
Инструмент надо всегда начинать изучать с нуля. У разных инструментов разные подходы к работе с ними. Пропустив азы, ты рискуешь начать неправильно пользоваться инструментом и скатиться в идиосинкразию.
Для C++ "около года" - это ничего. В течении этих "около года" ты изучал общие основы программирования на примере работы с инструментом C++, а не сам C++. Стандарт языка просто невозможно изучить за такое время, особенно без плотной практики.
Ну я так понимаю он на Unity собрался делать игры, а там C# или js. Хотя лучше на том же unreal engine, он пооптимизированней будет, и там на С++ писать можно.
* на юнити давно только C#, а подвариант JS давно выпилен
* у юнити свой рунтайм который исполняет C++ код полученный из IL полученный из C#, т.е. перфоманс там сравнимый с тем что вы бы написали на C++ сами, но более безопасный (по памяти и оптимизациям тулзой, и чтобы написать также самому - надо десять лет опыта)
т.е. пишется на C#, а получается перфоманс
* и никто не запрещает сделать оптимальней по алгоритмам \ подходам \ архитектуре, а на C++ новичок в unreal сделает супер-не-оптимально потому что он не умеет в оптимальность
* я бы учил C# и Unity, а никак не Unreal с C++
Вы просто изучаете Си с диезом, и всё, что узнаёте по этому языку, прикладываете к вашим знаниям Си с крестами.
> С++, С# или все вместе?
По минимуму желательно освоить оба языка, а вот рисунок кода, инструментарий и прочее — по Си# подтянуть хвосты будет как-то проще.
> Если С# то учить с нуля?
Вы уже не ноль, и курс, где вас будут просить решить квадратное уравнение в консоли, может поначалу для вас оказаться тратой времени. Но это уже зависит от ваших знаний — видимо, у вас их не так много и потери будут невелики.
> Если С++, то что учить дальше кроме ООП?
Строить живые проекты. Qt (хоть в простейшем виде). SDL (хоть в простейшем виде, раз уж вы геймдевщик). Какой-нибудь игровой движок (Unreal или Godot), но это уже серьёзно.
> Есть ли что-то что повысит мои шансы попасть в геймдев?
Трёхмерная математика. Кватернион единичной длины как замена матрице поворота в 3D. Обработка изображений и звука, хоть простейшая. «Programmer’s art» вроде шейдеров и систем частиц. Умение программировать трёхмерные игры на готовом движке хоть в простейшем варианте. Умение написать своими силами (на тонкой обёртке вроде SDL) хотя бы «Элиту».
Программисту нет разницы какой язык, а кодеру есть. Потому что кодер то и не знает что такое программирование.
Учи все популярные языки, которые встретишь и ты поймешь что разницы то по сути нет в языках.
Громкое заявление однако, но как ни крути для разных задач лучше подходять разные языки. Приведу аналогию - средневекой воин(программист) и его оружие(язык). Конешно умелый воин может хорошо сражаться и на мечах и на булаве, для него нет разницы, которое оружие он держит, однако против некоторых типов брони одни типы оружия намного еффективней нежели другие(меч против лат сравни с клевцом например). Попробуй написать полноценную крослатформенную 3д видеоигру шутер с мультиплеером на пхп или js.
Поправь если я не прав.
На JS кстати вполне можно. Но ответ не в том можно ли - ответ в том что теоретически возможно так как во всех них есть элементраные операции сравнения, ветвления, переменные и т.д. Базовые алгоритмы можно реализовать на любом из популярных языков.