Пятница, 19 Апреля 2024, 17:49

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Программирование » Общие обсуждения программистов » Node.JS, Java Script и все что с этим связано.
Node.JS, Java Script и все что с этим связано.
AGENTX001Дата: Понедельник, 14 Января 2013, 13:59 | Сообщение # 1
почётный гцупер
Сейчас нет на сайте
Мы с товарищами Vinchesoo и Kvins развели неслабый треш по этому поводу. Решили переехать сюда, дабы не захламлять форум. (Начало)
xMoonGuarDxДата: Понедельник, 14 Января 2013, 16:35 | Сообщение # 2
участник
Сейчас нет на сайте
Не совсем корректно название темы. Как я понял, спор у вас java,c++ vs js под серверные приложения.
Лично моё мнение - java,c++,c#. Как ни крути, не считаю скрипт серьёзным ЯП. Или скажу по другому, я доверяю языкам, которые давно себя зарекомендовали в сфере написания софта под сервер. js явно молодой в этой сфере, и уверен, ему много чему предстоит научиться у java, которая в этой сфере куда дольше.
Единственный аргумент увидел в пользу js - это то, что надо на одном языке писать. Сразу приведу аналогию - у художника есть 3-4 кисточки разного размера, а так же разной насыщенности краски. Если мастерство ему позволяет, он будет использовать каждую кисточку когда нужно и как нужно. Тонкую скажем для рисования контуров, толстую для другого. Твой же аргумент звучит вроде "Я буду рисовать абсолютно всё толстой кисточкой". Что хочу сказать - ЯП это инструмент, и чем большим кол-ом инструментов ты владеешь, тем лучше. И ЯП лучше выбирать под задачу.
И расскажи-ка почему шарп гавно? Аргументы плиз.
AGENTX001Дата: Понедельник, 14 Января 2013, 17:08 | Сообщение # 3
почётный гцупер
Сейчас нет на сайте
Цитата (xMoonGuarDx)
И расскажи-ка почему шарп гавно? Аргументы плиз.

Личное восприятие:) Слишком много ООП. Как и у Явы.
xMoonGuarDxДата: Понедельник, 14 Января 2013, 17:40 | Сообщение # 4
участник
Сейчас нет на сайте
AGENTX001, что значит слишком много ооп? У явы - это не просто так и оправдано, и никому это не мешает. Сервлеты пишут и писали на ней. Зато тот же js до безобразия вольный, лично меня, и смотрю не меня одного, почти сразу начинает тошнить от подобного синтаксиса.
MrNeshДата: Понедельник, 14 Января 2013, 17:40 | Сообщение # 5
Воин добра и света
Сейчас нет на сайте
Node.JS мне кажется он хорош
Развивающаяся платформа
Поддержка крупных корпораций
Быстрота
Человек знающий только JS может в одиночку написать свой проект...


IIyxMASTERДата: Понедельник, 14 Января 2013, 18:10 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
да хрень.
Развивающаяся = сырой, Дуров признавал, что у их жабер сервера на ноде постоянно память течет.
В скорости он тоже особо не блещет
Из крупных корпорация его поддерживает только гугл, и то, не его, а свой V8.

Просто модный тренд, типа ботексных губ.
NancyWithoutSidДата: Понедельник, 14 Января 2013, 19:24 | Сообщение # 7
был не раз
Сейчас нет на сайте
Всем добрый день, ребята. Вот набрела на ваш форум, друг посоветовал. Это мое первое сообщение, не судите строго, я еще вольюсь в ваш коллектив!
Вы тут подняли очень интересную тему, а именно использование JS( NodeJS) для серверной части онлайн игр. Я немножко занималась программированием на JS под клиент. Надо сказать, что чувства были довольно странные. Не совсем ужасно конечно, но странновато. Я понимаю конечно, что прототипное программирование несколько иное(вернее совсем) нежели ООП. Но больше меня интересует как на JS код этот самый пишут.
AGENTX001 как хорошо что ты выложил свой код! Я как раз тебе задам несколько интересующих вопросов, касаемо JS(наконец-то хоть кто-то ответит)
Во-первых меня интересует проблема инкапсуляции. Как-то даже не по-сишному получается.Там хоть через хэдеры глобалили(при чем очень аккуратно), а тут все в кучу. Спасает то что клиентский код на JS однопоточен, и проблем с синхронизацией нет.
Можно я чуть чуть покоментирую твой код? *SHY*
Код

var RegRenderFunction = function(func) {  
    var RenderFunction = function() {  
     func();  
     fpsCount++;  
     setTimeout(function() {  
      RenderFunction();  
     }, 4);  
    }  
    RenderFunction();  
    LOG('Render function registrated!');  
}  

Зачем столько фунциональщины?(замыканий) sad За такое наказывают angry
Ничего ж непонятно становится
Код

for (var i in loadList) all_sprites++;  

oO
Код

var DrawTexture = function(tex_name, x, y, offsetX, offsetY, angle, alpha, partX, partY, partW, partH) {  
    if (arguments.length > 3) {  

Ай ай ай! Как же мейнтейнить ваш код? Когда у вас ф-ия имеет либо 3, либо какое-то другое число аргументов, при чем при другом числе аргументов она будет падать и пытаться что-то делать cry Логичнее наверное было бы сделать все же 2
Ой, извиняюсь,нашла еще вот это
Код

  if (arguments.length > 6) ctx.globalAlpha = alpha;  
     if (arguments.length > 7) {

Не кажется что немного громоздко? Вы не пробовали почитать литературу? Как это идеологически верно делается в OpenGL например? Гораздо логичнее использовать статичную машину для цветов/текстур и тп. Размер кода уменьшится в разы. OpenGL - суперкнига, хорошая вещь(рекомендую)
Код

var DrawSprite = function(spr, x, y, angle, alpha) {  

Извини, но почему не function drawSprite(spr,x,y,angle,alpha) ? И так везде!
Зачем смешивать данные и код?
Лан,я устала. Хотя нет...
Везде используются строковые литералы вместо констант. Очень печально дебажить неделю код из-за ошибки в одной букве...
Ну а теперь перейдем к серверному коду
в принципе идеи все те же, только вот велосипедство еще добавилось sad Есть же много разных на любой вкус и цвет логеров
Ну и вот этот кусочек, пожалуй

Код

var userList = [];  
////
var GetPublickUserList = function(ignore) {  
   var data = []  
/////
io.sockets.on('connection', function (socket) {  
   socket.on('disconnect', function() {  
    LOG('Player lost, name: '+socket.playerObject.name+', id: '+socket.playerObject.id);  
    delete userList[socket.playerObject.id];  
   });  


Оно userLits глобальная переменная, доступная из сотни потоков. Где синхронизация?Я думала, вы серьезный мужчина (с)
Подведем итоги. Не важно подо что программировать(хоть под тостер), и на чем(хоть на фортране), главное делать это профессионально...


Если вы считаете, что женщина не умеет программировать, то вам стоит попробовать JProfiler или valgrind...
xMoonGuarDxДата: Понедельник, 14 Января 2013, 19:43 | Сообщение # 8
участник
Сейчас нет на сайте
Цитата (NancyWithoutSid)
Код

for (var i in loadList) all_sprites++;

oO

Если не ошибаюсь, это for each, т.е. сокращенная запись фора. В си её нет, насколько я помню.
foreach (от англ. for each — для каждого) — конструкция позволяющая задать операцию для каждого из объектов, состоящих из ключа и значения, указанного массива, без явного указания порядка перечисления этих объектов.
Пример рандомный, выдернутый из инета:
Код

for (var key in obj) {
    var val = some_array[key];
    document.write(key+' = '+val);
}

Сам не использую, т.к. начинал с С, а там подобного не было. Вот и не привык.
Цитата (NancyWithoutSid)
Подведем итоги. Не важно подо что программировать(хоть под тостер), и на чем(хоть на фортране), главное делать это профессионально...

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


Сообщение отредактировал xMoonGuarDx - Понедельник, 14 Января 2013, 19:51
СибирскийДата: Понедельник, 14 Января 2013, 19:46 | Сообщение # 9
Javatar
Сейчас нет на сайте
AGENTX001, я бы не назвал ваш некомпетентный вброс разведенным трешем. Это вы прибежали в топик, не в тему закричали: "Нод ЖС афигенна, а фсе астальное фигня, нимагу писать на нармальных языках."
Я бы на свой сервер не поставил. Не место там JS. Плюс на сервере я предпочитаю строгую типизацию.


NancyWithoutSidДата: Понедельник, 14 Января 2013, 19:51 | Сообщение # 10
был не раз
Сейчас нет на сайте
Цитата (NancyWithoutSid)
Если не ошибаюсь, это for each, т.е. сокращенная запись фора. В си её нет, насколько я помню.

Дело не в forEach, а в том, что господин решил найти число элементов в коллекции тупо проитерировав по ней, а не вызвав size()(извините, Java), наверное так length.
Если в JS этого нет, то я выйду торговать своим телом к атлантиде!


Если вы считаете, что женщина не умеет программировать, то вам стоит попробовать JProfiler или valgrind...
xMoonGuarDxДата: Понедельник, 14 Января 2013, 19:57 | Сообщение # 11
участник
Сейчас нет на сайте
NancyWithoutSid, ну если он потом использует переменную, которую завёл для выявление размера, не так страшно же? В памяти и скорости всё равно он не теряет, да и сложность от этого не повышается, т.к. данный метод наверняка делает тоже самое. Просто потратил на 5 секунд больше smile
NancyWithoutSidДата: Понедельник, 14 Января 2013, 20:08 | Сообщение # 12
был не раз
Сейчас нет на сайте
Цитата (xMoonGuarDx)
В памяти и скорости всё равно он не теряет, да и сложность от этого не повышается, т.к. данный метод наверняка делает тоже самое. Просто потратил на 5 секунд больше

Извини, я сегодня педантична. Тяжелый день, все дела. Но в данном случае length - это публичное поле Array, и его вычисление не стоит ни копейки, вместо этого мы итерируем по коллекции, чей размер может быть хоть миллиард элементов(ну в теории). Я просто говорю что это муветон, а когда он выстрелит в ногу создателю, разумеется, неизвестно smile


Если вы считаете, что женщина не умеет программировать, то вам стоит попробовать JProfiler или valgrind...
AGENTX001Дата: Понедельник, 14 Января 2013, 20:44 | Сообщение # 13
почётный гцупер
Сейчас нет на сайте
NancyWithoutSid, спасибо за критику. Понимаю, что не хватает теоретических знаний.
Цитата (NancyWithoutSid)
Но в данном случае length - это публичное поле Array

Это не Array, это Object.
Цитата (NancyWithoutSid)
Оно userLits глобальная переменная, доступная из сотни потоков. Где синхронизация?

Нет синхронизации cry
Цитата (NancyWithoutSid)
Извини, но почему не function drawSprite(spr,x,y,angle,alpha) ? И так везде!

Ну... Привычка biggrin
Цитата (NancyWithoutSid)
Ай ай ай! Как же мейнтейнить ваш код? Когда у вас ф-ия имеет либо 3, либо какое-то другое число аргументов, при чем при другом числе аргументов она будет падать и пытаться что-то делать Логичнее наверное было бы сделать все же 2

Этому коду почти пол года:) Многому научился, многое делаю по другому.
Цитата (NancyWithoutSid)
Подведем итоги. Не важно подо что программировать(хоть под тостер), и на чем(хоть на фортране), главное делать это профессионально...

Это да happy
Цитата (NancyWithoutSid)
а тут все в кучу.

Есть такое дело. Больше так не делаю sad

Сибирский, не нервничай biggrin

Добавлено (14.01.2013, 20:44)
---------------------------------------------

Цитата (IIyxMASTER)
Развивающаяся = сырой, Дуров признавал, что у их жабер сервера на ноде постоянно память течет.

"Дуров ты дурак". А по сути даже не представляю как у них может память убегать... Хотя чему тут удивляться, у них на страницах туева хуча глобальных объектов. (Ради интереса открой вк в хроме, ctrl-shif-j, и вбей в консоль window).
Цитата (IIyxMASTER)
Просто модный тренд

Нет, модным трендом он был год назад. Сейчас вполне работоспособная весчь.
Цитата (xMoonGuarDx)
У явы - это не просто так и оправдано, и никому это не мешает. Сервлеты пишут и писали на ней.

Друже, я не говорю, что java не подходит для написания серверов. Я лишь утверждаю, что Node.JS иногда бывает полезнее. Например если в одиночку пытаешься сделать ММО (и что-бы карваны грабить) biggrin
xMoonGuarDxДата: Понедельник, 14 Января 2013, 20:48 | Сообщение # 14
участник
Сейчас нет на сайте
AGENTX001, ну идея сделать годный продукт, особенно ммо в одиночку, мне кажется сама по себе обречена на провал, т.е. в твоём аргументе получается, нод выгоднее для изначально провальных идей?) Лучше другой пример тогда.
AGENTX001Дата: Понедельник, 14 Января 2013, 20:52 | Сообщение # 15
почётный гцупер
Сейчас нет на сайте
xMoonGuarDx, это было лишь образное выражение biggrin Хотя знаю несколько очень удачных проектов, сделанные двумя-тремя чертами, кодер один, остальные художники. И один мега удачный, изначально писавшийся одним программистом (угадайте КА?).
NancyWithoutSidДата: Понедельник, 14 Января 2013, 20:55 | Сообщение # 16
был не раз
Сейчас нет на сайте
Цитата (AGENTX001)
Это не Array, это Object.

Оу shades Неосилила парсинг твоего кода под вечер. До типов еще надо добраться, они не лежат на виду как в языках со строгой типизацией. Мысль пошла из общих соображений "как оно по идее должно быть". Я лично думала, что этот код родился ночью после 3х банок пива. Все же контейнеры для своих данных надо использовать подходящие, а не толкать котэ в бутылку smile


Если вы считаете, что женщина не умеет программировать, то вам стоит попробовать JProfiler или valgrind...
AGENTX001Дата: Понедельник, 14 Января 2013, 21:01 | Сообщение # 17
почётный гцупер
Сейчас нет на сайте
Цитата (NancyWithoutSid)
Все же контейнеры для своих данных надо использовать подходящие, а не толкать котэ в бутылку

Там хешмап нужен. Если не ошибаюсь, то это кусок кода из загрузчика текстур, туда передается что-то вроде {'texureName': {path/texture.png}}
IIyxMASTERДата: Вторник, 15 Января 2013, 05:23 | Сообщение # 18
постоянный участник
Сейчас нет на сайте
Цитата (NancyWithoutSid)

var RegRenderFunction = function(func) {  
    var RenderFunction = function() {  
     func();  
     fpsCount++;  
     setTimeout(function() {  
      RenderFunction();  
     }, 4);  
    }  
    RenderFunction();  
    LOG('Render function registrated!');  
}

Обычно я понимаю, что написано в JS. Вообще, особенность ЯП высокого уровня в том, что очень часто общую логику происходящего может уловить любой человек, особенно если кода всего несколько строчек. Но здесь какой то адЪ. Причем я чую, что вся эта хрень может выглядеть на порядок читабельнее...
AGENTX001Дата: Вторник, 15 Января 2013, 18:23 | Сообщение # 19
почётный гцупер
Сейчас нет на сайте
IIyxMASTER, а что не ясно? Название функции само за себя говорит wink Предлагаешь сделать лучше? Я не против, сам понимаю что не труиЪ surprised
СибирскийДата: Четверг, 17 Января 2013, 19:57 | Сообщение # 20
Javatar
Сейчас нет на сайте
Код

var RegRenderFunction = function(func) {   
     var RenderFunction = function() {   
      func();   
      fpsCount++;   
      setTimeout(function() {   
       RenderFunction();   
      }, 4);   
     }   
     RenderFunction();   
     LOG('Render function registrated!');   
}  

Баааатеньки... Да ты быдлокодер!


Форум игроделов » Программирование » Общие обсуждения программистов » Node.JS, Java Script и все что с этим связано.
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг