Автор | Сообщение |
|
| постоянный участник
|
Сообщение: 217
Зарегистрирован: 06.11.08
|
|
Отправлено: 08.12.16 13:39. Заголовок: Рефакторинг URQL
Решила немного потеоретизировать по поводу языка URQ. Ни на что не претендую, и понятно, что всё здесь написанное – это только теория, ибо практикой я точно заниматься не собираюсь. И да, можно кидаться тапками. Но захотелось как-то структурировать мысли на тему. В связи с размножившимися платформами и новыми языками, окидывая взглядом уркл, можно заметить, что он как-то не сильно удобен. Собственно он всегда был не очень, но с последними тенденциями совсем отстал. Поясню: Неудобство 1: То, что перед строкой текста, да что там, перед каждым новым параграфом надо обязательно писать pln. Знающие люди, конечно умеют переносить тексты и удобно ихз структурировать, но тогда вместо pln приходится писать знак переноса и нижнее подчёркивание, что тоже не есть хорошо. Нигде, абсолютно нигде это не делается и не используется. Все нормальные люди либо заключают полностью весь текст в кавычки. Либо в скобки, либо вообще пишут прямо так без всего. Неудобство2: Непонятные ифы. Если мы делаем в игре вложенные условия, тодовольно сложно понять какой else к какому if относится. Конечно, можно проэкспериментировать и приноровиться, но всё прогрессивное человечество пользуется блоками кода и закрытием ифов, будь то связка if\end или же фигурные скобки или просто перенос по строкам и отступам. Так же нет в урке и кейсов, то есть проверок на безусловный выбор из множества. Даже в куспе сделали команду elseif, а мы всё ещё извращаемся. Флаги рисуем. Неудобство3: В урке отсутствуют массивы и функции их обработки. Ужасно неудобно. Да, конечно массивы можно сэмулировать подстановками, что сейчас и делается, в целом даже без особого труда. Но вот функции работы с массивами, такие как: Замена элемента Удаление элемента Добавление элемента Сортировка Поиск Определение размерности массива Это всё приходится писать самому. Что уже вычёркивает авторов не сильно знакомых с программированием и алгоритмами. Неудобство4: Нет нормальных функций. Да, можно сэмулировать функцию - вызвать локацию с параметрами через proc, посчитать там что-то, присвоить куда надо значение, но! Нельзя сделать локальную функцию, которая возвращала бы тебе что-то не в глобальных переменных. На самом деле то, что все переменные в уркле глобальные, ну, кроме появившихся в фурке параметров, передаваемых локации, это даже хорошо. Но вот то, что нетльзя сделать функцию свозвращаемыми параметрами – неудобно. Всё, что вот прямо сейчас пришло в голову и было бы достаточным для удобного написания текстовой игры. Если что-то ещё забыла, то допишу позже. Либо вы напишите, если что-то ещё углядели. В целом моё мнение такое, что язык требует переработки и добавлений. Не таких уж больших и сложных. И нет, не надо предлагать втыкать в фурку луа или что-то такое. У урки есть чудесная штука – подстановки, и за них ей можно простить всё. И терять их не надо. А вот поменять то, что нужно поменять - было бы прекрасно. К тому же, если очень захотеть, то даже совместимость со старыми версиями можно оставить. Понимаю, что, вероятнее всего, никто этим заниматься не будет, но помечтать-то можно(!). Ну и мало ли, вдруг, неожиданно так, каким-то невероятным чудом... Спасибо за внимание.
| |
Профиль
Цитата
Ответить
|
Ответов - 11
[только новые]
|
|
|
| почётное бревно
|
Сообщение: 772
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.12.16 14:16. Заголовок: Чую я, грядет ажурка..
Чую я, грядет ажурка...
| |
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 218
Зарегистрирован: 06.11.08
|
|
Отправлено: 08.12.16 14:18. Заголовок: Не, не будет никакой..
Не, не будет никакой кожурки. я не пишу движков. И кстати, что касается скорее интерфейса, чем языка. Есть ещё неудобство, что нельзя убирать\стирать отдельно btn'ы. Но это уже другой немного функционал.
| |
Профиль
Цитата
Ответить
|
|
| Юрист урки, адвокат дьявола
|
Сообщение: 615
Зарегистрирован: 07.12.06
|
|
Отправлено: 08.12.16 14:26. Заголовок: Новогоднее письмо Ад..
Новогоднее письмо Адженты Деду Морозу)
| |
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 219
Зарегистрирован: 06.11.08
|
|
Отправлено: 08.12.16 15:01. Заголовок: Надеюсь, он решит, ч..
Надеюсь, он решит, что я хорошо себя вела в этом году и заслуживаю подарка ;)
| |
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 537
Зарегистрирован: 20.01.06
|
|
Отправлено: 09.12.16 10:21. Заголовок: Ajenta пишет: В свя..
Ajenta пишет: цитата: | В связи с размножившимися платформами и новыми языками, окидывая взглядом уркл, можно заметить, что он как-то не сильно удобен. |
| Он не идеален, НО, на данный момент, это самый удобный для меня язык написания текстовых игр. В том плане, чтобы именно сесть и писать игру, минимально отвлекаясь на средство разработки. Вот парсерную игру на нём писать реально неудобно. === По неудобствам согласен со следующими: Ajenta пишет: цитата: | Неудобство2: Непонятные ифы. Если мы делаем в игре вложенные условия, тодовольно сложно понять какой else к какому if относится. |
|
Ajenta пишет: цитата: | Неудобство4: Нет нормальных функций. Да, можно сэмулировать функцию |
| === Вообще, окидывая взглядом имеющиеся платформы, можно заметить, что срочно нужна ещё одна- реально удобная. В этом и заключается причина, по которой они размножились.
| |
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 220
Зарегистрирован: 06.11.08
|
|
Отправлено: 09.12.16 18:25. Заголовок: Сделала библиотечку ..
| |
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 647
Зарегистрирован: 13.03.07
|
|
Отправлено: 09.12.16 22:20. Заголовок: Всё справедливо, всё..
Всё справедливо, всё правильно, но... Ajenta пишет: цитата: | Неудобство 1: То, что перед строкой текста, да что там, перед каждым новым параграфом надо обязательно писать pln. Знающие люди, конечно умеют переносить тексты и удобно ихз структурировать, но тогда вместо pln приходится писать знак переноса и нижнее подчёркивание, что тоже не есть хорошо. |
| Почему pln? А #/$ на что? цитата: | Нигде, абсолютно нигде это не делается и не используется. |
| Ты когда-нибудь выводила текст на ассемблере?.. цитата: | Неудобство2: Непонятные ифы. Если мы делаем в игре вложенные условия, тодовольно сложно понять какой else к какому if относится. Конечно, можно проэкспериментировать и приноровиться, но всё прогрессивное человечество пользуется блоками кода и закрытием ифов, будь то связка if\end или же фигурные скобки или просто перенос по строкам и отступам. Так же нет в урке и кейсов, то есть проверок на безусловный выбор из множества. Даже в куспе сделали команду elseif, а мы всё ещё извращаемся. Флаги рисуем. |
| Вместо просто вложенных if'ов можно использовать if-goto и уже на новой локации применять следующий условный оператор. Тот самый редкий случай, когда оператор безусловного перехода помогает сделать код читабельнее. цитата: | Неудобство3: В урке отсутствуют массивы и функции их обработки. Ужасно неудобно. [...] Это всё приходится писать самому. Что уже вычёркивает авторов не сильно знакомых с программированием и алгоритмами. |
| Справедливости ради, я, пожалуй, и не вспомню, когда мне при создании текстовой адвенчи понадобился массив. И это даже парсерных игр касается. Списки - да, пригождались, а вот массивы... Разве что когда Аргинк на Фурку портировал... нет, пожалуй и там с них толку было как с козла молока. цитата: | Неудобство4: Нет нормальных функций. Да, можно сэмулировать функцию - вызвать локацию с параметрами через proc, посчитать там что-то, присвоить куда надо значение, но! Нельзя сделать локальную функцию, которая возвращала бы тебе что-то не в глобальных переменных. На самом деле то, что все переменные в уркле глобальные, ну, кроме появившихся в фурке параметров, передаваемых локации, это даже хорошо. Но вот то, что нетльзя сделать функцию свозвращаемыми параметрами – неудобно. |
| Ну, при должной самодисциплине (использование для proc специально выделенных переменных и неиспользование этих переменных где-то еще) оно ничем от нормальной функции не отличается.
| |
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 648
Зарегистрирован: 13.03.07
|
|
Отправлено: 09.12.16 22:21. Заголовок: Серый Волк пишет: Н..
Серый Волк пишет: цитата: | Новогоднее письмо Адженты Деду Морозу) |
| Скорее снегУРКе.
| |
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 225
Зарегистрирован: 06.11.08
|
|
Отправлено: 09.12.16 23:19. Заголовок: Uux, "Почему pl..
Uux, "Почему pln? А #/$ на что? " (с) Я про них помню, знаю, люблю. Но это опять дополнительная писанина. "Ты когда-нибудь выводила текст на ассемблере?.. " (с) Выводила, писала, было такое, но на ассемблере уже тыщу лет никто не пишет. Утрирую, но тем не менее. "Вместо просто вложенных if'ов можно использовать if-goto и уже на новой локации применять следующий условный оператор. Тот самый редкий случай, когда оператор безусловного перехода помогает сделать код читабельнее. " (с) Можно и прок использовать, и там тоже ифы делать, можно и флаги ставить. Да много чего можно. Но от этого сильно удобней не становится. "Справедливости ради, я, пожалуй, и не вспомню, когда мне при создании текстовой адвенчи понадобился массив. И это даже парсерных игр касается. Списки - да, пригождались, а вот массивы... Разве что когда Аргинк на Фурку портировал... нет, пожалуй и там с них толку было как с козла молока. " Справедливости ради, списки по сути те же массивы. И мне вот они нужны везде, массивы эти и добавление и удаление. Но себе я либу написала, так что мне пофигу теперь. Раз уж Фаер их добавлять не хочет. "Ну, при должной самодисциплине (использование для proc специально выделенных переменных и неиспользование этих переменных где-то еще) оно ничем от нормальной функции не отличается." (с) Всё можно, кроме переменная = proc функция(2,4) и чтобы в переменной оказывалось число равное 2*4
| |
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 226
Зарегистрирован: 06.11.08
|
|
Отправлено: 10.12.16 04:53. Заголовок: qwerty пишет: Вот п..
qwerty пишет: цитата: | Вот парсерную игру на нём писать реально неудобно. |
| Реально удобнее, чем на любой другой менюшной платформе. Я не говорю конечно сейчас про инстед с его метапарсером.
| |
Профиль
Цитата
Ответить
|
|
| постоянный участник
|
Сообщение: 50
Зарегистрирован: 17.02.10
|
|
Отправлено: 14.01.17 19:33. Заголовок: По поводу функций, ч..
По поводу функций, чтобы не сильно изменять сам язык, есть 2 варианта. 1. Нужно добавить оператор func (или оставить proc). А также оператор return (или модифицировать quit/exit) для вызова внутри локаций. И аргументы для функции. Вызывать все так: r = func локация(a1, a2) или r = proc локация(a1, a2) :локация a = arg1; первый аргумент а1 b = arg2; второй аргумент а2 return (a + b) end 2. Добавить только параметры для proc. Вызывать proc с параметрами, а возвращать в переменной, скажем result. 3. Этот 3-й вариант работает сейчас: :begin arg1 = 5 arg2 = 5 proc func pln func = #result$ end :func result = #arg1 + arg2$ end
| |
Профиль
Цитата
Ответить
|
|
|