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

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

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

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

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

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

Здравствуйте.
Тема, которую я рассматриваю уже очень много времени. Но мне надоело стоять на месте. Потому готовьтесь читать не маленький пост.
Ситуация вот в чём. Нужно определиться с языком программирования. И определиться, чтобы потом не жалеть и чтобы он подходил под всё, что мне нужно.
Сразу скажу, что кросс-платформенное программирование мне не нужно. Только наш любимый Windows.
Итак, выбор я свой остановил на трёх языках, Python/C#/C++. Вот что я о них думаю:
Python - простой в синтаксисе, имеет простое ООП, имеет не мало библиотек. Но маленький в скорости, имеет не простые решения для некоторых задач. Сложен в компиляции. Хотя я видел проект, в котором даже не оставались .pip файлы, указывающие, что разработано было на Python.
C# - думаю, самый простой из си-подобных языков по синтаксису. Из плюсов можно выделить полную поддержку Windows, работа с окнами, NETFramework, который имеет очень много возможностей и т.д. Из минусов, например не значительный минус, обязательной установки NETFramework. Но я не думаю, что это уж сильно критичная проблема. Ещё 1 минус, в черезмерности ООП. Там он везде, из-за чего у меня появляется сложность. Да я привык уже к main, привык к функциям вообще, но не привык к такому стилю, который используется в C#. Не последовательный, непонятный. Для не сильно сложных задач применяется непонятная сериализация, потоки и прочее.
C++ - по сравнению с прошлыми двумя языками, быстрый, гибкий, Но сложный! В синтаксисе есть много непонятного. Часто вижу непонятный #define, #if, #endif и т.д. Для решения моих задач, на сколько знаю, требует долгих лет обучения и практики.
Вот что мне необходимо:
1. Огромные возможности по программированию под Windows;
2. Не знаю, на сколько для моих нужд нужна скорость, но не хочу, чтобы всё было слишком медленно;
3. Простой синтаксис, который позволит больше думать не о коде, а о алгоритме;
4. Хорошие возможности, много библиотек для простой работы со звуком, с клавиатурой;
5. Возможности по работе с сетью! По простой работе с сетью! К примеру, я видел язык программирования, где есть сервер и клиент, и они друг другу шлют так называемые пакеты. Оба они их читают, и оба выполняют действия согласно пакету. Например сервер шлёт клиенту hello, клиент это получает, там есть проверка на события, если событие получение пакета, и пакет этот hello, клиент к примеру выводит hello на экран. То есть не надо думать о сокетах, TCP/UDP и прочих сложных вещах.
6. Большое количество простых, понятных учебников, читать которые удовольствие. Не скажу, что читать например Марка Лутца по Python очень просто, интересно и я получаю от этого удовольствие.
7. Чтобы программируя на языке, я почти не думал о низкоуровневом, типа работы с памятью или математике.
8. Чтобы язык программирования имел ООП! Например в игре, чтобы я мог через класс описать врага. Его HP, позицию, возможности и т.д
По сути, основная моя цель - разработка аудио игр. Для этого, нужна библиотека, которая откроет окно, нужна библиотека для работы с 3D звуком без вычислений, то есть указать лишь координаты x/y/z, библиотека для простой работы с клавиатурой, сетью, файлами и т.д.
Но ещё интересует, чтобы используя этот язык, я мог не сильно мучиться для решения других задач. Чтоб можно было просто взять библиотеку, изучить её функции и просто программировать!
В Python для разработки аудио игр есть 2 хороших библиотеки. Pygame, которая мне нравится простотой своего синтаксиса, но не нравится скоростью, и pyglet, где требуются знания сложных, непонятных дикараторов и т.д..
Ребят, задавайте вопросы, уточняйте, но я очень прошу тех, кто не дилетант в этом, помочь мне разобраться в данном вопросе!
И не пишите просто, мол или Python для тебя, или C#, поясните почему вы так думаете, и чем это мне подходит. Плюсы минусы.
Заранее спасибо!
jonikster вне форума Ответить с цитированием
Старый 19.06.2017, 20:24   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

С++ это точно не про просто.
Цитата:
Сообщение от jonikster Посмотреть сообщение
нравится простотой своего синтаксиса, но не нравится скоростью
вы на самом деле столкнулись с проблемами производительности в своих проектах или просто фантазируете?
Цитата:
Сообщение от jonikster Посмотреть сообщение
требуются знания сложных, непонятных дикараторов
Что именно в них непонятно? Там нет ничего такого сложного, чтобы за 2 месяца так и не понять.

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

А потом почитать про декораторы в Питоне и понять, что та запись с @ это просто более удобный синтаксис для передачи своей функции в другую функцию.

Ну в случае с window.event наверно они просто заносятся в специальный список (обработчиков события) и вызываются когда надо.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.06.2017, 23:18   #3
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию

Ну вот я такое как рас не понимаю. Мне нужно объяснять на элементарном, чтобы я понял.
О скорости, ну я так думаю, что если проект большой, пусть и без видео, нужна будет скорость. Но опять же, не уверен.
jonikster вне форума Ответить с цитированием
Старый 19.06.2017, 23:31   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну если вы за 2 месяца не можете понять, что функцию можно передавать в другую функцию, то вам вряд ли какой-либо язык программирования поможет.

Вообще в том примере же даже не надо знать все эти детали работы. Там ж и так понятно при наличии базового понимания английского, что просто создали обработчик какого-то события (то есть код, который выполнится при нажатии клавиши) и пометили его особым образом для движка.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 19.06.2017 в 23:33.
Alex11223 вне форума Ответить с цитированием
Старый 20.06.2017, 11:55   #5
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию

Я самой сути не понимаю. Передача функции в параметрах это как. Я понимаю передача параметров функции, например:
play_sound("f.wav", get_player_x(), get_player_y))
А передача функции это как, если не её параметр?
jonikster вне форума Ответить с цитированием
Старый 20.06.2017, 12:31   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

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

Ну то есть по сути например "сказать" движку, что вон та функция — это мой обработчик нажатия клавиш, вызывай ее когда пользователь нажмет любую клавишу.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.06.2017, 12:44   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
А передача функции это как, если не её параметр?
есть три человека (три функции)
два человека могут что-то делать с файлом.
первый напечатать файл на принтере
второй отправить файл по E-mail
но они не знают с каким файлом им надо работать, это им необходимо сообщать (тот самый параметр функции).

третий человек человек знает какой файл должен быть обработан (может быть он его сам и создает), но он НЕ ЗНАЕТ что с ним сделать (то ли печатать, то ли послать по E-mail, а может еще что-то).

И есть их "командир" (ПРОГРАММА) который знает, кто что может.
вот он и говорит третьему (передает ему(как функции) параметры)
сделай свой файл так-то и так-то (параметры генерации файла)
и "отдай" его тому-то (параметр имя человека(как функции) )
теперь этот третий (генератор файла) знает что он должен будет использовать такую-то функцию, с известными заранее параметрами (имя файла), но ЧЕМ она заниматься ему знать не дано (да и не нужно).
Причем набор действий может меняться БЕЗ ИЗМЕНЕНИЯ самой этой функции.
Просто у "командира" будут появляться новые люди (функции) которые будут реализовывать все новые и новые возможности.
  • пересылка путем социальных сетей
  • перевод в другой формат и ...
  • .......
P.S. практически то же самое представление можно использовать и для событий, которые по своей сути те же функции.
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 20.06.2017, 14:16   #8
jonikster
Форумчанин
 
Регистрация: 28.10.2014
Сообщений: 216
По умолчанию

То есть, я так понимаю, что одна функция обрабатывает например нажатие клавиш, а вторая эти клавиши получает и передаёт в первую? Точнее первая вызывает вторую чтобы их получить?
jonikster вне форума Ответить с цитированием
Старый 20.06.2017, 14:55   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Первая не вызывает вторую обычно.

В данном случае вы создаете функцию-обработчик (on_keypress), сообщаете о ней (передаете ссылку) движку каким-либо способом (с помощью декоратора или присваивания в window.on_keypress) и потом он в цикле обработки событий (https://ru.wikipedia.org/wiki/%D0%A6...82%D0%B8%D0%B9 ) вызывает ее когда надо.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.06.2017, 22:44   #10
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Python я изучаю, потому что на нём можно писать плагины для 3D редактора Blender (а так же для Maya) и плагины для 2D редактора GIMP.

Для веб-разработки приложений с 3D графикой я использую Node.js и язык TypeScript. Так же приходится изучать JavaScript. Изучаю для 3D: WebGL, BabylonJS и Three.js. Для 2D: WebGL, Pixi.js, Phaser. Все эти библиотеки и движки работают с TS. На TS проще писать и отлаживать, чем на JS. Автором языка TS является тот же человек, который разработал язык C# и Delphi - Андерс Хейлсберг. Наверное, поэтому TS и C# очень похожи.

Для 3D-приложений для мобильных и desktop я использую Unity + C#. Ещё на C# удобно делать приложения c GUI. Если нужно что-то простое с 3D, то в WPF или WinForms можно легко встроить OpenTK.GLControl

Язык C++ я тоже использую, так как на нём написано много примеров и программ для OpenGL, которые можно перенести на C#+OpenTK или TS+WebGL

Итого, получается, что я одновременно изучаю и использую следующие языки: C++, C#, Python, TypeScript, JavaScript, GLSL (язык шейдеров), ShaderLab/Cg/HLSL (язык шейдеров для Unity). Каждый язык играет свою роль и многое в этих языках похоже, что упрощает изучение. Программисты всю жизнь учатся.

Цитата:
Сообщение от jonikster Посмотреть сообщение
По сути, основная моя цель - разработка аудио игр. Для этого, нужна библиотека, которая откроет окно, нужна библиотека для работы с 3D звуком без вычислений, то есть указать лишь координаты x/y/z, библиотека для простой работы с клавиатурой, сетью, файлами и т.д.
Но ещё интересует, чтобы используя этот язык, я мог не сильно мучиться для решения других задач. Чтоб можно было просто взять библиотеку, изучить её функции и просто программировать!
В Python для разработки аудио игр есть 2 хороших библиотеки. Pygame, которая мне нравится простотой своего синтаксиса, но не нравится скоростью, и pyglet, где требуются знания сложных, непонятных дикараторов и т.д..
Попробуйте нажимать в следующем приложении клавиши-стрелки клавиатуры и определить источник 3D звука --> ссылка

Это приложение написано на TypeScript и игровом движке BabylonJS

Последний раз редактировалось Alex11223; 20.06.2017 в 23:15.
8Observer8 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подходит ли C# под мои задачи и требования? Создание аудио игр для незрячих jonikster C# (си шарп) 0 20.06.2017 14:59
выбор языка программирования для изучения Иван_Брянск Помощь студентам 7 16.01.2017 21:40
Выбор системы для программирования под iOS VladX09 Мобильные ОС (Android, iOS, Windows Phone) 1 07.03.2013 19:01
Написание бота под браузерную игру. Выбор языка программирования mavol Помощь студентам 0 12.12.2012 18:46
Выбор языка программирования для работы с объектами сторонних приложений... Smerch66 Общие вопросы по программированию, компьютерный форум 3 30.03.2011 01:54