@Wylaroren

Что можно разработать на C++ кроме нативных GUI-приложений и серверной части веб-приложений?

Хотел бы освоить язык C++ вдобавок к уже освоенным TypeScript и C#.

Как знают опытные программисты, учить что-то просто так - подход малоэффективный; нужен какой-то проект, более-менее приближенный к реальности. Однако, у меня под веб-разработку уже отведён TypeScript, а пот разработку нативных графических приложений отведён C#, и конкретно в этих областях C++ мне не понадобится (разве только если нужно будет написать сервер для какого-нибудь микросервиса, осуществляющего объёмные вычисления с хорошей производительностью).

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

1. Разработка игр на Unreal Engine. Авиасимулятор типа Project Wingmen я в одиночку едва ли потяну, а простую стратегию в реальном времени создать самостоятельно с Unreal Engine, наверное, реально. Не знаю правда, насколько C++ важен в Unreal Engine и насколько он взаимозаменяем с Blueprint.

2. Разработка искусственного интеллекта Сейчас начался бум ИИ, и если C++ при разработке ИИ активно используется, то можно было бы вовлечься в эту область под предлогом изучения C++. Но к сожалению, у меня нет данных, согласно которым C++ активно применяется в этой области - гораздо больше там востребован Python.

3. Разработка ОС Тут всё будет зависеть от того, является ли C++ оптимальным языком для этой задачи, или же для достижения наибольшей производительность нужно писать на Ассемблере.

Есть ли у Вас ещё какие-нибудь варианты или возражения по поводу перечисленных выше?
  • Вопрос задан
  • 147 просмотров
Решения вопроса 1
AshBlade
@AshBlade
Просто хочу быть счастливым
Изучать новый ЯП стоит для расширения своего кругозора. В твоем случае - надо понять фичи C++, которых нет в C#/TypeScript.
В данном случае, это:
- управление памятью (new/delete)
- RAII
- move семантика, l-/r- value ссылки
- Шаблоны, SFINAE
- Системные вызовы и простая кроссплатформенность (C# предалагает свою абстракцию над ОС и тебе об этом думать не нужно)

Поэтому и проект надо выбирать соответствующий (управление памятью, взаимодействие с ОС напрямую и т.д.).
В качестве такого, могу предложить варианты:
- Консольная утилита для изменения метаданных изображения (это больше про управление памятью, т.к. целое изображение в памяти надо эффективно хранить)
- Библиотека для HTTP запросов (это больше про ОС и кросплатформенность)
- Собственная база данных, можешь хранить все в JSON - главное это работа с диском и фс

Дополнительно - build-your-own-x
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
nazares
@nazares
Software Engineer
На С/С++ можно все да хоть на ассемблере или даже машинном коде, абсолютно все запрограммировать. Другой вопрос, а надо ли использовать там где не надо или там, где это не сильно удобно? Здесь вопрос целесообразности, ведь время разработки иногда очень часто решает. И там где на шарпе у тебя уйдет 5 минут на си/плюсах - придется писать неделю.
- Would you tell me, please, which way I ought to go from here?
- That depends a good deal on where you want to get to - said the Cat.
- I don't much care where - said Alice
-Then it doesn't matter which way you go - said the Cat
—so long as I get SOMEWHERE,' Alice added as an explanation.
'Oh, you're sure to do that,' said the Cat, 'if you only walk long enough.'

Другими словами - "It's up to you dude, it's up to you".

В конечном итоге язык не важен важны подходы и алгоритмы решения задач. В остальном можно запрограммировать что угодно на чем угодно.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
По поводу разработки ОС. Кажется BeOS и HaikuOS были созданы с использованием языка С++.

Все остальные не используют С++ для разработки СОБСТВЕННО ядра. При этом С++ может
быть использован для разработки графической части (KDE например). Но твой вопрос скорее
всего не в этом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы