Обсуждение:BASIC-PLUS

Объединить?

Обсуждение слияния см. в разделе Talk:HP_BASIC_for_OpenVMS#BASIC-PLUS .

Командная оболочка?

Кто-то только что добавил категорию "Командные оболочки" в BASIC+. Я не уверен, что согласен.

Хотя верно, что BASIC+ казался оболочкой для наивного пользователя, он обрабатывал только те команды, которые были специфичны для языка BASIC+, поэтому "OLD", "NEW", "RUN", "SAVE", "COMPILE" и т. п. Другие очевидные команды, которые BASIC+ сам не понимал, выбрасывались в системную службу, которая пыталась сопоставить команду пользователя с одной из известных команд CCL (Concise Command Language), которые были определены в этой конкретной системе. (Примечание: я мог перевернуть порядок обработки: CCL мог первым взломать команды.)

Так является ли BASIC+ действительно командной оболочкой? Или он просто действует как интерфейс к коду CCL, который можно было бы считать настоящей командной оболочкой?

Атлант 13:05, 14 августа 2006 (UTC) [ ответить ]

Это правда, но чем это отличается от оболочек Unix? Такие вещи, как DCL, которые тщательно пережевывают все, что вы им скормили, являются исключением. Пол Конинг 11:01, 30 июля 2007 (UTC) [ ответить ]
Даже это не всегда так. В RSX, если DCL не понимает строку, он перенаправляет ее в другие части системы, чтобы они попробовали ее обработать.
Sillbit (обсуждение) 17:17, 13 декабря 2020 (UTC) [ ответить ]
Также BASIC+ был не просто интерпретатором, он был KBM (монитором клавиатуры). Это означало, что при входе он ДОЛЖЕН был определить, запускается ли система только что, произошла ли ее авария, вошли ли вы в систему или нет, передать управление $INIT.* или $LOGIN.* (подстановочные знаки, потому что мы никогда не знаем, КТО может быть KBM по умолчанию в списке систем времени выполнения) прежде, чем выдавать вам приглашение. Обработчики ловушек, псевдоклавиатуры, повышение и понижение привилегий и расчет того, сколько памяти нам нужно для загрузки файла, все это выполняется KBM (работающей в пользовательском режиме). После ввода команды, THEN .CCL вызывается (каждый раз) до того, как будут рассмотрены локальные команды (это было стандартом для большинства KBM). Вот почему вы никогда не создавали CCL с именами new, old или print (попробуйте). Команды CCL (Concise Command Lanugage) были уникальным зверем, но на самом деле не более чем списком команд, которые можно было запустить, сохраненным в динамической памяти (буферизация FIP). Для большинства людей (включая меня) вы бы не подумали о BASIC+ как о командной оболочке. Но по сравнению с ними, оболочки Unix гораздо проще писать, чем оболочки KBM. Bbump 03:05, 13 августа 2007 (UTC) [ ответить ]
Маленькие компьютеры, такие как Tandy 100 (ноутбук с 24К ОЗУ), использовали basic и как язык сценариев, и как интерпретатор команд. Вы могли запускать программы отсюда, включая программы, закодированные в машинном коде. На самом деле неважно, какой командный процессор вы используете, в конце концов, это базовая ОС (даже в DOS), которая загружает программу. -- Wendy.krieger 09:06, 28 октября 2007 (UTC) [ ответить ]
Я работал над RSTS-11 версии 4B. Когда вы входили в систему, вы оказывались в интерпретаторе BASIC, и это было все, больше ничего вы не могли делать. Буквально все, что вы делали на компьютере, было

через этот BASIC. Так что если это не было командной оболочкой, то вы утверждаете, что более ранние RSTS не *имели* командной оболочки. Что мне кажется чепухой. Подробности того, как это было реализовано, на самом деле не имеют значения.

Источник

В то время как DEC взяла на себя разработку BASIC-PLUS, первоначальная разработка была выполнена EG&H (Evans, Griffiths and Hart). Пол Конинг 11:01, 30 июля 2007 (UTC) [ ответить ]

Непонимание циклов FOR

Похоже, автор этой статьи не понял, зачем существуют циклы FOR с условными условиями выхода.

Всегда было очевидно, что легко выйти из любого цикла FOR. Вы могли либо изменить переменную цикла на значение, соответствующее условию выхода (да, это работает даже для обычного цикла FOR), либо, что еще более очевидно, просто GOTO из цикла. Смысл FOR ... UNTIL или FOR ... WHILE был не в том, что NEXT не может быть в операторе IF, а в том, что он допускал совершенно произвольные условия выхода из цикла. Они вообще не должны ссылаться на саму переменную цикла. И также, даже в этих циклах, сама переменная цикла по-прежнему управляется так же, как и в любом другом цикле FOR. Нет необходимости явно обновлять переменную цикла. Она автоматически обновляется в операторе NEXT.

Итак, вы можете написать:

ДЛЯ I=0 ШАГ 3 ПОКА X=0...ДАЛЕЕ Я

и это будет повторяться до тех пор, пока X не станет равным нулю. Между тем, I увеличивался на 3 для каждой итерации в цикле.

Пример на странице глупый. FOR I=0 UNTIL I=10 на самом деле идентично FOR I=0 TO 9, и это просто более громоздкий способ записи.

(Конечно, можно также заметить, что, строго говоря, условные выходы также не были нужны, поскольку можно было просто создать оператор IF в цикле и перейти к выходу из цикла при правильных условиях. Однако в сочетании с модификаторами операторов он становится более актуальным и полезным.

Sillbit (обсуждение) 16:41, 13 декабря 2020 (UTC) [ ответить ]

Я не уверен, где в статье говорится то, о чем вы говорите выше. Там просто говорится, что UNTIL и WHILE могут использоваться для изменения его поведения, а NEXT не может использоваться в операторе. Maury Markowitz ( talk ) 13:54, 13 мая 2022 (UTC) [ ответить ]

Исправления относительно модификаторов утверждений

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

Утверждение заключается в том, что PRINT "Foo" IF A=0 эквивалентно IF A=0 THEN PRINT "Foo"

Они не совсем одинаковы. Сравните следующие две строки:

10 ЕСЛИ A=0 ТО ПЕЧАТЬ "Foo" : ПЕЧАТЬ "Bar"20 ПЕЧАТЬ "Foo" ЕСЛИ A=0 : ПЕЧАТЬ "Bar"

В строке 10 второй оператор печати будет рассматриваться только в том случае, если оператор IF истинен. В строке 20 второй оператор печати не зависит от IF и всегда будет печататься.

Sillbit (обсуждение) 16:41, 13 декабря 2020 (UTC) [ ответить ]

Разделитель операторов

В какой-то момент BASIC+ перешел от использования двоеточия (:) в качестве разделителя операторов к использованию обратной косой черты (\). Не уверен, когда именно это произошло, но в какой-то момент двоеточие вообще перестало приниматься.

Sillbit (обсуждение) 16:48, 13 декабря 2020 (UTC) [ ответить ]

РСТС

Статья постоянно ссылается на RSTS/E, но это не верно. В частности, BASIC PLUS *не* был разработан для RSTS/E. RSTS начинался как RSTS-11, и именно на нем изначально работал BASIC PLUS. RSTS/E появился позже.

По этой ОС есть только одна статья, как видно в статье, она охватывает как -11, так и /E. Мори Марковиц ( обсуждение ) 13:56, 13 мая 2022 (UTC) [ ответить ]
Retrieved from "https://en.wikipedia.org/w/index.php?title=Talk:BASIC-PLUS&oldid=1205789857"