JS vs C#

Программирование на Юнити.

Re: FAQ. Рабочая тема — составляем

Сообщение Paul Siberdt 15 сен 2010, 01:41

Мой стаж в профессиональном геймдеве - 10 лет.
Сейчас я самостоятельно занимаюсь проектом под iPhone.
На Unity3D работаю больше года.
Для себя выбрал JavaScript, как вариант удобный, комфортный, лишенный некоторых раздражающих особенностей языков программирования и достаточный.

Выяснив разницу в скоростях при переборе динамичекских массивов стоило ли писать про "и вообще"?
Или это так, для красного словца, как недавно пробежало "...потоки хреново работают в Unity, и вообще сплошные баги и лаги..."

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

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

Лучше сразу изучать и использовать C#.

Большинство людей хочет изучать Unity, а не CSharp. :) Если же кто-то хочет использовать правильный язык - прямая дорога к C++... а там и пора уж писать собственный движок, а не пользовать нубокоснтруктор Unity. :D

И, пожалуй, как зеленый представитель власти, господин DbIMok, соблаговолите заполнить детали своего профиля, чтобы не возникало (скажем, у меня) домыслов и предположений. :-B
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: FAQ. Рабочая тема — составляем

Сообщение DbIMok 15 сен 2010, 02:30

Paul Siberdt писал(а):Выяснив разницу в скоростях при переборе динамичекских массивов стоило ли писать про "и вообще"?

вы не потрудились прочитать, о чем я писал. разница будет в любом массиве. но, конечно, не столь серьезная, чтобы только на основании нее делать выбор языка. есть и хорошая новость, возможно в 3-ке можно будет использовать raw индексы, тогда скорость обращения к элементам массива сравняется.
Paul Siberdt писал(а):вариант удобный, комфортный, лишенный некоторых раздражающих особенностей языков программирования и достаточный.

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

я лишь высказываю свое мнение, на мой взгляд достаточно аргументированно. чем оно вас так раздражает? пользователи на основании информации выберут то, что им больше подходит, это нормально. жду от вас аргументов (не для себя, для пользователей), но не про акваланги.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > Telegram чат @unity3d_ru (5300+) > Telegram канал @unity_news (2100+) > Телеграмтема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6040
Зарегистрирован: 31 июл 2009, 14:05

Re: JS vs C#

Сообщение Paul Siberdt 15 сен 2010, 03:41

Я ни разу, насколько помню, не агитировал использовать в работе тот или иной язык скриптования. Единственное, что себе позволял - это высказывания о JS, как более дружественном решении для начинающих. Ко всему прочему, документация изначально написана под JS, что также дружественно и не требует сторонних информационных ресурсов.

А вот навязывания CS встречаются на форуме регулярно. Без ссылок и объяснений, просто, мол, послушайте пап, пишите на Шарпе, ибо все крутые проекты крутые программеры пишут на нем и это правильно.

Не собираюсь сопоставлять JS и C#. Это тупое и бессмысленное занятие.
Не буду выискивать неудобные моменты C# и точно не буду защищать JS.
Не планирую учавствовать в обсуждении текущей ветки.

У меня нет религиозного пристрастия. Пока я нахожу решения своих задач на JS, я пользую JS. Если картина изменится в пользу C# - выберу его. Повторюсь, дело не в выборе лучшего языка программирования, а в политике навязывания своего мнения некоторыми заслуженными форумчанами.

...поверьте, большинство языков удобны и комфортны для тех, кто на них пишет. и все языки имеют право на существование...

Не ограничивайте людей в выборе, поверьте, даже новичок имеет право найти свой язык. :)

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

Медленнее, например, при доступе к элементам массива и вообще, генерирует более "грязный" код. Лучше сразу изучать и использовать C#.

Прошу прощения, меня раздражает именно аргументация последнего высказывания категоричностью, преувеличением и отсутствием выбора. "Грязный код" и "лучше сразу изучать"... после таких слов, согласитесь, юный юнивод попрется искать учебники по CSharp, пару раз тыркнется в лабиринты MSDN и, есть немалый шанс, там и сгинет со своей идеей девелопинга.

Я начинал свое индюшачество с Ogre3D и C++. Честное слово, реализация геймплейных идей очень тяжело пробивалась через толстую начинку инструментария. Портирование механики простенькой игрушки с лопающимися шариками у меня превратилось в унылое изучение винапи, директикса, штудирования мсдн, огровского сдк и самого с++. Потому я с радостью сбежал к 3DGameStudio, поскольку, кроме документации движка и встроенного языка знать ничего не требовалось и поскольку во встроенном языке были лишь инструменты игровой механики.
А потом я с радостью сбежал к Unity, поскольку тут с энтим делом все обстояло еще лучше... и, задолбавшись с войдами, энумераторами, деструкторами и прочей чертовщиной, я глотнул чистого воздуха JS :)

Никогда не был настоящим программистом, так что это ИМХО художника и дизайнера.

ЗЫ: Спасибо за детали профиля.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: JS vs C#

Сообщение DbIMok 15 сен 2010, 05:03

Paul Siberdt писал(а):документация изначально написана под JS

в тех местах, где нет существенных отличий. там где они есть, приведены примеры и на С#. в 3-ке это несущественно, так как язык примеров можно переключать.
Paul Siberdt писал(а):и не требует сторонних информационных ресурсов

как человек узнает синтаксис языка? с С# все просто, открыл любую книжку на русском и там объяснят, как писать if, как for, как switch. а в UnityScript "догадайся сам".
Paul Siberdt писал(а):А вот навязывания CS встречаются на форуме регулярно

это всего лишь ваше восприятие. вы видите то, что хотите видеть.
Paul Siberdt писал(а):Без ссылок и объяснений

почему же, аргументация обычно присутствует. например
Paul Siberdt писал(а):ибо все крутые проекты крутые программеры пишут на нем и это правильно

передергиваете, никто такого не утверждал. например, известно, что Flashbang Studios пишут на UnityScript, потому что им так удобнее.
Paul Siberdt писал(а):Не собираюсь сопоставлять JS и C#. Это тупое и бессмысленное занятие.

а вот тут считают иначе
Paul Siberdt писал(а):Не буду выискивать неудобные моменты C#

хотя бы один пример, в чем же неудобство? могу припомнить пару мелочей, не более. интересно, что вы под этим подразумеваете.
Paul Siberdt писал(а):в политике навязывания мнения некоторых заслуженных форумчан

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

у меня сложилось именно такое впечатление при просмотре кода в рефлекторе. понятное дело, что C# код выглядит так же, как и в исходнике, а UnityScript несколько отличается за счет вызовов Boo библиотек. в результате IL код UnityScript получается длиннее (в тестовом примере ~ на 10%, причем без учета тех самых "лишних" библиотек) и выполняется дольше. это факт, а как его воспринимать, пусть каждый решает сам. да, большинству это не критично, но что же мне теперь, молчать, чтобы никого случайно не смутить?
Paul Siberdt писал(а):пару раз тыркнется в лабиринты MSDN

дался вам этот мсдн. почему туда нужно "тыркаться" и где вы там видели лабиринты? вы точно не переносите свои проблемы на пресловутых новичков? C# ничем не отличается в плане работы с движком от UnityScript и необходимость использовать мсдн там точно такая же. надо - будете использовать и с UnityScript. не надо, не будете и с C#.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > Telegram чат @unity3d_ru (5300+) > Telegram канал @unity_news (2100+) > Телеграмтема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6040
Зарегистрирован: 31 июл 2009, 14:05

Re: JS vs C#

Сообщение Neodrop 15 сен 2010, 05:06

К слову о справке на JS - в 3.0 наконец то представлена справка для всех трёх языков, так что этот аргумент отпадает.
По поводу простоты того или иного языка - на мой взгляд все плохи для совсем уж простецкого начинающего "девелопера". Оттого и пишу VIZIO. :D
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8432
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: JS vs C#

Сообщение DbIMok 15 сен 2010, 05:18

да, язык ерунда по сравнению с тем, что нужно изучать движок. но вот когда с движком уже все более менее ясно (не все, но куда копать в случае чего), начинает хотеться всяких C# вкусностей (например, linq), несмотря на то, что игры можно писать и на простом бейсике. просто индивидуальные особенности. а новичок... ну, попробовал человек почитать книжку по C#, не идет. кто мешает ему писать на UnityScript? зато те знания, что успел почерпнуть, все равно пригодятся.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > Telegram чат @unity3d_ru (5300+) > Telegram канал @unity_news (2100+) > Телеграмтема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6040
Зарегистрирован: 31 июл 2009, 14:05

Re: JS vs C#

Сообщение Fox Rex 15 сен 2010, 07:09

Где-то на предыдущей странице упоминали АСМ. А он то каким боком к моно относиться. Все языки для моно и .NET одинаковы по качеству скомпилированного кода, и быстродействию. Все компилируются в IL код, это нечто вроде П-кода, но с метаданными описывающими объектную структуру кода. В длл и екзешниках для моно храниться именно ИЛ код, при запуске он компилируется на лету в родной код компа, тобишь машинный код. Языки можно смешиватьв одном проекте, думаю и в Юнити это не составит проблемы. С шарп изначально создавался для дотНет, и предоставляет доступ ко всем возможностям платформы, но это не значит, что другие дотнет языки не могут предоставлять доступ ко всем возможностям. Я выбрал С шарп потому, что я его хорошо изучил, еще до знакомства с Юнити и потому, что он поддерживает все возможности моно. В Юнити 2.6 используется С# 3.0, в Юнити 3 будет 4.0.
Never more!
Аватара пользователя
Fox Rex
UNITрон
 
Сообщения: 218
Зарегистрирован: 04 сен 2010, 11:24

Re: JS vs C#

Сообщение Serge 15 сен 2010, 07:19

Fox Rex писал(а):Где-то на предыдущей странице упоминали АСМ. А он то каким боком к моно относиться.
=))
Сейчас начнется все по-новому и так бесконечно. :)
О, сколько нам открытий чудных Готовят просвещенья дух И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель.
Аватара пользователя
Serge
UNIверсал
 
Сообщения: 476
Зарегистрирован: 20 мар 2009, 15:53
Откуда: Сибирь г. Омск
  • Сайт
  • ICQ

Re: JS vs C#

Сообщение DbIMok 15 сен 2010, 07:23

Fox Rex писал(а):Все языки для моно и .NET одинаковы по качеству скомпилированного кода, и быстродействию.

нет. разные конструкции разных языков преобразуются в разные IL инструкции.
Fox Rex писал(а):Языки можно смешиватьв одном проекте

можно, но проблемы видимости все же возникают.
Fox Rex писал(а):В Юнити 2.6 используется С# 3.0

нет, он ближе к 2.0
Fox Rex писал(а):в Юнити 3 будет 4.0

почти, на уровне того, что реализовано сейчас в моно, но это не полностью 4.0
Fox Rex писал(а):но это не значит, что другие дотнет языки не могут предоставлять доступ ко всем возможностям

каждый язык ограничен своим синтаксисом
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > Telegram чат @unity3d_ru (5300+) > Telegram канал @unity_news (2100+) > Телеграмтема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6040
Зарегистрирован: 31 июл 2009, 14:05

Re: JS vs C#

Сообщение Serge 15 сен 2010, 08:31

Fox Rex писал(а):Я выбрал С шарп потому, что я его хорошо изучил, еще до знакомства с Юнити и потому, что он поддерживает все возможности моно.

Правильнее сказать - mono поддерживает возможности C#. ;)
Не выдержал все же, встрял в обсуждение. :)
О, сколько нам открытий чудных Готовят просвещенья дух И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель.
Аватара пользователя
Serge
UNIверсал
 
Сообщения: 476
Зарегистрирован: 20 мар 2009, 15:53
Откуда: Сибирь г. Омск
  • Сайт
  • ICQ

Re: JS vs C#

Сообщение Neodrop 15 сен 2010, 09:31

Дайте, дайте место для драки!
Только что закончил (тьфу-тьфу) новую версию Antares.Manager, которая ляжет в ядро VIZIO.
Кто не знает, что такое Antares.Manager : это EDA (Event Driven Architecture) Система Событийного Программирования. Не стану вдаваться в подробности концепции программирования Событиями, скажу только, что это сердце абсолютно всех моих программ.
Так вот. Базируется она на Делегатах. Следовательно нигде, кроме (c#) реализовать такую систему невозможно.
Гибкость реализации сравнима только с кнопкой "Сделать заепись" - теперь мой менеджер встроен в класс object и совершенно всегда "под рукой".
Это возможно на БУ или на Жабе?
К чему это я.. А, ну да, после рефакторинга на новый дотнет, идущий вместе с Unity 3.0 я могу производить 100 000 вызовов зарегистрированных в Менеджере методов за одну миллисекунду. (Это, конечно, бенч-тесты и в реальном приложении будет с одной стороны помедленнее, а с другой - быстрее). Прирост против старой версии в 17 раз.
Я работал в [unity 3D] Unity на JS продолжительное время. Могу только сказать, что это была тюрьма и худшее время за два года работы с двигом.
Как не раз говорилось на этом форуме - (js) хорошо для маленьких программок. Совершенно согласен, чт написать 1000 строк кода для игрульки на iOS можно легко и просто на жабе, но с более сложными проектами начинаются трудности, растущие в геометрической прогрессии.

Впрочем, кроме меня, в нашем сообществе почти никто не увлекается EDA, так что, считайте всё вышесказанное, моим ИМХО (я вообще хочу программировать на VIZIO :ymdaydream: )
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8432
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: JS vs C#

Сообщение Fox Rex 15 сен 2010, 09:54

В Юните 2.6 используется моно 2.0 вот здесь http://www.mono-project.com/Release_Notes_Mono_2.0 ясно сказано, что С# 3.0 поддерживается.
В Юнити 3 будет моно 2.6, да эта версия моно не полностью поддерживает C# 4
Never more!
Аватара пользователя
Fox Rex
UNITрон
 
Сообщения: 218
Зарегистрирован: 04 сен 2010, 11:24

Re: JS vs C#

Сообщение Fox Rex 15 сен 2010, 10:08

Вопрос использования делегатов, и событий очень интересная тема. Конкретно меня интересует может ли один геймобжект подписаться на событие из другого объекта? Если да, то я однозначно за использования языка с реализацией событий.
Never more!
Аватара пользователя
Fox Rex
UNITрон
 
Сообщения: 218
Зарегистрирован: 04 сен 2010, 11:24

Re: JS vs C#

Сообщение Zaicheg 15 сен 2010, 10:54

Fox Rex писал(а):В Юните 2.6 используется моно 2.0 вот здесь http://www.mono-project.com/Release_Notes_Mono_2.0 ясно сказано, что С# 3.0 поддерживается.
В Юнити 3 будет моно 2.6, да эта версия моно не полностью поддерживает C# 4

А где вы нашли информацию о том, что Unity 2.6 использует Mono 2.0?
Когда мы в последний раз разбирались с этим вопросом, то пришли к выводу (на основании обсуждений в оф. форуме и фидбеке), что используется Mono 1.x (точно не помню, какой .x, кажется 1.2.5) и до тройки никаких апгрейдов.

Что же касается предмета обсуждения, то я согласен с той позицией, что c sharp для новичка лучше.
- если он, работая на JS, будет кооперироваться с кем-либо, то возникнет проблема несовместимости (использование js и c sharp в одном проекте — байда, я верил в это только до первого опыта).
- литературы больше и лучше, чем по js и уж тем более по unityscript.

А для изучения ни один из этих языков именно как язык ни проще, ни сложнее. Все сложности с c sharp свелись у меня к тому, что я не сразу понял необходимость совпадения имён скрипта и класса в нём, синтаксис обращения к компоненту и способ вызова коратины. Но с новой справкой и этого бы не было.
Я даже считаю, что US и Boo — это как раз варианты для людей более опытных, которые точно знают, что им больше подходят/нравятся именно эти языки.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: JS vs C#

Сообщение Fox Rex 15 сен 2010, 11:30

Значит ошибся с версией. А подписататься на событие всетаки можно. Это мне нравиться.
Never more!
Аватара пользователя
Fox Rex
UNITрон
 
Сообщения: 218
Зарегистрирован: 04 сен 2010, 11:24

Пред.След.

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: 1max1 и гости: 5