Язык программирования BASIC в Ubuntu Linux

БейсикBASIC (Beginner’s All-purpose Symbolic Instruction Code) — один из некогда самых популярных языков программирования, который ведет свою историю с 1964 года. Именно с языка Бейсик многие начинали свое знакомство с программированием, а для некоторых он остался единственным. Существует мнение, что Бейсик уже безнадежно устарел вместе с компьютерами Altair, ZX-Spectrum, IBM PC и операционными системами CP/M и DOS. В лучшем случае про Бейсик вспоминают, когда речь идет о VisualBasic или VBA, но в этом случае сфера его применения ограничивается Windows, а у профессиональных программистов упоминание о Бейсике способно вызвать лишь улыбку.  Я решил сделать небольшой обзор самых распространенных реализаций языка Бейсик под Linux и показать, что не настолько уж плохо обстоят дела с этим незаслуженно забытым языком. Ведь если у вас есть желание или необходимость создать несложную программу для собственных нужд, но при этом нет времени, желания или возможностей  изучать другой язык, вы можете «вспомнить молодость» и воспользоваться одним из описанных ниже инструментов.

1. Bywater BASIC Interpreter/Shell

Не зря я начинаю обзор именно с этой программы. Среди всех рассматриваемых, она наиболее похожа на первое поколение интерпретаторов BASIC, знакомых многим еще по IBM PC, ZX-Spectrum, различным «Электроникам», «БК» и прочим. А название бинарного файла — bwbasic — вызывает ассоциации с небезызвестным GW-BASIC. Интерпретатор запускается прямо в терминале, даже не очищая экрана и весь ввод / вывод проходит прямо там. Используется привычная для первых версий Бейсика нумерация строк, и, соответственно, команды RUN, LIST, NEW, SAVE, LOAD… Для выхода из интерпретатора используется команда SYSTEM.

Снимок экрана - 08.04.2013 - 14:00:16

Запуск самого интерпретатора, как видно на приведенном выше скриншоте, осуществляется командой bwbasic. Единственным параметром может быть имя текстового файла программы, например

bwbasic myprogram.bas

Подспорьем в качестве справочника по операторам и фунциям будет man-страница программы.

man bwbasic

Среди перечня операторов и фунций есть как привычные для всех диалектов Бейсика, так и специфические, предназначенные для работы с файловой системой Unix (Linux) / Windows. Встречаются и некоторые недочеты: например, привычная команда CLS действия в версии 2.2. не осуществляет (хотя упоминается  в руководстве для версии 2.1), поэтому очистку экрана можно сделать при помощи CLEAR SCREEN.

Желательно также помнить о такой интересной особенности, что, хотя интерпретатор не различает регистр для операторов и фунций, он при этом различает его для переменных. Поэтому NAME$, Name$ и name$ — это три разных переменных с точки зрения bwbasic.

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

Установить Bywater BASIC можно сразу из репозиториев Ubuntu:

sudo apt-get install bwbasic

однако, в Ubuntu 12.10 была доступна версия 2.2, тогда как на сайте разработчика заявлена 2.6.

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

Сайт: http://bwbasic.sourceforge.net/

Преимущества: стабильная работа, «классический» интерпретатор, работа из командной строки.

Недостатки: ограниченная функциональность.

 

2. X11-BASIC  — Basic interpreter and shell

Вторая рассматриваемая в обзоре программа, не смотря на то, что также является интерпретатором, кардинально отличается от Bywater BASIC. X11-BASIC (или xbasic) представляет собой Бейсик второго поколения. Нумерация строк не используется (хотя, в комплект поставки включена программа, которая преобразовывает нумерованную программу в ненумерованную для совместимости с xbasic).

 Как и в случае с bwbasic, xbasic запускается прямо в командной строке, и после выхода оставляет результаты своей работы на экране. Т.к. нумерация строк не поддерживается, то команда выполняется сразу после её ввода, а если же строка ввода начинается с  числа, то используется режим «калькулятора» (пример видно на скриншоте ниже).

Снимок экрана - 08.04.2013 - 20:37:08

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

Снимок экрана - 08.04.2013 - 20:54:01

Интерпретатор «понимает» команды LIST, RUN, NEW, SAVE, LOAD, а для выхода используется QUIT.

По словам автора, синтаксис языка максимально похож на GFA-Basic для  ATARI, а также будет близок пользователям Microsoft QuickBASIC.

Первое впечатление, возможно, вызывает некоторое недоумение:  зачем такой unix-way для простого Бейсика. Как оказалось, xbasic не так уж и прост. xbasic рассчитан на работу практически в любой Unix / Linux системе, включая MacOS X и Android (!), а также поддерживается для операционной системы Windows.  Да и диалект BASIC оказался очень функциональным. Поддержка различных ОС не ограничила функциональность языка, а наоборот, позволила реализовать поддержку графического режима, мыши, сенсорного экрана (!), сети и даже GPS -датчика (!).

К сожалению, на практике, мне не удалось добиться стабильной работы корректной работы графического вывода, кроме вызова диалогового окна (которое, при этом, нормально отобразилось в отдельном экране графического вывода). Операторы BOX, CIRCLE, GPRINT  и прочие обычно приводили к пустому графическому экрану или же артефактам, а после выхода из интерпретатора  — к появлению ошибки

XIO:  fatal IO error 0 (Success) on X server «:0.0»
      after 35 requests (31 known processed) with 95 events remaining.

А вот так выглядел вывод диалогового окна по команде из руководства программы:

Снимок экрана - 08.04.2013 - 22:20:12

 

Ситуация несколько удивляет, особенно на фоне того, что команда ALERT (вызов диалогового окна) все-таки с выводом графики справляется. Возможно, сказывается использование 32-битной программы в 64-битной операционной системы.  Такая ситуация наблюдалась не все время, и все-таки в какой-то момент (без каких-либо дополнительных действий с моей стороны) удалось добиться приемлемого результата (вверху экрана все-таки наблюдаются искажения все-равно):

Снимок экрана - 08.04.2013 - 22:38:00

Однако, даже после этого, проблемы наблюдались. Иногда некоторое изображение удавалось получить, «кликая» мышью по окну вывода, иногда даже попытка вызова какого-то графического оператора приводила к краху программы:

Снимок экрана - 08.04.2013 - 22:46:11

X11-BASIC поддерживает выполнение (или просто загрузку) файла с программой в качестве параметра запуска, выполнение отдельной строки с кодом, режим «калькулятора» и даже работу программы в качестве демона (!).

Еще одной интересной и полезной особенностью является возможность использования xbasic в качестве командной оболочки. Так, если возможностей bash вам мало, а изучать Perl или Python нет желания, времени или возможности, вы можете подобным образом создавать скрипты на Бейсике, если вы владете им.

Т.е., достаточно сообщить путь к интерпретатору в первой строке bas-файла:

#!/usr/bin/xbasic   (путь к xbasic в моей системе, который вы сможете получить командой whereis xbasic)

и сделать его исполняемым командой chmox +x имя_файла, после чего, файл станет возможным запускать как и любой другой бинарный или скриптовый файл.

Для простоты  установки интерпретатора можно использовать deb-файл, предлагаемый разработчиком по ссылке. К сожалению, доступна версия только для 32-битной системы, которая, однако, работает после установки необходимой 32-битной библиотеки:

sudo apt-get install libreadline6:i386

Руководство по операторам, функциям и системным переменным программы доступны через справочную службу man:

man xbasic

а на сайте автора доступны примеры различных программ, включая работу с графикой, звуком, сетью, и даже написанные на самом же Бейсике компиляторы для Windows и Unix.

Сайт: http://x11-basic.sourceforge.net/

Преимущества: очень широкие возможности и большой перечень реализованных функций; доступность под различные ОС; возможность использования в качестве командной оболочки.

Недостатки: сложность работы для малоподготовленного пользователя;  сбои при работе с графическим режимом.

3. SmallBASIC

Следующий представитель семейства BASIC в обзоре также представлен версиями для различных операционных систем, где на фоне привычных Windows, Linux и даже Androiod, выделяется версия для PalmOS.

SmallBASIC можно установить, используя deb-файл на странице разработчика. Не смотря на то, что версия 32-битная, никаких дополнительных библиотек доустанавливать не понадобилось. После установки, вы сможете найти программу через главное меню вашей графической оболочки в разделе «Разработка».  SmallBASIC имеет графический интерфейс с поддержкой множества вкладок. При этом, для вывода (одновременно как графического, так и текстового) используется только одна вкладка, поэтому и запущена одновременно может быть только одна программа, хотя листинги на разных вкладках могут быть разные.

Снимок экрана - 08.04.2013 - 23:22:14

Хотя SmallBASIC является интерпретатором, это не значит, что он работает с построчным вводом. Вы можете свободно перемещаться по листингу программы, изменять код,  шрифт редактора для удобства прочтения. Для сохранения / открытия / создания новых вкладок используется меню программы; запуск и останов осуществляется также не при помощи текстовых команд, а через меню программы или панель инструментов внизу. В целом, программа скорее напоминает такие реализации Бейсика, как QuickBASIC и PowerBASIC. Нумерация строк не нужна, однако выполнению кода совершенно не мешает, что позволяет использовать и старые программы без необходимости удаления нумерации. При этом, может использоваться  нумерация только  отдельных строк (в качестве меток), однако текстовые метки, (определенные через LABEL), также допустимы. Допустимы и разные применения операторов, которые могли различаться в различных диалектах Бейсика. Так, например, возможна, как классическая однострочная схема IF … THEN … ELSE…, так и «стаканчиком», где могут использоваться вариации ELSEIF / ELIF, ENDIF / FI, что обеспечивает хорошую совместимость с другими версиями BASIC.
В редакторе возможно отображение древовидной структуры программы (с отображением констант и подпрограмм), как на скриншоте ниже.

Снимок экрана - 09.04.2013 - 10:07:22

Программа предлагает также встроенную Справку по операторам, которая позволяет отображать их по алфавиту или категориям. Справка дает краткое описание синтаксиса команды, предлагает перейти на сайт автора, где дано расширенное описание и позволяет найти использование команды в установленных вместе с SmallBASIC примерах программ.

Как и в случае с xbasic, если возможность использовать SmallBASIC в качестве командной оболочки, добавив путь с параметрами в первой строке бейсик-программы и сделав файл исполняемым (см. описание xbasic)

#!/usr/bin/sbasici -n -r

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

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

Сайт:  http://smallbasic.sourceforge.net/

Достоинства:  наглядность; удобство использования; хорошая функциональность; великолепен для учебных целей.

Недостатки: невозможность компиляции и нестабильность работы в качестве командной оболочки.

4. FreeBASIC + Geany

FreeBASIC в  отличие от предыдущих программ в обзоре, является полноценным компилятором, а не интерпретатором. С одной стороны, он ограничивается только архитектурой i386, зато среди поддерживаемых ОС, не только Linux, Windows и DOS, а и Xbox (!) от Microsoft.

Перед установкой компилятора в систему, установите  следующие пакеты:

Для 64-битной Ubuntu / Debian:

sudo apt-get install gcc-multilib g++-multilib lib32ncurses5-dev libx11-dev:i386 libxext-dev:i386 libxrender-dev:i386 libxrandr-dev:i386 libxpm-dev:i386

Для 32-битной Ubuntu / Debian:

sudo apt-get install gcc g++ lib32ncurses5-dev libx11-dev libxext-dev libxrender-dev libxrandr-dev libxpm-dev libffi-dev

Далее скачаем и распакуем архив с бинарным файлом FreeBASIC, распакуем его, сделаем исполняемым установочный файл в папке с программой

chmod +x install.sh

и установим его, выполнив

sudo ./install.sh -i

После этого, вы уже можете компилировать готовые bas-файлы (или же подготовленные в любом текстовом редакторе) при помощи компилятора fbc с файлом в качестве аргумента при запуске. При этом могут использоваться опции -lang qb  для совместимости с QuickBASIC или же -lang fb для использования новых возможностей FreeBASIC.

На сайте FreeBASIC представлена документация по языку в различных форматах, в том числе и он-лайн. Там же можно найти примеры программ и уроки по FreeBASIC. Отдельно представлена сравнительная таблица для С и FreeBASIC, которая может быть полезна как для С-программистов, которые решили изучать BASIC (если таковые найдутся), так и для тех, кто был знаком ранее только с BASIC, но решил изучать С. FreeBASIC такжеподдерживает использование С-библиотек и встроенных вставок на ассемблере.

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

Однако, впечатление немного смазывается отсутствием полноценной IDE для FreeBASIC, но эту проблему несложно решить, установив универсальную IDE Geany.

sudo apt-get install geany

Снимок экрана - 09.04.2013 - 11:24:31

При первом запуске Geany необходимо будет выбрать в меню «Документ  > Установить тип файла > Языки программирования > Файл FreeBasic» и можно начинать работу. На скришоте ниже показан пример выполнения графической программы из Geany.

Снимок экрана - 09.04.2013 - 11:29:05

При этом компилируется и бинарный файл, который потом можно использовать отдельно. Указать дополнительные параметры для компилятора (например, параметр совместимости с QuickBASIC) можно в меню «Сборка > Установить команды сборки».

Сайт: FreeBASIC: http://www.freebasic.net/  Geany: http://www.geany.org/

Достоинства: очень мощный компилятор с широкими профессиональными возможностями.

Недостатки: ограничен i386 архитектурой.

5. Gambas

Gambas — представитель третьего поколения языка BASIC, объектно-ориентированный, и позиционируется как альтернатива Microsoft VisualBASIC под Linux. Название представляет собой рекурсивный акроним Gambas Almost Means BASic, т.е. «Gambas — почти Бейсик».

Установить программу можно сразу из репозиториев Ubuntu:

sudo apt-get install gambas3

На случай, если в вашем репозитории есть только  Gambas 2.х, то третью версию вы можете получить в этом PPA.

Хотя автор и заявляет, что совместимость с VisualBASIC не является целью, в Gambas скорее себя будут чувствовать комфортно те, кто знаком с VisualBASIC, а не пользователи QuickBASIC / PowerBASIC. Отдельно представлены отличия от VisualBASIC.

Снимок экрана - 09.04.2013 - 11:50:54 Снимок экрана - 09.04.2013 - 11:52:53 Снимок экрана - 09.04.2013 - 11:52:02

По Gambas достуно достаточно документации в Wiki, в том числе и на русском языке. Если вам нужен объектно-ориентированный BASIC, то Gambas — это то, что вам подходит.

Сайт: программа: http://gambas.sourceforge.net Wiki: http://gambasdoc.org

Достоинства: объектно-ориентированный BASIC c большим количеством документации по языку; возможность работы с базами данных.

Недостатки:  функционирование ограничено платформой Linux.

На этом я завершаю обзор пяти отобранных вариаций языка BASIC под Linux.  Вы можете также  обратить внимание на HBasic, wxBASIC и другие, однако я решил ограничится только упомянутыми. Надеюсь, что статья вызовет приятные воспоминания у тех, кто как и я, начинал программирование с Бейсика, а кто-то, быть может, выберет какой-то из упомянутых проектов в качестве своего рабочего инструмента.

3 комментария Язык программирования BASIC в Ubuntu Linux

  1. Игорь:

    С удовольствием прочитал Вашу статью!
    Программировал на qBasic на XT, расчетные программы, затем маленько VBA, ACCESS 97 серьезно.
    Теперь есть задачи — небольшие базы, желательно .EXE. Билл Гетсc надоел (Microsoft) своей беспардонностью. Есть большое желание и давно уйти на Linux и на базы в Linux.
    Сегодня первый раз набрал «языки программирования в Linux» и попал на Вашу статью.
    Gambas — это достойный выбор?
     

  2. ы:

    про PureBasic забыли, правда он платный, но кто ищет — тот всегда найдёт 😉

  3. Antanas:

    Я хотел бы получить какой нибудь пример с использованием
    X11 (исходный файл).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *