Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2017, 17:44   #1
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию Подходит ли мне C++? Создание аудио игр для незрячих

Здравствуйте.
Вопрос адресован к программистам C++, которые не те, кто только на словах программисты, а по настоящему программисты! Мда, вот это я загнул.
Сразу в начале скажу, что пост будет не маленьким, потому что я должен высказать всё, для полного представления вами всей ситуации.
Уже очень давно я выбираю язык программирования. И уже сдвинулся с места.
Изначально я выбирал между Python, C# и C++.
И я решил, что Python мне не помощник, а что мой выбор на C# и C++.
В будущем, я хочу разработать 1 крупный проект, потому я и выбрал C# и C++, потому что это самые лучшие варианты для моей ситуации.
Ниже я укажу мои задачи и то, чего я ожидаю от C++, помимо того задам некоторые вопросы. У кого есть возможность, пожалуйста помогите решить ситуацию и подскажите, подходит ли вообще C++ под мои задачи или нет.
Я незрячий. Полностью слеп. И моя основная задача - это разработка аудио игр. В виде дополнительной задачи, мне нужно решить, программирование моё или нет, и стоит ли сделать программирование моей основной профессией.
У нас есть аудио игры. Различные шутеры и т.д. Их много. Но разработаны большинство на C++ и на C#. Ну или на движке звуковых игр, который тоже разработан на C++.
Мне всю жизнь нравился Си-подобный синтаксис. Но пугали сложности. И я всё же решил основной упор сделать на C++, потому что:
1. Любая сложность, согласитесь, это не нереально. То есть любую сложность можно преодолеть.
2. Если преодолеть эти сложности, те кто работают с C++ понимают, что у меня открываются огромные возможности! А главное, при реализации этих возможностей, развивается логика, алгоритмическое мышление, и конечно набирается опыт! И уж тем более на C++, мне не нужно бояться за то, что у него будет маленькая скорость, будет какая-то ошибка на уровне языка и т.д.
Вот мои задачи:
1. Разработка под Windows. Причём что касается игр, скорее всего, сервер будет работать под Linux.
2. Необходимы средства для работы с клавиатурой.
3. Необходимы средства для работы со звуком. Такие решения думаю есть, типа DirectSound, Bass, а если не найду простых уже разработанных решений под эти библиотеки, то могу использовать тот же Urr klan.
4. Интересует работа с сетью. И желательно, чтобы всё было на высокоуровневом уровне, чтобы перед тем, как программировать, не нужно было становиться экспертом в областях сокетов, TCP/UDP и т.д. Кстати сразу задам вопрос. Знаю, что клиент и сервер можно писать на разных языках программирования. На сколько это так и сложнее ли в реализации, чем если писать всё на одном языке?
Я сразу скажу, что я постоянно смотрел в сторону простых решений, в сторону простых средств, просто из-за своей лени! Теперь я решил, что таким образом я не до чего не дойду. И в конце концов, простые средства от сложных отличаются лишь сложностью. А если 1 раз понять, то дальше будет только проще и интереснее!
Вот что мне требуется от C++:
1. Полностью компилируемый язык! Чтобы не было никаких ограничений.
2. Большое количество библиотек! Чтобы никогда не было их нехватки. Я уверен, что в случаи с C++, это не проблема!
3. Чтобы ничто не ограничивало меня при разработке. Чтобы я имел возможность разными путями решать задачи, чтобы я имел право самостоятельно выбирать как, что и за чем.
Я скажу, что я решил идти сложным путём. Книг простых по C++ наверно не существует. Потому я изучаю C++ по темам, через сайты и прочее, а знания закрепляю практикой.
Теперь меня интересуют вопросы:
Возможно ли, зная основы, такие как переменные, условия, циклы, массивы, указатели, ООП, уже начинать искать решения моих задач и пробовать что-то реализовывать? Если нет, что нужно доучить, чтобы уже можно было практиковаться и экспериментировать?
Чтобы реализовывать описанные мной ранее задачи, обязательно ли сильно вникать в низкоуровневое программирование, обязательно ли быть спецом в технической области? Или же не обязательно для моих задач использовать сложные инструменты C++?
Сложно ли использовать в связке C++ и Python?
И опять же о низкоуровневом. Если я хочу написать что-то типа самой программы игры на C++, а допустим логику писать на том же Python. Сложно ли это в реализации?
Ещё о низкоуровневом. Я представляю поверхносно работу компьютера, представляю память. Но не хотелось бы, чтобы для программирования на C++, нужно было бы в это углобляться слишком сильно.
Сейчас для меня самая сложная тема C++ указатели. Я вот никак не могу их понять. Потому что не имею представления как и для чего это используется, с какой целью. Но я думаю, что это не такая уж и проблема, чтобы отказываться от C++.
И вот интересует ваше мнение в целом, подходит ли мне C++?
Заранее благодарен!
jonikster вне форума Ответить с цитированием
Старый 23.06.2017, 00:53   #2
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

В С++ всего чтук 20-30 ключевых слов, есть ключевые понятия, поведения которых описано стандартом (например, указатели).

Все остальное - это библиотеки. Таким образом, сам язык понятия не имеет об аудио, видео, сети, windows. Все, совсем все - делается через библиотеки.

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

...и да, конкретно на С++ можно писать совсем без указателей, стандартная библиотека это позволяет и даже поощеряет (указатели упрятаны в ней в виде разного уровня абстракций).

Указатель - это косвенная адресация: у вас есть переменнная-указатель, которая хранит адрес (число) чего-то другого. С адресами можно проводить арифметику, в отличие от обычных чисел, адресная арифметика считает в "штуках", а не байтах. Т.е. если у вас нечто требует 10 байт, то +1 к адресу сдвинет на 1 штуку, т.е. на размер "нечто", т.е. на 10 байт.
Так как у вас две сущности - сам адрес, и что-то обозначеное адресом, соответственно есть операции изменения самого адреса и операции доступа к обозначеному используя адрес (разыменовывание указателя).

Последний раз редактировалось alexzk; 23.06.2017 в 01:04.
alexzk вне форума Ответить с цитированием
Старый 23.06.2017, 01:24   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от jonikster Посмотреть сообщение
мне не нужно бояться за то, что у него будет маленькая скорость
скорость не повысится магически от просто использования С++, надо еще и правильно это делать

В каких-то случаях может быть и наоборот меньше скорость, например какие-то полезные вещи в С++ могут быть менее удобные чем в более высокоуровневых языках (ну или надо париться с подключением библиотек... что, кстати, намного сложнее в С++ из-за отсутствия общепринятого менеджера пакетов типа NuGet, pip) и будет лень это делать.

Ну и "сложно" это не значит, что только сложнее изучать.
Это значит так же и то, что проще допустить ошибку, больше времени занимает разработка, сложнее/дольше отлаживать.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 23.06.2017, 06:56   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Alex11223, если вы называете NuGet общепринятым пакетным менеджером, то стоит упомянуть, что с С++ он дружит.
p51x вне форума Ответить с цитированием
Старый 23.06.2017, 08:54   #5
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию

О указателях, всё равно я их пока не понимаю. Зачем они нужны и для чего это нужно. Это нужно показывать на какой то элементарной задаче, и пояснить почему её нельзя решить обычными переменными.
О языке, конечно, производительность зависит ещё от правильного кода. Я это знаю и согласен с этим.
Проблема в том, что в будущем, когда я буду разрабатывать проект, я должен буду уверен, что всё работает так, как надо, и что проект работает правильно и эффективно.
Просто интересует, можно ли использовать высокоуровневые инструменты C++, или же нет, и подходит ли в целом именно в моём случаи C++.
jonikster вне форума Ответить с цитированием
Старый 23.06.2017, 08:55   #6
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию

Да и скажу, что сам синтаксис C++ мне очень нравится. Но пугают указатели и некоторые другие сложные вещи.
jonikster вне форума Ответить с цитированием
Старый 23.06.2017, 09:51   #7
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от jonikster Посмотреть сообщение
Это нужно показывать на какой то элементарной задаче, и пояснить почему её нельзя решить обычными переменными.
Нет, это надо прочитать книгу/учебник по компьютерной архитектуре.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подходит ли Python под мои задачи и требования? Создание аудио игр для незрячих jonikster Python 4 14.07.2017 19:00
Выбор языка программирования под создание аудио игр для незрячих! Python, C#, C++ или другой? jonikster Общие вопросы по программированию, компьютерный форум 13 21.06.2017 20:07
Подходит ли C# под мои задачи и требования? Создание аудио игр для незрячих jonikster C# (си шарп) 0 20.06.2017 14:59
подходит ли мне MS Access? mitek Microsoft Office Access 3 05.03.2008 13:08