Бейсик Вильнюс

Поделись знанием:
Перейти к: навигация, поиск
Бейсик Вильнюс
Класс языка:

алгоритмическое, процедурное

Тип исполнения:

Интерпретатор компилирующего типа

Появился в:

1985

Расширение файлов:

BAS, COD

Система типов:

нестрогая

Испытал влияние:

MSX BASIC

Бейсик Вильнюс (также известен как BASIC-86) — реализация языка программирования Бейсик для 16-разрядных домашних и учебных компьютеров с процессорами архитектуры PDP-11. Первоначально разработан в вычислительном центре Вильнюсского государственного университета (ВЦКП ВГУ) в 1985 году. Использовался на компьютерах: УКНЦ, ДВК, БК-0010/БК-0011, Немига.

По-видимому, Бейсик Вильнюс был разработан под сильным влиянием MSX BASIC: совпадают названия большинства операторов и функций, а также коды сообщений об ошибках. Но в Бейсик Вильнюс нет возможности записи нескольких операторов в одной строке, нет оператора PLAY, отсутствуют операторы задания типа переменных DEFINT, DEFDBL и др., а также и некоторые другие возможности. Изображение символа с кодом 36, которое в кодировке ASCII соответствует символу доллара ($), заменено на изображение знака «солнышко» / «черепашка» (¤). Поэтому все строковые переменные и функции со строковым результатом пишутся через ¤, например MID¤.





Исполнение

При запуске программы командой RUN происходит компиляция программы в промежуточный, так называемый шитый код. Шитый код, по сути, представляет собой последовательность адресов вызова подпрограмм и данные для вызовов. При этом транслятор перед исполнением программы переводит все числа во внутренне представление и все выражения — в обратную бесскобочную запись. При выполнении программы исполняющая система производит вызовы указанных подпрограмм и передаёт им подготовленные данные. Таким образом, шитый код выполняется значительно (в 1,5-3 раза и более) быстрее чем обычная интерпретация (поскольку при исполнении программы не тратится время на «распознавание» чисел и имён переменных, на преобразование выражений и т. д.), но во много раз медленнее чем программа в машинном коде, полученная на выходе настоящего компилятора. Кроме того, при первом запуске программы возникает заметная пауза, зависящая от длины программы, во время которой и происходит «компиляция».

Варианты

Бейсик Вильнюс для БК-0010/БК-0011 занимает 24 КБ ПЗУ. В целях экономии памяти тексты ошибок не были зашиты в ПЗУ; ошибки выдаются не текстом, а кодами, например: «Ошибка 2 в строке 10».

Для БК-0010 с Фокалом в ПЗУ была создана упрощенная версия вильнюсского Бейсика размером всего 9 КБ, загружаемая в ОЗУ с магнитофона (первый вариант — в 1985 г, второй — в 1987-м). Она не поддерживала разные типы чисел (только вещественные одинарной точности), а также часть операторов и функций основной версии, но базовый набор возможностей Бейсика был реализован. При этом версия 87-го года допускала использование нескольких операторов в одной строке, а также сокращенное до одной или нескольких первых букв написание операторов. Кроме того, использование вещественной арифметики одинарной точности ускоряло работу с вещественными числами в несколько раз относительно версии для БК-0010-01 в ПЗУ, что делало версию в ОЗУ действительно чрезвычайно быстрой реализацией Бейсика при работе с переменными этого типа.

Существует три варианта Бейсик Вильнюс для УКНЦ — версия в кассете ПЗУ занимает 24 КБ, версия для загрузки через сеть (сетевая) — 28 КБ, дисковая версия — 30 КБ. Дисковая и сетевая реализации отличаются наличием текстовых сообщений об ошибках. Последние варианты датируются сентябрём 1988 года.

Взгляд на язык

Пример простейшей программы:

10 CLS
20 PRINT "Всем привет!"
30 END

Программа состоит из набора нумерованных строк, в каждой строке записывается один оператор. Работа по редактированию текста программы происходит в режиме командной строки. Команды:

  • RUN — запуск программы на выполнение
  • CONT — продолжение работы программы после остановки
  • CSAVE, CLOAD — запись/чтение программы на магнитную ленту и с неё, расширение файла .COD; команда FIND позволяет найти файл, записанный на магнитную ленту
  • LIST — вывод текста программы на экран; LLIST — печать листинга на принтер
  • . — вызов строки на редактирование
  • DELETE — удаление строк
  • NEW — удаление всей программы
  • RENUM — перенумерация строк
  • AUTO — ввод программы с автонумерацией строк
  • BSAVE, BLOAD — запись/чтение блока памяти на магнитную ленту и с неё
  • MONIT, SYSTEM — выход из Бейсика в системный монитор

Операторы языка:

BEEP    CALL    CIRCLE  CLEAR   CLOSE   CLS     COLOR
DATA    DEF     DEF FN  DEF USR DIM     DRAW    END
FOR     GOSUB   GOTO    IF      INPUT   KEY     LET
LINE    LOCATE  LPRINT  ON      OPEN    OUT     NEXT
PAINT   POKE    PRESET  PRINT   PSET    READ    REM
RESTORE RETURN  SCREEN  STOP    TROFF   TRON

Есть возможность при вводе сокращать операторы до трех символов (например: CIRCLE можно сократить до CI), а некоторые, первые два символа которых не совпадают ни с одним другим оператором — до двух (POKE — PO). Команду PRINT можно заменять знаком ?. Также есть возможность использовать цепочную конструкцию IF — THEN — ELSE IF, пользуясь при этом сокращениями TH, EL и ELIF. При этом максимальная длина одной строки программы ограничивается 254 символами.

Функции:

SQR     SIN     COS     TAN     ATN     PI      EXP     LOG
ABS     FIX     INT     SGN     RND     FRE   
CINT    CSNG    CDBL
PEEK    INP
BIN¤    OCT¤    HEX¤    CHR¤    ASC     LEN     STRING¤ INKEY¤
STR¤    VAL     MID¤
CSRLIN  POS     LPOS    EOF
POINT

Бейсик Вильнюс включает в себя возможности вызова подпрограмм в машинном коде. Для этого используется конструкция DEF USR. Машинный код может загружаться командой BLOAD либо формироваться оператором POKE.

Среди недостатков этого бейсика — отсутствие ряда почти необходимых команд, например, INSTR для поиска вхождения строки в строку, DEC для перевода 16-й числа в 10-е, средств для работы с ошибками во время исполнения программы, команды для посимвольного ввода из файла.

Интересные факты

  • В Бейсик-Вильнюс использовался популярный в то время алгоритм генерации случайных чисел RANDU, и пользователями БК был замечен существенный недостаток алгоритма[1] — например, при отрисовке большого количества точек, координаты которых получены функцией RND(), было хорошо видно разделение точек по диагональным плоскостям.
  • Существенным недостатком такого транслятора был большой расход памяти: фактически программа занимала в 2 раза больше памяти, чем у классических интерпретаторов, поскольку в ОЗУ одновременно хранилась и исходная программа, и «скомпилированная», готовая для исполненияК:Википедия:Статьи без источников (тип: не указан)[источник не указан 2863 дня]. Из-за этого максимальный размер программ на Бейсике как у БК-0010-01, так и у УКНЦ был очень скромным — соответственно около 7 (в режиме «расширенной памяти» — около 13) и 8,5 Кбайт. Хотя была возможность отказаться от исходного текста и использовать только «скомпилированную» версию программы.
  • Особенностью Вильнюсского Бейсика на БК-0010-01 (как и прототипа — Бейсика MSX) было принудительное использование вещественных вычислений двойной точности (даже для переменных одинарной точности)К:Википедия:Статьи без источников (тип: не указан)[источник не указан 2863 дня], что очень сильно влияло на производительность. Если при работе с целыми числами Бейсик БК показывал выдающуюся скорость, во много раз превышавшую показатели Бейсика на других подобных ПК, то при обработке вещественных чисел, в том числе одинарной точности, он нередко уступал даже классическим интерпретаторам с достаточно быстрой вещественной арифметикой. В то же время, упрощенная версия Вильнюсского Бейсика, загружаемая в ОЗУ, обладала в 2-3 раза большей скоростью вычислений (а при вычислении сложных функций — до 10 раз большей!), поскольку в ней использовалась только одинарная точность и, по-видимому, другие — более быстрые — алгоритмы вещественных вычислений.
  • Скорость работы с графикой в Бейсике БК (рисование линий, окружностей, закраска и т. д.) была сравнительно невысокой, из-за чего, несмотря на наличие быстрого «полукомпилятора», в графических тестах на Бейсике БК уступал многим ПК, аналогичным по цене и скорости процессора[2].
  • Тем не менее, наличие качественно реализованной вещественной арифметики «двойной точности» (когда число с плавающей запятой имеет длину не 32-40 бит, как обычно, а 64 бита) — это редкость для ПК подобной стоимости, и это позволяло существенно увеличить точность математических расчетов. Причем двойная точность на БК была действительно точной, в отличие, скажем от «Корвета», где погрешность вычислений двойной точности была не несколько порядков выше.К:Википедия:Статьи без источников (тип: не указан)[источник не указан 2870 дней]
  • Бейсик MSX — на тот момент один из наиболее функциональных и удобных вариантов этого языка программирования — был взят за основу Вильнюсского Бейсика далеко не случайно: в 1986 году компьютеры Yamaha MSX и MSX2 выиграли конкурс на поставку в СССР учебных ПК, и во второй половине 80-х эти ПК в достаточно большом количестве закупались для оснащения учебных заведений. Более того, в середине 80-х ПК стандартов MSX и MSX2 считались как бы образцовыми для разработки отечественных учебных компьютеров.К:Википедия:Статьи без источников (тип: не указан)[источник не указан 2875 дней] Поэтому на всех базовых советских учебных ПК — БК-0010-01, УКНЦ и «Корвете» — использовались версии Бейсика, аналогичные MSX Basic, что упрощало преподавание информатики, перенос программ и т. д. Причём наиболее близкой к оригиналу была версия для «Корвета», практически не отличавшаяся от MSX (и даже существенно превосходившая компьютеры MSX по скорости сложных вычислений), а в Вильнюсском Бейсике, к сожалению из-за ограниченной ОЗУ БК 0010, были упомянутые ограничения — только один оператор в строке, отсутствие операторов задания типа переменных вроде DEFINT и некоторые другие.

Напишите отзыв о статье "Бейсик Вильнюс"

Литература

  • [vak-opensource.googlecode.com/svn/trunk/bk/basic-vvu-1987/basmsx.txt Программное обеспечение микро-ЭВМ «Электроника БК-0010». Язык «Бейсик». Описание языка]. — ВЦ Вильнюсского госуниверситета, 1985. — 95 с.
  • [www.emuverse.ru/wiki/%D0%A3%D0%9A%D0%9D%D0%A6_%D0%91%D0%B5%D0%B9%D1%81%D0%B8%D0%BA_%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0 Программное обеспечение комплекса вычислительного учебного «Электроника МС 0202». Бейсик. Описание языка]. — 1987. — 98 с.
  • Авсеев В., Авсеев А. Особенности транслятора с языка Бейсик для БК-0010.01 // Информатика и образование. — 1990. — № 2. — С. 42—46.
  • Митрюхин В. К., Донской А. Н., Михайлов А. В., Немов А. М. [simulators.narod.ru/bookbk.htm Программирование на БК-0010-01]. — Чебоксары: РИО Чебоксарской типографии №1, 1993. — 1993 с.

Примечания

  1. М. Максимов. Случайны ли случайные числа? — Журнал «Наука и жизнь», № 10, 1986.
  2. www.youtube.com/watch?v=UJZpngjvCD8&list=PLiWLTRSJ9VmvBQHIEDEX6q8urb6Eqikwd&index=15 УКНЦ: дополнение к тесту неигровой графики ПК 80-х годов

Ссылки

  • [code.google.com/p/vak-opensource/source/browse/#svn/trunk/bk/basic-vvu-1985 Исходный код Бейсик Вильнюс 1985 для БК] на MACRO-11
  • [code.google.com/p/vak-opensource/source/browse/#svn/trunk/bk/basic-vvu-1987 Исходный код Бейсик Вильнюс 1987 для БК] на MACRO-11
  • [pdp-11.ru/bksoft/emulbk.htm Здесь можно найти компилятор Вильнюс Бейсика]

Отрывок, характеризующий Бейсик Вильнюс


12 го ноября кутузовская боевая армия, стоявшая лагерем около Ольмюца, готовилась к следующему дню на смотр двух императоров – русского и австрийского. Гвардия, только что подошедшая из России, ночевала в 15 ти верстах от Ольмюца и на другой день прямо на смотр, к 10 ти часам утра, вступала на ольмюцкое поле.
Николай Ростов в этот день получил от Бориса записку, извещавшую его, что Измайловский полк ночует в 15 ти верстах не доходя Ольмюца, и что он ждет его, чтобы передать письмо и деньги. Деньги были особенно нужны Ростову теперь, когда, вернувшись из похода, войска остановились под Ольмюцом, и хорошо снабженные маркитанты и австрийские жиды, предлагая всякого рода соблазны, наполняли лагерь. У павлоградцев шли пиры за пирами, празднования полученных за поход наград и поездки в Ольмюц к вновь прибывшей туда Каролине Венгерке, открывшей там трактир с женской прислугой. Ростов недавно отпраздновал свое вышедшее производство в корнеты, купил Бедуина, лошадь Денисова, и был кругом должен товарищам и маркитантам. Получив записку Бориса, Ростов с товарищем поехал до Ольмюца, там пообедал, выпил бутылку вина и один поехал в гвардейский лагерь отыскивать своего товарища детства. Ростов еще не успел обмундироваться. На нем была затасканная юнкерская куртка с солдатским крестом, такие же, подбитые затертой кожей, рейтузы и офицерская с темляком сабля; лошадь, на которой он ехал, была донская, купленная походом у казака; гусарская измятая шапочка была ухарски надета назад и набок. Подъезжая к лагерю Измайловского полка, он думал о том, как он поразит Бориса и всех его товарищей гвардейцев своим обстреленным боевым гусарским видом.
Гвардия весь поход прошла, как на гуляньи, щеголяя своей чистотой и дисциплиной. Переходы были малые, ранцы везли на подводах, офицерам австрийское начальство готовило на всех переходах прекрасные обеды. Полки вступали и выступали из городов с музыкой, и весь поход (чем гордились гвардейцы), по приказанию великого князя, люди шли в ногу, а офицеры пешком на своих местах. Борис всё время похода шел и стоял с Бергом, теперь уже ротным командиром. Берг, во время похода получив роту, успел своей исполнительностью и аккуратностью заслужить доверие начальства и устроил весьма выгодно свои экономические дела; Борис во время похода сделал много знакомств с людьми, которые могли быть ему полезными, и через рекомендательное письмо, привезенное им от Пьера, познакомился с князем Андреем Болконским, через которого он надеялся получить место в штабе главнокомандующего. Берг и Борис, чисто и аккуратно одетые, отдохнув после последнего дневного перехода, сидели в чистой отведенной им квартире перед круглым столом и играли в шахматы. Берг держал между колен курящуюся трубочку. Борис, с свойственной ему аккуратностью, белыми тонкими руками пирамидкой уставлял шашки, ожидая хода Берга, и глядел на лицо своего партнера, видимо думая об игре, как он и всегда думал только о том, чем он был занят.
– Ну ка, как вы из этого выйдете? – сказал он.
– Будем стараться, – отвечал Берг, дотрогиваясь до пешки и опять опуская руку.
В это время дверь отворилась.
– Вот он, наконец, – закричал Ростов. – И Берг тут! Ах ты, петизанфан, але куше дормир , [Дети, идите ложиться спать,] – закричал он, повторяя слова няньки, над которыми они смеивались когда то вместе с Борисом.
– Батюшки! как ты переменился! – Борис встал навстречу Ростову, но, вставая, не забыл поддержать и поставить на место падавшие шахматы и хотел обнять своего друга, но Николай отсторонился от него. С тем особенным чувством молодости, которая боится битых дорог, хочет, не подражая другим, по новому, по своему выражать свои чувства, только бы не так, как выражают это, часто притворно, старшие, Николай хотел что нибудь особенное сделать при свидании с другом: он хотел как нибудь ущипнуть, толкнуть Бориса, но только никак не поцеловаться, как это делали все. Борис же, напротив, спокойно и дружелюбно обнял и три раза поцеловал Ростова.
Они полгода не видались почти; и в том возрасте, когда молодые люди делают первые шаги на пути жизни, оба нашли друг в друге огромные перемены, совершенно новые отражения тех обществ, в которых они сделали свои первые шаги жизни. Оба много переменились с своего последнего свидания и оба хотели поскорее выказать друг другу происшедшие в них перемены.
– Ах вы, полотеры проклятые! Чистенькие, свеженькие, точно с гулянья, не то, что мы грешные, армейщина, – говорил Ростов с новыми для Бориса баритонными звуками в голосе и армейскими ухватками, указывая на свои забрызганные грязью рейтузы.
Хозяйка немка высунулась из двери на громкий голос Ростова.
– Что, хорошенькая? – сказал он, подмигнув.
– Что ты так кричишь! Ты их напугаешь, – сказал Борис. – А я тебя не ждал нынче, – прибавил он. – Я вчера, только отдал тебе записку через одного знакомого адъютанта Кутузовского – Болконского. Я не думал, что он так скоро тебе доставит… Ну, что ты, как? Уже обстрелен? – спросил Борис.
Ростов, не отвечая, тряхнул по солдатскому Георгиевскому кресту, висевшему на снурках мундира, и, указывая на свою подвязанную руку, улыбаясь, взглянул на Берга.
– Как видишь, – сказал он.
– Вот как, да, да! – улыбаясь, сказал Борис, – а мы тоже славный поход сделали. Ведь ты знаешь, его высочество постоянно ехал при нашем полку, так что у нас были все удобства и все выгоды. В Польше что за приемы были, что за обеды, балы – я не могу тебе рассказать. И цесаревич очень милостив был ко всем нашим офицерам.
И оба приятеля рассказывали друг другу – один о своих гусарских кутежах и боевой жизни, другой о приятности и выгодах службы под командою высокопоставленных лиц и т. п.
– О гвардия! – сказал Ростов. – А вот что, пошли ка за вином.
Борис поморщился.
– Ежели непременно хочешь, – сказал он.
И, подойдя к кровати, из под чистых подушек достал кошелек и велел принести вина.
– Да, и тебе отдать деньги и письмо, – прибавил он.
Ростов взял письмо и, бросив на диван деньги, облокотился обеими руками на стол и стал читать. Он прочел несколько строк и злобно взглянул на Берга. Встретив его взгляд, Ростов закрыл лицо письмом.
– Однако денег вам порядочно прислали, – сказал Берг, глядя на тяжелый, вдавившийся в диван кошелек. – Вот мы так и жалованьем, граф, пробиваемся. Я вам скажу про себя…
– Вот что, Берг милый мой, – сказал Ростов, – когда вы получите из дома письмо и встретитесь с своим человеком, у которого вам захочется расспросить про всё, и я буду тут, я сейчас уйду, чтоб не мешать вам. Послушайте, уйдите, пожалуйста, куда нибудь, куда нибудь… к чорту! – крикнул он и тотчас же, схватив его за плечо и ласково глядя в его лицо, видимо, стараясь смягчить грубость своих слов, прибавил: – вы знаете, не сердитесь; милый, голубчик, я от души говорю, как нашему старому знакомому.
– Ах, помилуйте, граф, я очень понимаю, – сказал Берг, вставая и говоря в себя горловым голосом.
– Вы к хозяевам пойдите: они вас звали, – прибавил Борис.
Берг надел чистейший, без пятнушка и соринки, сюртучок, взбил перед зеркалом височки кверху, как носил Александр Павлович, и, убедившись по взгляду Ростова, что его сюртучок был замечен, с приятной улыбкой вышел из комнаты.
– Ах, какая я скотина, однако! – проговорил Ростов, читая письмо.
– А что?
– Ах, какая я свинья, однако, что я ни разу не писал и так напугал их. Ах, какая я свинья, – повторил он, вдруг покраснев. – Что же, пошли за вином Гаврилу! Ну, ладно, хватим! – сказал он…
В письмах родных было вложено еще рекомендательное письмо к князю Багратиону, которое, по совету Анны Михайловны, через знакомых достала старая графиня и посылала сыну, прося его снести по назначению и им воспользоваться.
– Вот глупости! Очень мне нужно, – сказал Ростов, бросая письмо под стол.
– Зачем ты это бросил? – спросил Борис.
– Письмо какое то рекомендательное, чорта ли мне в письме!
– Как чорта ли в письме? – поднимая и читая надпись, сказал Борис. – Письмо это очень нужное для тебя.
– Мне ничего не нужно, и я в адъютанты ни к кому не пойду.
– Отчего же? – спросил Борис.
– Лакейская должность!
– Ты всё такой же мечтатель, я вижу, – покачивая головой, сказал Борис.
– А ты всё такой же дипломат. Ну, да не в том дело… Ну, ты что? – спросил Ростов.
– Да вот, как видишь. До сих пор всё хорошо; но признаюсь, желал бы я очень попасть в адъютанты, а не оставаться во фронте.
– Зачем?
– Затем, что, уже раз пойдя по карьере военной службы, надо стараться делать, коль возможно, блестящую карьеру.
– Да, вот как! – сказал Ростов, видимо думая о другом.
Он пристально и вопросительно смотрел в глаза своему другу, видимо тщетно отыскивая разрешение какого то вопроса.
Старик Гаврило принес вино.
– Не послать ли теперь за Альфонс Карлычем? – сказал Борис. – Он выпьет с тобою, а я не могу.
– Пошли, пошли! Ну, что эта немчура? – сказал Ростов с презрительной улыбкой.
– Он очень, очень хороший, честный и приятный человек, – сказал Борис.
Ростов пристально еще раз посмотрел в глаза Борису и вздохнул. Берг вернулся, и за бутылкой вина разговор между тремя офицерами оживился. Гвардейцы рассказывали Ростову о своем походе, о том, как их чествовали в России, Польше и за границей. Рассказывали о словах и поступках их командира, великого князя, анекдоты о его доброте и вспыльчивости. Берг, как и обыкновенно, молчал, когда дело касалось не лично его, но по случаю анекдотов о вспыльчивости великого князя с наслаждением рассказал, как в Галиции ему удалось говорить с великим князем, когда он объезжал полки и гневался за неправильность движения. С приятной улыбкой на лице он рассказал, как великий князь, очень разгневанный, подъехав к нему, закричал: «Арнауты!» (Арнауты – была любимая поговорка цесаревича, когда он был в гневе) и потребовал ротного командира.
– Поверите ли, граф, я ничего не испугался, потому что я знал, что я прав. Я, знаете, граф, не хвалясь, могу сказать, что я приказы по полку наизусть знаю и устав тоже знаю, как Отче наш на небесех . Поэтому, граф, у меня по роте упущений не бывает. Вот моя совесть и спокойна. Я явился. (Берг привстал и представил в лицах, как он с рукой к козырьку явился. Действительно, трудно было изобразить в лице более почтительности и самодовольства.) Уж он меня пушил, как это говорится, пушил, пушил; пушил не на живот, а на смерть, как говорится; и «Арнауты», и черти, и в Сибирь, – говорил Берг, проницательно улыбаясь. – Я знаю, что я прав, и потому молчу: не так ли, граф? «Что, ты немой, что ли?» он закричал. Я всё молчу. Что ж вы думаете, граф? На другой день и в приказе не было: вот что значит не потеряться. Так то, граф, – говорил Берг, закуривая трубку и пуская колечки.