АвторСообщение
постоянный участник




Сообщение: 217
Зарегистрирован: 06.11.08
ссылка на сообщение  Отправлено: 08.12.16 13:39. Заголовок: Рефакторинг URQL


Решила немного потеоретизировать по поводу языка URQ.
Ни на что не претендую, и понятно, что всё здесь написанное – это только теория, ибо практикой я точно заниматься не собираюсь.
И да, можно кидаться тапками. Но захотелось как-то структурировать мысли на тему.
В связи с размножившимися платформами и новыми языками, окидывая взглядом уркл, можно заметить, что он как-то не сильно удобен.
Собственно он всегда был не очень, но с последними тенденциями совсем отстал.

Поясню:

Неудобство 1:
То, что перед строкой текста, да что там, перед каждым новым параграфом надо обязательно писать pln.
Знающие люди, конечно умеют переносить тексты и удобно ихз структурировать, но тогда вместо pln приходится писать знак переноса и нижнее подчёркивание, что тоже не есть хорошо.
Нигде, абсолютно нигде это не делается и не используется. Все нормальные люди либо заключают полностью весь текст в кавычки. Либо в скобки, либо вообще пишут прямо так без всего.

Неудобство2:
Непонятные ифы. Если мы делаем в игре вложенные условия, тодовольно сложно понять какой else к какому if относится.
Конечно, можно проэкспериментировать и приноровиться, но всё прогрессивное человечество пользуется блоками кода и закрытием ифов, будь то связка if\end или же фигурные скобки или просто перенос по строкам и отступам.
Так же нет в урке и кейсов, то есть проверок на безусловный выбор из множества. Даже в куспе сделали команду elseif, а мы всё ещё извращаемся. Флаги рисуем.

Неудобство3:
В урке отсутствуют массивы и функции их обработки. Ужасно неудобно.
Да, конечно массивы можно сэмулировать подстановками, что сейчас и делается, в целом даже без особого труда.
Но вот функции работы с массивами, такие как:
  • Замена элемента
  • Удаление элемента
  • Добавление элемента
  • Сортировка
  • Поиск
  • Определение размерности массива
    Это всё приходится писать самому. Что уже вычёркивает авторов не сильно знакомых с программированием и алгоритмами.

    Неудобство4:
    Нет нормальных функций. Да, можно сэмулировать функцию - вызвать локацию с параметрами через proc, посчитать там что-то, присвоить куда надо значение, но!
    Нельзя сделать локальную функцию, которая возвращала бы тебе что-то не в глобальных переменных. На самом деле то, что все переменные в уркле глобальные, ну, кроме появившихся в фурке параметров, передаваемых локации, это даже хорошо. Но вот то, что нетльзя сделать функцию свозвращаемыми параметрами – неудобно.

    Всё, что вот прямо сейчас пришло в голову и было бы достаточным для удобного написания текстовой игры.
    Если что-то ещё забыла, то допишу позже. Либо вы напишите, если что-то ещё углядели.

    В целом моё мнение такое, что язык требует переработки и добавлений. Не таких уж больших и сложных. И нет, не надо предлагать втыкать в фурку луа или что-то такое.
    У урки есть чудесная штука – подстановки, и за них ей можно простить всё. И терять их не надо. А вот поменять то, что нужно поменять - было бы прекрасно.
    К тому же, если очень захотеть, то даже совместимость со старыми версиями можно оставить.

    Понимаю, что, вероятнее всего, никто этим заниматься не будет, но помечтать-то можно(!).
    Ну и мало ли, вдруг, неожиданно так, каким-то невероятным чудом...

    Спасибо за внимание.


  • Я за мир во всём мире. За отдельно взятые инопланетные цивилизации ответственности не несу... Спасибо: 3 
    Профиль Цитата Ответить
    Ответов - 11 [только новые]


    почётное бревно




    Сообщение: 772
    Зарегистрирован: 17.05.05
    ссылка на сообщение  Отправлено: 08.12.16 14:16. Заголовок: Чую я, грядет ажурка..


    Чую я, грядет ажурка...

    Спасибо: 0 
    Профиль Цитата Ответить
    постоянный участник




    Сообщение: 218
    Зарегистрирован: 06.11.08
    ссылка на сообщение  Отправлено: 08.12.16 14:18. Заголовок: Не, не будет никакой..


    Не, не будет никакой кожурки. я не пишу движков.

    И кстати, что касается скорее интерфейса, чем языка.
    Есть ещё неудобство, что нельзя убирать\стирать отдельно btn'ы. Но это уже другой немного функционал.

    Я за мир во всём мире. За отдельно взятые инопланетные цивилизации ответственности не несу... Спасибо: 0 
    Профиль Цитата Ответить
    Юрист урки, адвокат дьявола




    Сообщение: 615
    Зарегистрирован: 07.12.06
    ссылка на сообщение  Отправлено: 08.12.16 14:26. Заголовок: Новогоднее письмо Ад..


    Новогоднее письмо Адженты Деду Морозу)

    Спасибо: 0 
    Профиль Цитата Ответить
    постоянный участник




    Сообщение: 219
    Зарегистрирован: 06.11.08
    ссылка на сообщение  Отправлено: 08.12.16 15:01. Заголовок: Надеюсь, он решит, ч..


    Надеюсь, он решит, что я хорошо себя вела в этом году и заслуживаю подарка ;)

    Я за мир во всём мире. За отдельно взятые инопланетные цивилизации ответственности не несу... Спасибо: 0 
    Профиль Цитата Ответить
    постоянный участник




    Сообщение: 537
    Зарегистрирован: 20.01.06
    ссылка на сообщение  Отправлено: 09.12.16 10:21. Заголовок: Ajenta пишет: В свя..


    Ajenta пишет:

     цитата:
    В связи с размножившимися платформами и новыми языками, окидывая взглядом уркл, можно заметить, что он как-то не сильно удобен.



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

    Вот парсерную игру на нём писать реально неудобно.

    ===

    По неудобствам согласен со следующими:

    Ajenta пишет:

     цитата:
    Неудобство2:
    Непонятные ифы. Если мы делаем в игре вложенные условия, тодовольно сложно понять какой else к какому if относится.

    Ajenta пишет:

     цитата:
    Неудобство4:
    Нет нормальных функций. Да, можно сэмулировать функцию



    ===

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

    Спасибо: 0 
    Профиль Цитата Ответить
    постоянный участник




    Сообщение: 220
    Зарегистрирован: 06.11.08
    ссылка на сообщение  Отправлено: 09.12.16 18:25. Заголовок: Сделала библиотечку ..


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

    http://urq.plut.info/node/2281

    Я за мир во всём мире. За отдельно взятые инопланетные цивилизации ответственности не несу... Спасибо: 2 
    Профиль Цитата Ответить
    постоянный участник


    Сообщение: 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 специально выделенных переменных и неиспользование этих переменных где-то еще) оно ничем от нормальной функции не отличается.

    Спасибо: 0 
    Профиль Цитата Ответить
    постоянный участник


    Сообщение: 648
    Зарегистрирован: 13.03.07
    ссылка на сообщение  Отправлено: 09.12.16 22:21. Заголовок: Серый Волк пишет: Н..


    Серый Волк пишет:

     цитата:
    Новогоднее письмо Адженты Деду Морозу)



    Скорее снегУРКе.

    Спасибо: 0 
    Профиль Цитата Ответить
    постоянный участник




    Сообщение: 225
    Зарегистрирован: 06.11.08
    ссылка на сообщение  Отправлено: 09.12.16 23:19. Заголовок: Uux, "Почему pl..


    Uux,

    "Почему pln? А #/$ на что? " (с)
    Я про них помню, знаю, люблю. Но это опять дополнительная писанина.

    "Ты когда-нибудь выводила текст на ассемблере?.. " (с)

    Выводила, писала, было такое, но на ассемблере уже тыщу лет никто не пишет. Утрирую, но тем не менее.


    "Вместо просто вложенных if'ов можно использовать if-goto и уже на новой локации применять следующий условный оператор. Тот самый редкий случай, когда оператор безусловного перехода помогает сделать код читабельнее. " (с)

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


    "Справедливости ради, я, пожалуй, и не вспомню, когда мне при создании текстовой адвенчи понадобился массив. И это даже парсерных игр касается. Списки - да, пригождались, а вот массивы... Разве что когда Аргинк на Фурку портировал... нет, пожалуй и там с них толку было как с козла молока. "

    Справедливости ради, списки по сути те же массивы.
    И мне вот они нужны везде, массивы эти и добавление и удаление. Но себе я либу написала, так что мне пофигу теперь. Раз уж Фаер их добавлять не хочет.


    "Ну, при должной самодисциплине (использование для proc специально выделенных переменных и неиспользование этих переменных где-то еще) оно ничем от нормальной функции не отличается." (с)

    Всё можно, кроме переменная = proc функция(2,4) и чтобы в переменной оказывалось число равное 2*4

    Я за мир во всём мире. За отдельно взятые инопланетные цивилизации ответственности не несу... Спасибо: 1 
    Профиль Цитата Ответить
    постоянный участник




    Сообщение: 226
    Зарегистрирован: 06.11.08
    ссылка на сообщение  Отправлено: 10.12.16 04:53. Заголовок: qwerty пишет: Вот п..


    qwerty пишет:

     цитата:
    Вот парсерную игру на нём писать реально неудобно.



    Реально удобнее, чем на любой другой менюшной платформе. Я не говорю конечно сейчас про инстед с его метапарсером.

    Я за мир во всём мире. За отдельно взятые инопланетные цивилизации ответственности не несу... Спасибо: 1 
    Профиль Цитата Ответить
    постоянный участник


    Сообщение: 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



    Спасибо: 0 
    Профиль Цитата Ответить
    Ответ:
    1 2 3 4 5 6 7 8 9
    видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

    показывать это сообщение только модераторам
    не делать ссылки активными
    Имя, пароль:      зарегистрироваться    
    Тему читают:
    - участник сейчас на форуме
    - участник вне форума
    Все даты в формате GMT  3 час. Хитов сегодня: 213
    Права: смайлы да, картинки да, шрифты нет, голосования нет
    аватары да, автозамена ссылок вкл, премодерация откл, правка нет