|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.06.2017, 09:53 | #1 |
Форумчанин
Регистрация: 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#, поясните почему вы так думаете, и чем это мне подходит. Плюсы минусы. Заранее спасибо! |
19.06.2017, 20:24 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
С++ это точно не про просто.
вы на самом деле столкнулись с проблемами производительности в своих проектах или просто фантазируете? Что именно в них непонятно? Там нет ничего такого сложного, чтобы за 2 месяца так и не понять. Сначала стоит узнать, что функция (ну ссылка на нее) может передаваться аргументом в другую функцию, храниться в переменной и т.п. Это возможно почти в любом языке, даже в С. А потом почитать про декораторы в Питоне и понять, что та запись с @ это просто более удобный синтаксис для передачи своей функции в другую функцию. Ну в случае с window.event наверно они просто заносятся в специальный список (обработчиков события) и вызываются когда надо.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
19.06.2017, 23:18 | #3 |
Форумчанин
Регистрация: 28.10.2014
Сообщений: 216
|
Ну вот я такое как рас не понимаю. Мне нужно объяснять на элементарном, чтобы я понял.
О скорости, ну я так думаю, что если проект большой, пусть и без видео, нужна будет скорость. Но опять же, не уверен. |
19.06.2017, 23:31 | #4 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ну если вы за 2 месяца не можете понять, что функцию можно передавать в другую функцию, то вам вряд ли какой-либо язык программирования поможет.
Вообще в том примере же даже не надо знать все эти детали работы. Там ж и так понятно при наличии базового понимания английского, что просто создали обработчик какого-то события (то есть код, который выполнится при нажатии клавиши) и пометили его особым образом для движка.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 19.06.2017 в 23:33. |
20.06.2017, 11:55 | #5 |
Форумчанин
Регистрация: 28.10.2014
Сообщений: 216
|
Я самой сути не понимаю. Передача функции в параметрах это как. Я понимаю передача параметров функции, например:
play_sound("f.wav", get_player_x(), get_player_y)) А передача функции это как, если не её параметр? |
20.06.2017, 12:31 | #6 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Я ж сказал, передать ссылку на функцию, чтоб другая функция могла ее вызвать когда надо.
Ну то есть по сути например "сказать" движку, что вон та функция — это мой обработчик нажатия клавиш, вызывай ее когда пользователь нажмет любую клавишу.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
20.06.2017, 12:44 | #7 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
Цитата:
два человека могут что-то делать с файлом. первый напечатать файл на принтере второй отправить файл по E-mail но они не знают с каким файлом им надо работать, это им необходимо сообщать (тот самый параметр функции). третий человек человек знает какой файл должен быть обработан (может быть он его сам и создает), но он НЕ ЗНАЕТ что с ним сделать (то ли печатать, то ли послать по E-mail, а может еще что-то). И есть их "командир" (ПРОГРАММА) который знает, кто что может. вот он и говорит третьему (передает ему(как функции) параметры) сделай свой файл так-то и так-то (параметры генерации файла) и "отдай" его тому-то (параметр имя человека(как функции) ) теперь этот третий (генератор файла) знает что он должен будет использовать такую-то функцию, с известными заранее параметрами (имя файла), но ЧЕМ она заниматься ему знать не дано (да и не нужно). Причем набор действий может меняться БЕЗ ИЗМЕНЕНИЯ самой этой функции. Просто у "командира" будут появляться новые люди (функции) которые будут реализовывать все новые и новые возможности.
программа — запись алгоритма на языке понятном транслятору
|
|
20.06.2017, 14:16 | #8 |
Форумчанин
Регистрация: 28.10.2014
Сообщений: 216
|
То есть, я так понимаю, что одна функция обрабатывает например нажатие клавиш, а вторая эти клавиши получает и передаёт в первую? Точнее первая вызывает вторую чтобы их получить?
|
20.06.2017, 14:55 | #9 |
Старожил
Регистрация: 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
ЛС отключены Аларом. |
20.06.2017, 22:44 | #10 | |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
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). Каждый язык играет свою роль и многое в этих языках похоже, что упрощает изучение. Программисты всю жизнь учатся. Цитата:
Это приложение написано на TypeScript и игровом движке BabylonJS Последний раз редактировалось Alex11223; 20.06.2017 в 23:15. |
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Подходит ли 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 |