Некоторые трения на тему JBForth в l2j у команды разработчиков.

 
+
-
edit
 

Balancer

администратор
★★★★★
> BeanShell - Introduction - краткий перечень возможностей.

"Evaluate full Java source classes dynamically"

простите меня покорно. Это что, для того, чтобы исполнить некоторый код с командной строки, мне придётся описывать class .... { ... public ... ( ... ) { ... ... ... ;} } ... - извините покорно, это вы называете упрощением?? :D

>Бал, пойми меня правильно - ты молодец и с фортом и скриптами и кучей времени
которое на это тратишь. но одному это делать наного сложнее чем толпой.

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

>на мой взгляд лучше сделать пусть менее красиво, но что-б этим смогли пользоваться
и развивать многие.

JBF сейчас не могут пользоваться только полные бездари и/или лодыри. Пользоваться им намного проще, чем Java и, полагаю, чем Beanshell.

...

Блин, я уже устал в третий раз, каждый раз с новой ситуацией, пользоваться теми же аргументами. Поройся в архивах этого форума. Найди противопоставление тогда ещё проекта JBF против так и не законченного проекта квестового движка от, кажется, luisantonia. Я тогда говорил, что специализированный, но универсальный язык будет лучше убогой "квестовой матрицы". Мне не верили. Где тот движок теперь? Был заменён на Jython. Да, на Jython квесты написали. Но где обещанная гибкость? Почему в конечном счёте те же получения профессий оказались дописаны на Форте? Теперь, вот, у разработчиков новая идея фикс... Я устал уже от этих де жа вю... Что вы завтра будете в l2j засовывать в дополнение к beanshell?
 

ivse

втянувшийся
да, кстати куча глюков наблюдается когда работает jforth не на винде,
некоторый дистрибуты типа la2custom некорректно запаковывают его - бьется
регистр букв и сыпятся дурные ошибки. я пол-дня бодался прежде чем до меня
дошло почему может ругаться на abort word jbf - оказалось внутри того каталога
какие-то имена файлов по регистру не совпали.

починил кстати довольно случайно - выкачал датапак с твоего сайта
и заменил data/jbforth на него. после этого заработало.
в общем это было совершенно неочевидно.
 
+
-
edit
 

Balancer

администратор
★★★★★
>Бал, фишка в том, что ты знаешь beanshell. и все разработчики l2j его знают.
там чистая ява. только скриптовая.

Это взаимоисключающие понятия. "Самолёт, но для подводного плавания". Java - малоприспособлена для эффективных скрптовых задач. Синтаксис не тот. Ну идиотизм это юзеру с того же телнет вводить мириады круглых, фигурных, квадратных скобок и тонны служебных слов, не относящихся к самой задаче.

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

Да он у меня установлен, оказывается. Какая-то зависимость за собой поставила (Gentoo). Сейчас пощупаю, но я уже вижу из описаний кучу недостатков...

Вот, раз ты про него уже наслышан, продемонстрируй мне на качественном уровне, как быдет выглядеть после прикрутки Beanshell к системе, командная строка игрового чата, которая выполнит для каждого игрока определённый, заданной тобой из строки код. Например, пошлёт тебе приватом переменную эвентого шага этого игрока. То, что на JBF делается в таком духе:
//"step@ .to-caller" do-players
 

ivse

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

P.S. да не против я форта :) просто жалко будет если ветки разойдутся.
 
+
-
edit
 

Balancer

администратор
★★★★★
>да, кстати куча глюков наблюдается когда работает jforth не на винде,

А ты не в курсе, что у меня игровой сервер под Gentoo Linux работает? И что-то я никакий разницы между своим сервером и домом не вижу. Кто что не так делает?

>некоторый дистрибуты типа la2custom некорректно запаковывают его - бьется
регистр букв и сыпятся дурные ошибки.

Ещё раз - и по-русски. Я ничего не понял. Какие ещё буквы могуть биться?? Как?

>дошло почему может ругаться на abort word jbf - оказалось внутри того каталога
какие-то имена файлов по регистру не совпали.

Это уже не ко мне. На SVN лежит всё, как положено. Более того, я отлаживаю систему дома на windows, выкладываю на SVN, на сервере - скачиваю с SVN, собираю из исходников, запускаю... Т.е. работоспособность SVN у меня гарантирована. Так же не было подобных жалоб на связку l2j+DP на Файлы L2J /Бесплатный Lineage II Interlude (C6) сервер Balancer'а/ которая берётся с того же SVN.

А если у "дистроклепателей" руки кривые - при чём тут JBF?

>починил кстати довольно случайно - выкачал датапак с твоего сайта
и заменил data/jbforth на него. после этого заработало.
в общем это было совершенно неочевидно.

Вот-вот. А датапак у меня - точная копия SVN L2J Datapack. При чём тут JBForth??
 
+
-
edit
 

Balancer

администратор
★★★★★
ivse:
думаю что никак :) не для CLI использования оно.
 



Вот ты сам и ответил. Т.е. админы с игровым чатом и телнетом, вызовы из .htm-файлов диалогов и т.п. при переходе на beanshell идут лесом? Окажутся в прокрустовом ложе заранее предопределённых команд? Всего наилучшего и попутного ветра!
 

ivse

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

Balancer

администратор
★★★★★
Блин. Из-за сбоя на сервере пропал последний ответ. В общем, там было детально про только что проведённый тест скорости.

33-е число Фибоначи.

Beanshell на десктопном amd64 3200+ - 48 секунд
JBForth на игровом сервере Xeon-1800 - 11 секунд.
 

ivse

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

Styx

разработчик l2j-сервера
/me прочитал у Балансера про JBForth на wiki и руками и ногами за него :)
народ требует еще инфы, по возможности, конечно ;)
...and what better way to say goodbye than to kill everyone in sight? © Syntari  

BLaS

новичок
ну отлично еще ктото проникся :)
 

Styx

разработчик l2j-сервера
BLaS:
ну отлично еще ктото проникся :)
 

Ага
я просто прикинул в уме:
время_на_освоение_JBForth + время_на_написание_фишек_на_JBForth
и
время_на_написание_фишек_на_Jython

первое суммарно получилось куда более быстрее и выгоднее ;)

Да и интеграция более тесная и более удобная.
...and what better way to say goodbye than to kill everyone in sight? © Syntari  
+
-
edit
 

Balancer

администратор
★★★★★
Styx:
/me прочитал у Балансера про JBForth на wiki и руками и ногами за него :)
народ требует еще инфы, по возможности, конечно ;)
 


Дык, буду писать... :) Но хочется, чтобы мелочи, типа составления алфавитных списков слов и т.п. - народ помогал :D Сейчас BLaS взялся помогать, но чем больше будет народа, тем меньше работы для каждого в отдельности :)
 

Styx

разработчик l2j-сервера
Balancer:
Styx:
/me прочитал у Балансера про JBForth на wiki и руками и ногами за него :)
народ требует еще инфы, по возможности, конечно ;)
 


Дык, буду писать... :) Но хочется, чтобы мелочи, типа составления алфавитных списков слов и т.п. - народ помогал :D Сейчас BLaS взялся помогать, но чем больше будет народа, тем меньше работы для каждого в отдельности :)
 

Дочитаю доку по Forth - и буду вливаться в работу :)
...and what better way to say goodbye than to kill everyone in sight? © Syntari  

Leet

новичок
ИМХО.
Я уже высказался насчет Forth'а в L2J в одной из тем на форуме SF (насчет того, что у Forth нестандартная структура, и не хочется перестраивать парсер в голове с языков обычного синтаксиса на 'извращенный' Forth, и отсюда сделал вывод - лучше, чтобы вместо Forth в L2J был какой-либо другой более привычный скриптовый язык).
Признаю, что я тогда немного погорячился, и это вызвано скорее ленью - ну тяжело найти время и мозговые ресурсы, когда изучаешь другие языки, работаешь и учишься в универе, боюсь окончательно забить голову и сойти с ума :). Форт действительно интересный язык, и я уважаю Balancer'а за то, что он в одиночку реализовал и продолжает улучшать Forth в L2J!
Но хотелось бы высказать свое мнение по поводу одного из пунктов, который приводит Balancer в пользу Forth - краткость и вес исходников. В данный момент я не согласен с тем, что короткий стиль записи в Форте удобен для понимания. Мне лично удобнее видить и разделять части программы скобочками, и я не вижу проблемы или неудобства в большом количестве строк в программе вида
блабла {
блаблабла
} блабла {
блаблаблабла
}
Balancer привел сравнение обработчика админ команды для катания на страйдере/виверне, и это был один из доводов: "Вам мало выигрыша в размере?". Для меня лично одинаково читаются и "большой код" на яве, и эти 3 форт строки - не вижу преимущества в малом размере этих 3х Форт-обработчиков. Считаю, что не имеет значения, сколько весят и сколько строк содержат исходники - главное то, как они читаются человеком (а скобочки и обычное деление программы разбирается очень хорошо, да и в том, чтобы печатать их, я проблем не вижу), а также во что они превращаются, когда выполняются. Ведь одна строка на Форте, грубо говоря, выполняет столько же процессорных команд, сколько и несколько строк на другом, 'обычном' языке... Конечно все это дело вкуса, вполне возможно, что я и сам потом полюблю стиль Форта, но тем не менее, я не считаю стиль и краткость Форта его достоинством. Вот это сейчас мне больше нравится (кусок скрипта из stolen-офф сервера):

code text
  1.         talk_selected_event_begin
  2.                 condition = [HaveMemo(talker, @letters_of_love1)==0 &&
  3.                              GetOneTimeQuestFlag(talker, @letters_of_love1)==1]
  4.                 choice_string = 0000101
  5.                 handler(fhtml0, talker) =
  6.                         [
  7.                                 ShowPage(talker, "finishedquest.htm");
  8.                         ]
  9.         talk_selected_event_end
  10.  
  11.         quest_accepted_event_begin
  12.                 handler(talker, quest_id) =
  13.                         [                              
  14.                                 talker.quest_last_reward_time = 0;
  15.                                 SetMemo(talker, quest_id);
  16.                                 SoundEffect(talker, "ItemSound.quest_accept");
  17.                                 if(OwnItemCount(talker, @darings_letter) == 0)
  18.                                         GiveItem1(talker, @darings_letter, 1);         
  19.                                 ShowPage(talker, "daring_q0001_06.htm");
  20.                         ]
  21.         quest_accepted_event_end
 

Leet

новичок
И кстати, этот кусок - сорц, и он потом компилируется в ассемблеро-подобный код, который уже принимает сервер. (но вы об этом знаете, просто мало ли :)) Писать скрипты на нем - очень удобно и легко, и это главное - он удобен для человека! А о том, чтобы он был удобен и для сервера, позаботися компилятор.
 
+
-
edit
 

roller

опытный
А чем Forth не удобен.
Я уже фиббоначи наваял :)
code text
  1. my/dbg.f
  2.  
  3.  Вычисление числа фиббоначи
  4.  
  5. : FIB_ITER ( A B ---> B A+B)
  6.   DUP      ( A B B)
  7.   ROT      ( B A B)
  8.   +        ( B A+B)
  9. ;
  10.  
  11.  
  12. : FIB ( N ---> FibN)
  13.         DUP                             ( N N)
  14.         3 <                             ( N N<3)
  15.         IF                              ( N)
  16.                 DROP                    ( )
  17.                 1                       ( 1)
  18.         ELSE                            ( N)
  19.                 1-                      ( N-1[N`])
  20.                 1 1                     ( N` F1 F2)
  21.                 BEGIN                   ( N` F1 F2)
  22.                         2 PICK          ( N` F1 F2 N`)
  23.                         1 >             ( F1 F2 N` N`!=0)
  24.                 WHILE                   ( N` F1 F2)
  25.                         FIB_ITER        ( N` F2 F1+F2[F1`])
  26.                         ROT             ( F2 F1` N`)
  27.                         1-              ( F2 F1` N`-1[N`])
  28.                         ROT ROT         ( N` F2 F1`)
  29.                 REPEAT                  ( N` F2 F1`)
  30.                 SWAP DROP SWAP DROP     ( F1`)
  31.         THEN                            ( F1`)
  32. ;
  33.  
  34. 32 FIB .
Roller, Тирант - Последний Герой клана OutLaw - 61+ (52+ честно нажитое) Rollw, Скав - Ресурсы, рецепты, спойл. Дорого - 40+ (33+ честно нажитое) Rolly, Cleric - Ready for party ;) - ХЗ+ (30+ честно нажитое) Rollon, SH - гордый и бедный - 48+  

Styx

разработчик l2j-сервера
Leet, у меня были примерно такие же аргументы против исключительности JBForth в проекте.
До тех пор, пока сам не взялся за него. Думал, кучу времени потрачу на освоение - как бы не так. Невозможно просто потратить больше времени чем необходимо :)
Теперь, кстати, я склоняюсь к варианту, что только JBForth сможет обеспечить необходимую гибкость и расширяемость.
Вот так вот. Ты просто попробуй его на вкус, потом выскажи свои мысли. Я вот высказал ;)
...and what better way to say goodbye than to kill everyone in sight? © Syntari  
+
-
edit
 

CheRny

новичок
На L2j форуме Kadar вообще взбесился в последнее время, все посты про JBForth просто прикрывает и заключает все комментариями:
code text
  1. JBForth was removed from the server.
  2. Commands will not work.


Единственный, кто включает JBForth в свои сборки, это ГХ, хотя по дефолту движок у него тоже отключен.

А инглиш-спикинг люди все время спрашиваю про инфу по JBForth.
 
LV НеВзаимный #06.01.2006 16:12
+
-
edit
 

НеВзаимный

втянувшийся
Форт это сила :) Моя 12 летняя сестра уже даже взялась за его изучение :) Так что я считаю что L2j и Форт созданы доуг для друга, так как Форт намного облегчает и приукрашивает L2j :)

Единственный недостаток это пока малое колличество инфы по форту, но я надеюсь это скоро поправят :)
A2 Винтик #07.01.2006 19:40
+
-
edit
 

Винтик

новичок
Styx> Leet, у меня были примерно такие же аргументы против исключительности JBForth в проекте.
...
Styx> Вот так вот. Ты просто попробуй его на вкус, потом выскажи свои мысли. Я вот высказал ;)

Он просто не умеет его готовить =)

А вообще, нужно думать и о тех людях, которые в программировании вообще ничего не понимают...ну вот захотелось поставить сервер...и ещё и добавить в него пару фишек, которых ни у кого нету. Я думаю пару примеров на Форте...и евент готов. Если честно, то у меня Форт быстрее начал работать...в смысле быстрее что-то получилось именно на нём.
 
+
-
edit
 

Ene_ECL

новичок
Пральна! Для работы над сервером мне надо было бы изучить Джаву или Форт... Книжки по Форту понятны и просты, а как прочитаешь, так сразу хорошо и легко становится на душе, когда понимаешь, что сделать на нём можно всё что угодно, лишь бы время было и желание. А тем более, что над проектом работают много людей. Вот дочитаю Лео Броуди и примусь за работу...
З.Ы.: Джаву надо медленно, но верно искоренять с сервера.. :)
 
AD Реклама Google — средство выживания форумов :)

Murkt

Pythoneer

Ene_ECL>Джаву надо медленно, но верно искоренять с сервера..
Красноглазый фанатик. Форт в сервере подходит для динамических вещей. Обработку пакетов ты на нём не сделаешь нормальную.
[team Їжачки - сумні падлюки]  

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru