55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,108
|
|
1 | |
Подходит ли C# под мои требования и задачи? Плюсы минусы?20.06.2017, 14:52. Показов 1889. Ответов 9
Метки нет (Все метки)
Здравствуйте.
Уже очень много времени, я выбираю язык программирования для изучения и использования. Я понял, что точно сказать мне никто не сможет, даже помочь с определением среди уже выбранных мною нескольких языков. Моя проблема в том, что никто не может углублённо подсказать информацию о определённом языке. Сейчас прошу дальше читать только тех, кто знаком хорошо с C#, кто с ним работал очень долго и много о нём знает не в теории, а в практике. Интересует, что из нижеперечисленного может C#, стоит ли его изучать для моих задач, которые будут описаны ниже, и как долго нужно изучать сам язык, чтобы добиться такого? Нужно ли углублённо знать и понимать сериализацию, потоки и прочие сложные вещи? Можно ли мои задачи реализовывать, зная только самые основы, типа переменных, условий, циклов, массивов, структур, ООП? Или же если нет, что нужно доучить, чтобы я мог начать практиковаться, решая мои задачи? Вот чего я жду от языка: Простой синтаксис, Си-подобный, но гораздо проще C++, без непонятных и сложных элементов, чтобы можно было пояснить каждую строчку, что она делает и для чего предназначена; Нет сильно сложных моментов в ООП, чтобы было проста реализация, например чтобы в игре можно было описать объект врага, HP, позиция, его возможности и т.д, и при этом не было сложных вещей; Чтобы не нужно было думать о низкоуровневом типа памяти, указателях; Чтобы не требовалось использовать слишком много математику, и не требовалась сложная математика; Да и вообще чтобы было просто писать! Чтобы я больше изучал не возможности языка, а библиотеки. Мои задачи: Создание аудио игр для незрячих. Для этого мне нужна библиотека по обработке нажатия клавиш, если не ошибаюсь она есть в NETFramework, библиотека для вывода текста в Sappy или в Screan Reader, что тоже присутствует, нужна библиотека для работы с 3D звуком, причём, чтобы все возможности, которые требуют высшей математике были прописаны в библиотеке, а мне требовалось бы лишь только ввести координаты источника звука и слушателя. На C# из аудио игр был разработан авиа симулятор хороший, среди незрячих он очень популярен, и даже его код был выложен на github. Потому я уверен, что возможность по разработке аудио игр есть, но на сколько это будет сложным... Также помимо аудио, интересуют хорошие и простые возможности по созданию сетевых приложений, то есть клиент сервер. И при этом, чтобы не нужны были знания о сокетах, TCP/UDP и т.д. Интересует разработка приложений с GUI интерфейсом. Кто что может сказать? Плюсы минусы C# под мои требования и задачи? Ещё слышал, что C#, не смотря на то, что исходный файл .exe, он при запуске с помощью CLR выполняет код. Т.е есть интерпритируемость. На сколько это влияет на скорость, и важна ли скорость в моём случаи? Я вообще сам не знаю, на сколько мне нужна и важна скорость, потому что я знаю, что например в видео играх, она нужна больше для графики. Здесь же я знаю только единственную вещь, для чего нужна скорость. Это загрузка карт. О другом я не представляю. Заранее благодарен!
1
|
20.06.2017, 14:52 | |
Ответы с готовыми решениями:
9
Подходит ли Python под мои задачи и требования? Плюсы и минусы! Какой IDE-Редактор наиболее подходит под мои требования Подходит ли мне C++? Плюсы и минусы Web Server под виндой (Минусы и плюсы) |
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
|
|
20.06.2017, 15:11 | 2 |
jonikster, здравствуйте!
У тех, кто может углубленно подсказать информацию, банально нет возможности (времени) писать персонально для вас статьи. Работют люди. "очень долго" — это какой минимальный стаж? Можно, но это примерно как пытаться строить дом, используя только отвертку и молоток. Лучше все-таки потратить немного времени и научиться пользоваться инструментами, специально предназначенными для той или иной задачи. И что еще важнее — научиться распознавать задачу и наиболее подходящий для нее инструмент. Но это, к сожалению, приходит в основном с опытом. Это входит в философию создателей языка, потому тут шарп подходит. Что такое "сильно сложные моменты в ООП"? Ну и любая сложность же по мере практики перестает быть таковой. Подходит. Опять же, какая математика — сложная? Вот чуть ниже вы упомянете позицию персонажа. Расчет позиции и ее изменение — это сложная математика? Возможностями библиотеки вы будете пользоваться посредством языка, потому необходимость знания возможностей языка является первичной. Вне зависимости от выбранного языка. Судя по перечисленным задачам и требованиям к ним, выбор языка для вас будет зависеть исключительно от набора доступных библиотек, необходимых для решения ваших задач. Сделайте список всего, что нужно, и попробуйте найти эти библиотеки. Если нашли их все на шарпе, то дерзайте — язык вам подходит. Нет, компилируемость, просто в два действия: сначала из кода в CIL, потом из CIL в машинный код. Откуда же нам знать, что вам нужно и важно, если вы сами этого не знаете?
1
|
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,108
|
|
20.06.2017, 15:54 [ТС] | 3 |
По поводу математики, тригонометрия, векторная математика и прочее.
Вы говорите о инструментах кроме основ. Это какие к примеру? О скорости, просто я не знаю в чём проявляется производительность, и на сколько это нужно для игр без графики.
0
|
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
|
|
20.06.2017, 22:23 | 4 |
Использование математики (а также любой другой науки), все таки зависит от поставленной задачи, а не от языка. Язык предлагает лишь реализацию решения, а не абстракцию от какой-либо науки. К примеру, если Вам нужно решить диф. уравнение, то какой бы язык Вы не предпочли, математику нужно будет знать. Разве что найдете библиотеку, которая будет решать поставленную задачу. Однако, стоит учитывать, что для каких то специфичных задач библиотеки вряд ли найдутся и, скорее всего, нужно будет писать свой код с нуля.
Каждый язык программирования (и С# не исключение) имеет свои тонкости и нюансы, без знания которых не стоит браться за серьезные проекты, тем более за игры. Не знаю, что конкретно имел в виду уважаемый kolorotur, но лично я затрудняюсь выделить какие то основные моменты в языке, про которые можно сказать, что "вот это выучите и хватит". Частичное знание языка, скорее породит больше вопросов, нежели ответов. Но это мое субъективное мнение. Возможно, я не прав. Если вкратце, то математические расчеты требуют процессорных мощностей, для работы с большими объемами данных нужна хорошая оперативка, для программ, активно использующих работу с файлами стоит подобрать жд пошустрее (ну и память опять же). Для графики - видяху. Хотя, в больших проектах (и в играх тем более) задействуется не одна подсистема. Кроме того, стоит учитывать, что производительность еще зависит от алгоритма. Одну и ту же задачу можно реализовать несколькими способами и производительность между ними может отличаться в разы. Касательно аудио игр не могу ничего сказать. По правде говоря, о существовании таковых узнал только из этой темы. Если это будет что то вроде авиасимулятора, то, скорее всего цп нужен будет помощнее. Да и без знания математики и физики, думаю, тут не обойтись. Но, повторюсь, даже не могу себе представить как выглядит аудио авиасимулятор, поэтому могу сильно заблуждаться.
0
|
20.06.2017, 22:36 | 5 |
"непонятные сложные элементы" создаются для облегчения жизни програмистов. Некоторые библиотеки вообще постороены на них (апример лямда-методы на запросах в БД)
они одинаковы для всех. Ну, почти. Мейкеры вам в помощь. Серьезно, учить ЯП, означает учить программирование в целом, а судя по вашим "хотелкам" вы желаете чтобы практически все за вас реализовывала среда. Ваше приложение многопользовательское? Где будут хранится данные и какие? Будет ли сетевое взаимодействие? Будет ли ваше приложение в дальнейшем обновлятся? Обратная связь? Платность? Кроссплатформенность? Кастомизация и редактор? Для каждого вопроса, в зависимости от ответа, придется доучивать немалый блок/технологию.
0
|
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,108
|
|
21.06.2017, 07:52 [ТС] | 6 |
О авиа симуляторе, если вам интересно, поищите на Github Three D Velocity. Или поищите мою тему давностью в несколько дней в этом же разделе, я там давал ссылку.
Теперь о C#: В данный момент, в C# я знаю переменные, условие, циклы, массивы, не полностью ООП, методы. Не получается разобраться с делегатами и событиями, хотя суть частично понятна. О мейкерах, Wolfdp, я хочу кодить больше, чем изучать! Потому что вот начну я писать игру, допишу определённую часть, потом выясниться, что написал без какой то возможности, что можно было проще и надо было по другому, придется переписывать и т.д. То есть мне нужно, чтобы зная основы, которые я сказал выше, уже можно было кодить. Вот к примеру Python это допускает, а C# как рас не знаю, но вроде слышал, что можно, но не уверен. Я как рас сейчас выбираю между Python и C#. Раньше была мысль о C++, но он слишком сложен для меня! О ООП, Wolfdp, во всём есть свои плюсы и минусы. В ООП C# есть свои плюсы и минусы, и в Python, хотя в Python мне кажется проще, а в C# удобнее. Wolfdp, отвечаю на ваши вопросы: Кросс-платформенность абсолютно не нужна, исключительно под винду; Сетевые игры я буду делать, но начать хочу с одиночных, а при сетевых играх кстати я думаю о сервере под Linux, но это не так важно, как выбор языка; О редакторах, нет! Никаких редакторов! О обновлениях, да! Можно было бы реализовать простой алгоритм, который я думаю на C# просто реализовать, читать текстовый файл с версией на сайте. Если она больше текущей, качаем файл опять же с сайта. Первоначально мне вот что требуется: Открытие окна игры (реализовать можно в Windows.Forms); Работа с клавиатурой, обработка нажатия клавиш; Работа с 3D звуком без вычислений, где требуется лишь ввести координаты слушателя и источника, без вычислений по тригонометрии. Да и по сути это всё для начала. Дополнительно нужно будет делать карты, а в картах, только разница в фоновом шуме и звуках шагов. В Python можно было бы решить со словарями, вообще используют двумерные массивы. Но тут проблема не в языке, а в том, что я не могу понять алгоритм. И вот опять же, хватит ли мне того, что я знаю, если нет, что следует доучить, и подойдёт ил вообще мне C#? Добавлено через 3 минуты Shogun31337, о математике, позвольте пожалуйста с вами немножко не согласиться. В C++ часто для некоторых задач используется математика даже по всем библиотекам, чем в том же Python или C#.
0
|
12079 / 8388 / 1281
Регистрация: 21.01.2016
Сообщений: 31,601
|
|
21.06.2017, 08:04 | 7 |
jonikster, блин, сколько писанины)) Просто начни уже изучать язык и там тебе видно станет, подходит он или нет (в 90% подходит).
0
|
21.06.2017, 08:18 | 8 |
Разве не это называется обучением?
Скорость выполнения вашего кода напрямую зависит от качества вашего кода. Первых 3-х глав из любой книги по программированию будет очень недостаточно. Добавлено через 2 минуты Не только лишь все знают это ООП. Там мало его просто знать, нужно ещё и умело применять.
0
|
25.06.2017, 06:54 | 9 |
Учитывая что сопровождать тебе, можешь не париться. Со временем доучишь функционал и просто будешь шустрее писать новый код, переписывать старое рабочее не обязательно (если только не целенаправленый рефакторинг).
без них в программировании игр особо делать нефиг. Да и не только игр. Любой интерактив с пользователем по сути построен на событиях и обработчиках. определитесь уже. Написать сервак под linux, это либо mono, либо core. Оба не позволяют не глядя юзать .net, есть свои ужимки. И вообще, много пользователей как правило подразумевают sql. А значить нужно добавить в список ORM. [ тут проблема в том, что все это решается наследованием от абстракции с переопределением. Вам по хорошему нужно не язык учить, а уметь применять основные принципы хотябы ООП. Тогда можете начинать хоть с паскаля. Основы зубрить можно на абсолютно любом языке, переход вообще безболезненый.
0
|
25.06.2017, 07:52 | 10 |
Для сетевого взаимодействия в C# есть целая тема (и хорошая, с громадными возможностями) - WCF. Там многое низкоуровневое скрыто из глаз (но тем не менее доступно при желании), на его основе можно сделать очень многое касательно взаимодействия по сети.
0
|
25.06.2017, 07:52 | |
25.06.2017, 07:52 | |
Помогаю со студенческими работами здесь
10
Подскажите cms под мои требования Процессор под мои требования. ПК для программирования Плюсы и минусы C# Плюсы и минусы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |