|
|
автор John Perr <johnperr(at)Linuxfocus.org> Об авторе: Пользователь Linux с 1994, один из французских редакторов LinuxFocus. Перевод на Русский: Dmitry Martsynkevitch <ursa(at)zaba.ru> Содержание: |
Резюме:
Разработка ПО под Linux или другую Unix -систему на BASIC? Почему нет? Разнообразные бесплатные предложения позволяют нам использовать BASIC для создания как скомпилированных, так и интерпретируемых приложений.
Не смотря на то, что BASIC появился на компьютерной сцене позже других языков, он быстро стал распространённым на системах отличных от Unix и его потомков, как заменитель языков сценариев. Возможно это главная причина, по которой пользователи Unix редко прибегают к помощи этого языка. Unix с самого рождения обладал гораздо более мощными языками сценариев. Чаще всего, как и для других языков сценариев, для BASIC выпускают интерпретаторы. Он обладает достаточно простым синтаксисом — без типов данных, ну кроме различия строк и чисел. Именно из-за своей простоты и возможности с помощью него легко обучать студентов программированию, BASIC и получил своё название.
К сожалению, недостаток стандартизации, привёл к появлению многочисленных версий,
в большинстве своём не совместимых.
Можно даже сказать, что сколько интерпретаторов, столько и версий BASIC -а, это
делает его трудно переносимым.
Не смотря на выше перечисленные, и многие другие недостатки, о которых нам напомнят "настоящие
программисты", BASIC остаётся одним из возможных средств для
быстрого создания маленьких программ.
Долгие годы это было особенно заметно в Windows версиях,
Это особенно заметно в Windows версиях, где, с помощью Интегрированной Среды
Разработки, можно создавать графический интерфейс за несколько кликов мышкой.
Более того, эти версии, названные "Visual", используются для расширения возможностей
приложений, за счёт написания макросов, что увеличило распространения этих
приложений среди людей, которые никогда бы так и не начали программировать.
Здесь мы рассмотрим несколько наиболее известных версий BASIC под Linux
и попробуем сравнить их.
Сведения взяты из документации к kbasic, Andrea M. Marconi.
Язык BASIC (Универсальная Символическая Система Команд для Начинающих) родился в Дартмутском университете, в Нью Хэмпшире (США), в 1964 году. Его разработали Дж. Кемени (1926-93) и Томас Е. Курц (1928-). До этого Кемени работал в Проекте Манхэттэн (1945), а позднее (1948-49), как ассистент Альберта Ейнштейна. Он встретил Курца в Дартмуте, в 1956.
Оба они начали работать над новым упрощённым языком программирования, и после версий, которые назывались Darsimco и DOPE, они сформулировали для себя следующие свойства желаемого языка:
Чтобы реализовать это они начали с FORTRAN и ALGOL. Окончательная версия называлась "Dartmuth BASIC" и включала в себя 14 команд. "Дартмутский BASIC" был компилированным, а потому весьма быстрым для того времени.
Усилия Кемени и Курца были вознаграждены 1 мая, 1964 года, в 4 часа утра, когда две BASIC программы были одновременно запущены на компьютере Дженерал Электрик 255 Ю Си Дартмутского университета.
Кемени И Курц не стали патентовать своё изобретение, что способствовало его развитию и увеличению числа версий. Среди первых пользователей BASIC была и компания Дженерал Электрик, продавшая GE-255 в Дартмут.
У истоков многих версий BASIC стоит Гордон Юбанкс (главный администратор компании Симантек). В 1970 вышел E-BASIC, он использовал псевдокод, как сегодня Java. Потом был CBASIC и много других, что заставило ANSI определить некоторые стандарты. Но когда в 1978 они вышли, ими никто не стал пользоваться: BASIC был распространён уже очень широко.
В это же время (1975), Боб Альбрехт и Дэннис Эллисон выпускают TinyBasic: он работает всего при 2 килобайтах оперативной памяти. Тогда же появляется и первый интерпретатор BASIC. Его разработали Уильям Х. Гейтс III (1955-, больше известный как Билл) и Пол Аллен (1953-). Производители компьютеров стали записывать копию BASIC на постоянные запоминающие устройства своих машин. В конце 70 -х, первые персональные компьютеры также имеют свою версию BASIC:
С начала 80 -х, история BASIC тесно связана с историей компьютеров. Два
продукта доминировали на рынке:
IBM предлагала BASIC A с PC-DOS, это интерпретатор, записан в ROM, расширяем.
MS-DOS предлагала Gee-Witz BASIC (Вот так BASIC).
В 1984 появляется компилятор Microsoft BASIC, а за ним многочисленные версии,
среди которых серия QuickBASIC. Её начали выпускать в 1985, а закончили
в 1990 пакетом Microsoft BASIC Professional Development System 7.1
Появление графического интерфейса (GUI) у операционных систем, приводит к очередным изменениям в языке. Выходит Visual BASIC, сделанный специально для поддержки GUI; утверждается, что он объектно-ориентированный. Многие программисты с этим не согласны, однако, по последним подсчётам до 90% программ для Windows 9x используют Visual BASIC.
Если мы захотим составить список Basic доступных под Linux, то найдём около полудюжины более менее интересных для рассмотрения. На сайте sourceforge есть "Кузница BASIC", по которой можно судить о количестве скачиваний:
Вот наиболее скачиваемые пакеты с Sourceforge.net
Также нам известно, что Gnome и KDE имеют проект, который должен
заменить Visula BASIC.
Более того, Ричард Столлмэн говорит о необходимости бесплатной альтернативы VB
вписьме в интернет-журнал "the register",
от 10 февраля 2002 года.
Энтони Лигуори (ajl13-at-bellatantic.net),
автор GLBCC (Коллекция компиляторов Liberty Basic) единственный проект
BASIC с упоминанием GNU, также просит об этом
на сайте GLBCC (lbpp.sourceforge.net).
Давайте рассмотрим разные пакеты BASIC, чтобы составить представление об их интерфейсе и возможностях предоставляемого языка:
XBasic — это среда разработки с одним из наиболее мощных пользовательских интерфейсов. Это Интегрированная Среда Разработчика, то есть, это возможность создавать графический интерфейс программы, отлаживать её и компилировать. Система "точка - команда" ("dot commands") позволяет использовать возможности среды не мышкой, а клавиатурой, печатая точку, а за ней команду, в поле ввода слева вверху главного окна:
Что касается возможностей, XBasic имеет всё необходимое для программирования
графических интерфейсов, а также много расширений. Нужно добавить, что имеется
возможность вызова процедур, написанных на C. Есть также такие черты C, как
определение новых типов, ассоциация переменных, создание библиотек.
И последнее: XBasic доступен по GPL под Windows или Linux на:
http://www.xbasic.org
SmallBASIC — это интерпретатор, выпущенный пока под Win32,
Linux и PalmOS.
Для возможности переноса на другие системы, есть специальная хорошая
документация. Интерпретатор может быть собран для разных интерфейсов:
Он может быть запущен как в текстовом, так и в графическом режиме. Этот пример запускает программу System_info.bas:
$ sbasic System_info.bas SmallBASIC version 0.8.2, use -h for help http://smallbasic.sourceforge.net VMT Initialization... File: System_info.bas Section: Main PASS1: Line 24; finished SB-MemMgr: Maximum use of memory: 30KB PASS2: Node 3/3 Creating byte-code... Variables 20 Labels 0 Proc/Func 0 Code size 707 System Information OS: Unix/Linux version 2.4.18-6mdk (quintela @ bi.mandrakesoft.com) (gcc version 2.96 20000731 (Mandrake Linux 8.2 2.96-0.76mdk)) #1 Fri Mar 15 02:59:08 CET 2002 204018 SB: 802 Display 99x58 Colors 16 Font: 1x1 Total free memory: 127728 KB Stack size: 127728 KB Largest free memory block: 127728 KB * DONE * SB-MemMgr: Maximum use of memory: 30KB $
$ sbasic -g System_info.bas SmallBASIC version 0.8.2, use -h for help http://smallbasic.sourceforge.net VMT Initialization... File: System_info.bas Section: Main PASS1: Line 24; finished SB-MemMgr: Maximum use of memory: 30KB PASS2: Node 3/3 Creating byte-code... Variables 20 Labels 0 Proc/Func 0 Code size 707 SB-MemMgr: Maximum use of memory: 30KB $
Язык SmallBASIC достаточно прост и близок к тому, что вы можете ожидать
от "стандартного" BASIC. Среди графических функций нет ничего нового, и классические
RECTANGLE и CIRCLE могут быть выполненными на любой, указанной ранее операционной
системе. Типы переменных отсутствуют.
Однако, SmallBASIC совместим со старыми TINYBasic и QuickBasic и хорошо
интегрирован в PalmOS, скачать его можно на
http://smallbasic.sourceforge.net
wxBasic имеет черты QuickBASICа, но кое-что он взял из Unix , как например ассоциированные массивы. wxBasic — это интерпретатор, он помещается всего на одну дискету, обладает полной документацией (138 стр.), доступной в формате pdf. В комплект поставки входит графическая библиотека, позволяющая писать программы для X Window или Windows. С этой стороны данный язык близок к объектно-ориентированным, как например C++. Однако, графический интерфейс приходится делать вручную, также нет никакого встроенного интерфейса разработки.
// My first wxBasic demo... option explicit // create the window dim frame=new wxFrame(0,-1,"wxBasic App",wxPoint(10,10),wxSize(300,200)) frame.Centre() // place a panel in the window dim panel = new wxPanel(frame, -1) // add a status bar dim sBar = frame.CreateStatusBar( 1 ) sBar.SetStatusText("wxBasic Frame Demo") // attach a menubar to the window dim mBar = new wxMenuBar() frame.SetMenuBar(mBar) // build the "File" dropdown menu dim mFile = new wxMenu() mBar.Append(mFile,"&File") // populate it mFile.Append(wxID_NEW, "&New", "Creates a new file") mFile.Append(wxID_OPEN, "&Open", "Loads an existing file from disk") mFile.Append(wxID_SAVE, "&Save", "Saves current file") mFile.Append(wxID_SAVEAS, "Save &As", "Saves current file with new name") mFile.AppendSeparator() mFile.Append(wxID_EXIT, "&Exit", "Exit Application") // build the "Edit" dropdown menu etc.....
Вэб сайт : http://wxbasic.sourceforge.net
Также называемый GLBCC (Коллекция компиляторов Liberty Basic), это компилятор, а вернее интерфейс к GNU компилятору gcc, переводящий BASIC в C. Это немного похоже на некоторые компиляторы C++, переводящие перед компилированием C++ в C. Как видно из названия, этот компилятор стопроцентно совместим с Liberty BASIC. Последний появился в 90 -х, на Windows платформах, и имел весьма широкую популярность из-за своей доступности (отсюда и название). За дальнейшей информацией, обращайтесь на этот сайт, на нём вы найдёте много доказательств высокого качества данного программного продукта. Этот язык не бесплатен, но пробную версию можно скачать.
Компилятор GLBCC имеет реализации как под Linux, так и под Windows, и может создавать независимые исполнимые файлы, работающие не медленнее, чем такие же, но написанные на любом другом языке. Автор обращает внимание, что программа на Liberty BASIC, скомпилированная c GLBCC, в отношении скорости "делает" Visual BASIC.
Установка GLBCC под Linux достаточно проста — необходимы классический
"tar", чтобы распаковать архив, и "make install".
В обычном режиме, программа использует командную строку. "glbcc hello.bas"
создаст выполнимый файл примерно так:
$ glbcc /usr/local/bin/lbpp -I/usr/local/lib/glbcc-lib/0.0.7/include -o out.c hello.bas gcc -g -I/usr/local/lib/glbcc-lib/0.0.7/include `gnome-config --cflags gnomeui` -o hello out.c /usr/local/lib/glbcc-lib/0.0.7/lib/lbcrt0.o -L/usr/local/lib/glbcc-lib/0.0.7/lib -lLB -lm `gnome-config --libs gnomeui` $ ls -l hello* -rwxr-xr-x 1 john john 339671 oct 13 21:55 hello -rw-r--r-- 1 john john 22 avr 14 17:41 hello.bas $ cat hello.bas print "Hello, world!" $ ./hello Hello, world!
Когда параметры не указаны, GLBCC откроет графический диалог и попросит вас ввести имя файла с кодом на BASIC и имя исполнимого файла, который будет создан. По умолчанию, под Windows к имени входной программы добавится суффикс ".exe", а под Linux не добавится никакой.
Работа с графикой в GLBCC основана на библиотеке GTK. Забавно, что GLBCC сам написан на BASIC.
Ещё один Basic под Unix и Windows
Хоть YaVASIC и ведёт себя как интерпретатор, интерпретатором он не является. Просто поданный на вход код он сразу компилирует и сразу же запускает. YaBASIC вызывается из командной строки, с указанием в качестве аргумента имени файла. Если файл указан, то он и компилируется, если нет, то вы попадёте в режим интерпретации, как в этом примере:
$ yabasic Enter your program, type RETURN twice when done. for i=1 to 10 print i,"hello, world" next i 1hello, world 2hello, world 3hello, world 4hello, world 5hello, world 6hello, world 7hello, world 8hello, world 9hello, world 10hello, world $
Такой способ работы YaBASIC позволяет писать на нём Unix сценарии или даже CGI скрипты, вставляя в начало файла строку вида "#!/bin/yabasic", и делая такой файл исполнимым.
Язык YaBasic близок к Quick BASIC, без типов переменных. Есть только возможность различать строки и числа, ставя или нет символ $ в конце имени переменной. Здесь нет объектно-ориентированного программирования, но есть возможность создавать свои собственные библиотеки, есть команды доступа к графическим режимам X11 или Windows, в зависимости от операционной системы. Есть также несколько полезных моментов, таких как функция split(), подобная одноимённой из Perl или php, циклы FOR, WHILE или REPEAT UNTIL, а также конструкция IF ELSE ENDIF; последние конструкции вошли в BASIC в 80 -х, с появлением структурного программирования.
X11-BASIC — это интерпретатор структурированного BASIC, с графическими
возможностями X11. Этот BASIC перенесён с системы Atari ST GEM/TOS
(конец 80 -х) на Unix. Его можно использовать как интерпретатор, создавать
сценарии или CGI скрипты. Есть компилятор,
который может делать отдельные исполнимые файлы (статический режим), или
прилинкованные к стандартной библиотеке X11 размером около 200 Кбайт
(динамический режим). Компилятор на самом деле не настоящий,
так как выдаёт не исполняемый CPU код, а сжатый интерпретатором исходный.
Сам псевдокомпилятор написан на X11-BASIC.
Язык этого BASIC весьма богат, структурирован, с наличием типов переменных
(integer, floating, text, array, boolean). Доступные команды позволяют
обращаться к памяти, подобно malloc() в C, или перемножать матрицы,
хранящиеся в массивах.
Графические команды такие же как и в Atari ST GFA BASIC, имеют такой же
результат, но под системой X Window. Например команда MENU создаёт
в графическом окне меню. Этот интерпретатор снабжён документацией и большим
количеством примеров, правда пока эта документация местами на немецком языке.
Неприятная сторона состоит в том, что перенос с исходной системы ещё не закончен,
и могут быть проблемы, даже с примерами. В заключении скажем, что этот
интерпретатор в основном ведёт себя как бета версия, им вполне могут пользоваться
люди, считающие BASIC "своим" языком.
$ xbasic *************************************************************** * xbasic V. 1.07 * * by Markus Hoffmann 1997-2002 (c) * * * * version date: Wed Sep 25 10:26:29 CEST 2002 * * library V. 1.07 date: Wed Sep 25 10:26:29 CEST 2002 * ***************************************************************Домашняя страничка: http://www-cip.physik.uni-bonn.de/~hoffmann/X11-Basic/
Вот BASIC, производящий хорошее впечатление с первого взгляда, может это от его возможностей, а может от качества документации, которая весит 7.7 Мегабайт. Если у вас нет последней версии дистрибутива Linux, то, возможно, вам понадобится Qt-3.*, доступная на сайте Trolltech (http://www.troll.no). Это полная среда разработки со всем, что может захотеть программист (не смотря на "молодость" : версия 0.8 ):
Авторы HBasic предупреждают: "Настоящая версия HBasic ещё не достаточно стабильна, чтобы её могли использовать разработчики программ на BASIC. Им надо дождаться выпуска первой стабильной версии: 1.0".
Проект GNOME Basic хотели сделать стопроцентно совместимым с Visual BASIC,
VBA, VBScript, и другими связанными с ними языками. Вначале он был
предназначен для выполнения VBA макросов из gnumeric, но, в связи с неожиданными
изменениями, он может исполнить только некоторые формы, проверить большую
часть VB кода и исполнить некоторые скрипты на ASP. С более качественной интеграцией
в Bonobo, можно ожидать более MS совместимой среды.
Сейчас Gnome Basic — это попытка предать черты VB проекту Gnome, особенно
для повышения производительности и удобства приложений.
Этот проект всё ещё находится в предварительном состоянии и должен быть
оставлен разработчикам Gnome.
Домашняя страничка : http://www.gnome.org/gb/
Перед нами ещё одна попытка сделать BASIC совместимым с Visual Basic. Разработчики надеются выпустить первую стабильную версию 1.0 летом 2003. Сейчас это только нестабильная версия, находящаяся в стадии разработки. KBasic будет использовать окружение Kdevelop.
Вот как выглядит kbasic доступный сейчас для скачивания:$ kbasic1 --help Usage: kbasic1 [OPTION]... FILE --help display this help and exit -V, --version print version information and exit -c, --copyright print copyright information and exit $ kbasic1 -V KBasic version 0.8 Copyright (C) 2000, 2001, 2002 The KBasic Team This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law. Visit us on http://www.kbasic.org/ $kbasic1 hello.bas -- scan -- LINE 00001 PRINT STRING "Hello, world!" EOL LINE 00002 END -- parse -- STRING in line 1 EOL in line 1 parsed PRINT parsed END -- interpret -- 0000: KBASIC KBASIC 0006: VER 1.000000 0011: OPTION R OFF 0013: JMP 36 0036: DIM_STAT "Hello, world!", 1 0055: JMP 18 0018: PUSHS 1 , " Hello, world! " 0023: PRINT Hello, world! 0034: END execution ended
Как вы можете видеть, kbasic работает, но далёк от желаемого: нет возможности отключить вывод отладочных сообщений интерпретатора и сгенерированного ассемблерного кода.
Сайт: http://www.kbasic.org
Этот обзор интерпретаторов и компиляторов BASIC, даёт нам некоторую информацию.
В первую очередь, на удивление, этот столь дискредитированный язык
всё ещё жив, даже на Unix системах, где его полезность весьма сомнительна,
так как есть много альтернатив (PERL, python, Tcl/Tk, php....), также
работающих в режиме интерпретации.
Удивительно, какую активность разработчиков свободно распространяемого ПО
вызывает этот язык.
Число проектов достаточно велико, и все они весьма активны.
Возможно высок спрос, что способствует развитию свободного ПО, тем самым
привлекая BASIC программистов.
В Windows системах, Visual Basic широко распространён из-за своей интегрированности
в саму систему, ASP и различные приложения. Однако, стоит заметить, что большая
часть рассмотренных нами BASIC работает на обеих платформах,
а иногда и некоторых других.
Далее, BASIC всё ещё имеет изъяны. Недостаточная стандартизация
приводит к появлению большого числа версий, в основном несовместимых
между собой. Желание некоторых проектов, таких как Gnome BASIC и KBasic,
поддерживать Visual Basic, ставший стандартом де факто, было бы хорошей идеей,
если бы VB был бесплатным, что очевидно не так. Монополизация в данном случае
была бы более подходящей...
Что касается разработчиков программ на BASIC: у них есть выбор, хоть
и небольшой. В качестве IDE, HBasic выглядит многообещающе. Наиболее
законченным, на сегодняшний день, выглядит XBasic. Однако smallbasic
и yabasic дают возможность тем, кто только что перешёл на Unix, писать
скрипты и CGI, не задумываясь о выборе из большого числа предложений,
предоставляемых этой системой. Также есть GLBCC, позволяющий помимо всего
компилировать программы великим GCC. Но отсутствие у него IDE, и поэтому
простого в
использовании отладчика, делает сложным разработку и поддержание больших
программ. Наконец, wx-Basic не относится ни к какой категории,
но обладает некоторыми достоинствами, такими как возможность создания
графического интерфейса.
Хорошая сторона этих BASIC, это простота переноса программ
с одной платформы на другую, без перекомпиляции, так как большая часть
представленных версий доступна и для Win32 и для Unix.
Таким образом перед разработчиками стоит непростой вопрос: выбрать правильное
средство для своих целей.
|
Webpages maintained by the LinuxFocus Editor team
© John Perr, FDL LinuxFocus.org |
Translation information:
|
2003-01-17, generated by lfparser version 2.31