Язык программирования 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 и другие, однако я решил ограничится только упомянутыми. Надеюсь, что статья вызовет приятные воспоминания у тех, кто как и я, начинал программирование с Бейсика, а кто-то, быть может, выберет какой-то из упомянутых проектов в качестве своего рабочего инструмента.

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

  1. Игорь:

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

  2. ы:

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

  3. Antanas:

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

  4. Сергей Гута:

    В студенческие годы работал с tb basicom .Прекрасный , простой и практичный язык для решения технических задач,если есть базовые инженерные знания для производства, этот язык как незаменимое дополнение к решению технических проблем. А вот Winda убивает это дополнение, по сути хитрая игрушка для обывателей.Гейтс подсадил за деньги многих на игру,и они никогда не смогут увидеть суть проблемы без его указок.

Добавить комментарий для Antanas Отменить ответ

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