Новая справка по QSP.

Re: Новая справка по QSP.

newsash,
википедия вообще не указ smile Её редактирует кто попало, а уж администрируют так и вовсе мудак на мудаке.

Но даже если взять эту же статью  на Википедии: Процедура. Что мы там увидим?

Автор пишет:

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

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

Далее, читаем

В языках программирования высокого уровня используется два типа подпрограмм: процедуры и функции.

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

Как видишь, наглядный пример той путаницы, о которой я тебе говорил.

Диалог с коллегой

Как только твой коллега освоит QSP, обратись к нему с вопросом, есть ли в QSP разделение на функции и процедуры. До тех пор пустой звук.

Попробую подговорить Байта объединить эти два оператора.

Не дай бог. Испохабить язык из-за того что ты не можешь смириться с неприятной тебе статьёй в справке...

Nex
useravatar
Offline
4277 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Новая справка по QSP.

Nex написал(а):

Как только твой коллега освоит QSP, обратись к нему с вопросом, есть ли в QSP разделение на функции и процедуры. До тех пор пустой звук.

Коллеге я задавал вопрос про языки программирования, он про QSP вообще не в курсе. Речь про то, что "процедуры" - динозавр.
В QSP есть. Эта ересь сюда из Бейсика пришла. smile

Nex написал(а):

Не дай бог. Испохабить язык из-за того что ты не можешь смириться с неприятной тебе статьёй в справке...

Мне неприятна не статья, а разделение между функциями и процедурами. И обсуждение статьи в справке выявило недостаток языка, такое бывает.
Разделение между процедурами и функциями рождает вот такие проблемы.
Если не ошибаюсь, то при отсутствии задания result и $result GS можно безболезненно подменить на FUNC(). А при задании результата использовать эту локацию через GS - дурной тон.

newsash
useravatar
Offline
465 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Новая справка по QSP.

newsash написал(а):

Если не ошибаюсь, то при отсутствии задания result и $result GS можно безболезненно подменить на FUNC().

Если ты просто подменишь GS на FUNC (без указания в вызываемой локации RESULT):

Код:


*NL 'Начало'
func('Подпрограмма')
*P 'Конец'

то в основное окно выведется перевод строки, который разорвёт строку "НачалоКонец".

newsash написал(а):

А при задании результата использовать эту локацию через GS - дурной тон.

С чего бы это? А если у подпрограммы двойственное значение? При одном сочетании параметров она задаёт значения, при другом — возвращает? Например:

Код:


GS 'Местоположение', 'Яблоко', 'Стол'
*NL 'Где лежит яблоко: '+func('Местоположение', 'Яблоко')

Olegus t.Gl.
useravatar
Offline
137 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Новая справка по QSP.

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

В языках программирования от более простых структур постепенно перешли к более сложным. Сначала процедурный Бэйсик, потом "Си" с функциями, потом C++ с объектами и классами... Всё это лишь синтаксические надстройки, внутри всё те же машинные коды. Да, Бэйсик - старший брат современных языков, и он использовал не модные нынче принципы построения программ. Но раз уж по его мотивам был написан QSP, и разделение перенято из Бэйсика, какой смысл пытаться сейчас это "прикрыть" запутыванием терминологии? Нужно принять это, смириться с этим, и жить дальше.

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

Разделение между процедурами и функциями рождает вот такие проблемы.

Прочитай чуть дальше, и увидишь что исправление этой т.н. "проблемы" уже в планах на следующую версию. Мимо.

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

Код:

deleted = FUNC('make_unique', '$arr')

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

Код:

FUNC('make_unique', '$arr')

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

Код:

! Первый вариант. Записываем результат в ничего не значающую переменную.

пустышка = FUNC('make_unique', '$arr')

! Второй вариант. Вызываем через GOSUB. Этот вариант короче и наглядней!
GOSUB 'make_unique', '$arr'

И вот во втором-то как раз и всплывает различие в обработке переменной RESULT при разных вызовах.

Nex
useravatar
Offline
4277 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Новая справка по QSP.

Nex написал(а):

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

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

Olegus t.Gl. написал(а):

то в основное окно выведется перевод строки, который разорвёт строку "НачалоКонец".

Nex написал(а):

! Первый вариант. Записываем результат в ничего не значающую переменную.
пустышка = FUNC('make_unique', '$arr')

! Второй вариант. Вызываем через GOSUB. Этот вариант короче и наглядней!
GOSUB 'make_unique', '$arr'

Это единственное стоящее различие между двумя операторами. Прошу прощения, забыл про этот момент.
В других языках выведенное одиночной функцией значение просто теряется. А в QSP оно выводится. Я проголосовал бы за обязательно явный вывод на экран, но, уверен, меня никто не поддержит. Придется с этим смириться и с этим жить. smile

newsash
useravatar
Offline
465 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Новая справка по QSP.

Написал немного про анализатор.
http://wiki.qsp.su/analyzer
Но права моего аккаунта не позволяют добавить ссылку на неё  в список справа под утилиты(или я не знаю как).
Стоит ли написать во вкладке Начало. Рекомендуем использовать Атладчик и ссылку на тему?

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

bkz
useravatar
Offline
67 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Новая справка по QSP.

Перенёс в соответствующее пространство имён, добавил ссылку в меню.

Черновики статей лучше создавать в "песочнице".

Nex
useravatar
Offline
4277 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Новая справка по QSP.

Вот это что за страницы? Спам?
http://wiki.qsp.su/pool_table_cove_s_fo … ia_d_table
Судя по истории изменений, регистрируется пользователь - через минуту страница.

Aleks Versus
воздвигатель башни
useravatar
Offline
1515 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Новая справка по QSP.

Да уж явно не любитель/разработчик интерактивных новелл. А разве наша Кусп Вики не завершена. Там конечно есть несколько статей-заглушек, но в целом инфа там можно сказать исчерпывающая. Зачем там случайные участники/редакторы...

Wol4ik
Сталкер
useravatar
Offline
133 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Новая справка по QSP.

Удалите спам-статьи пожалуйста.

Nex
useravatar
Offline
4277 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Информация

Статистика форума:
 
Всего тем:
981
Всего опросов:
14
Всего сообщений:
16790696
Сообщений на этой неделе:
4
Пользователи форума:
 
Всего пользователей:
2419
Последним зарегистрировался:
silviel