Выбор между C++ и C#. Или всё же Python?

Здравствуйте.

Опять халивар? Да. И опять не типичный.

Почему? Потому что обычно такие темы начинают профи для профи. А тут недо джуниор для профи.

Но именно для профи. Если вы такой же недо джуниор, как и я, просьба пройти мимо.

Итак...

Давно давно, ну или не так уж и давно, я выбирал язык программирования для своих задач. Тогда я выбрал C#, но последние события заставляют меня сомневаться.

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

Я слепой. Да, в прямом смысле этого слова. Если не знакомы:

https://habr.com/post/260463/

Так вот, я слепой. И одно из направлений, которое интересует меня в программировании, это разработка игр.

Нет-нет, не таких игр, где графика, где нужна производительность для этой самой графики. Звуковые, аудио игры.

Как это работает?

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

У нас тоже есть шутеры. 3D карта, которая представлена координатами X, Y, Z, а игра осуществляется по средствам 3D звука. Ты можешь слышать, где находится враг, можно даже сделать прицел, в каждой игре это по разному.

То есть, теперь я думаю, вы понимаете. По сути такие же игры, как и среди видео игр, но без графики.

Представили? А теперь вернёмся к программированию.

У нас для таких игр используют разные языки. C++, C#, Python, и даже Delphi или PureBasic.

Но для меня 3 языка привлекательнее всего из этих. C++, C# и Python.

И когда-то, я выбрал Python. Я начал изучать этот язык программирования, не смотря на то, что очень мало русской литературы. Я изучаю английский, но я не хочу бросать программирование только из-за того, что я не знаю английский.

И в Python начались проблемы. С синтаксисом.

unpacking. Посмотрите на это:

Вы только посмотрите на это. Это понятно, но представьте, если этот код будет сложнее.

А как насчёт map, лямбда функций.

Но для меня ещё сложная тема - декораторы.

Я понимаю, это детский лепет. Но есть те вещи, которые меня добивают.

Скорость Python.

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

Тогда я начал выбирать между C++ и C#.

C++. Идеальный вариант, я знаю. Но этому варианту мне нужно будет долго учиться, прежде чем я начну разрабатывать игры.

C#. На этом языке уже разрабатывались аудио игры. Кроме того, у этого языка простой и привлекательный синтаксис, возможность разработки кросс-платформенных игр на Monogame.

И я выбрал именно этот язык программирования.

Но что изменилось?

Во-первых, мне нужно срочно найти работу. Для этого я однозначно выбрал Python, потому что он может меня привести к моей цели.

Во-вторых, я заинтересовался робототехникой. Роботы на C#? Слышал, что возможно. Но стоит ли?

Я мог бы выбрать Java. Но мог сделать это раньше, и я рад, что не сделал этот выбор. Потому что скоро Java будет платным.

Для начала, что я хочу получить:

Возможность реализации всего необходимого для игр. Игровые окна и обработка клавиатуры, мыши, работа с 3D звуком, сетью;

При этом иметь возможность на этом языке разработать другое приложение, если мне это будет нужно;

Робототехника.

Я вижу для себя 3 варианта:

Продолжать изучать C#,

Разрабатывать что могу на Python, но параллельно изучать C++;

Оставить только Python.

Что я хочу здесь получить?

Прежде всего, ваше мнение относительно моей ситуации. Чтобы вы посоветовали, и главное, почему.

Мне не нужен простой ответ "Возьми это" или "Возьми то". Мне нужен четкий ответ, что, как и почему.

Да, этот ответ, возможно, будет субъективным. Но он может сыграть для меня большую роль.

Вот, что я думаю о каждом из этих языков.

C++

Плюсы:

1. Можно сделать всё. Реально всё. От низкого до высокого уровня.

2. Язык развивается много лет. И существует много решений, библиотек.

3. Язык позволяет как писать на высоком уровне, те же умные указатели и т.д, так и на низком.

Минусы:

1. Сложно, а вернее много того, что нужно изучить.

2. Указатели. Всё же без них далеко не уедешь.

3. Сложно читать готовый код.

Честно, я бы скорее выбрал бы C++, если бы знал, что мне не придётся изучать его 5 лет прежде, чем я начну что-то писать, даже с помощью готовых библиотек. А я не уверен, что не придётся.

C#

Плюсы:

1. Язык, на котором я смог написать больше, чем на каком либо другом языке.

2. Язык, который не сильно отличается по производительности от плюсов.

3. Язык, на изучение которого явно уйдёт меньше времени.

Минусы:

1. Привязка к NET. Что не портировано под NET, то использовать просто так нельзя.

2. Привязка к Microsoft. Ведь Microsoft могут пойти по пути Oracle, почему нет.

3. Под вопросом робототехника.

Ну и Python

Плюсы:

1. Простой, реально простой язык. Ничего сложного. Правильнее сказать, продуктивный язык.

2. Библиотеки на... Не буду говорить все, многие случаи жизни.

3. Используется в робототехнике.

4. Можно связать с C/C++, писать механику на C/C++, а логику на Python.

Минусы:

1. Реализация сети нравится больше в C#, чем в Python.

2. Синтаксис. Динамическая типизация, отступы, декораторы.

Реально, очень не хватает C-подобного синтаксиса. Но это личное предпочтение.

3. Вещи, которые понижают производительность языка. Интерпритируемость, динамическая типизация и т.д.

В общем, что можете посоветовать?

Честно, взял бы C++, если был бы уверен, что не потрачу годы на его изучение. Но я не уверен.

Заранее благодарен за помощь!