Visual Basic, .NET, ASP, VBScript
 

   
 
Описание для автора не найдено
 
     
   
 

Обзор Basic компиляторов для Windows.

 
 
В этой статье описывается мой опыт работы с некоторыми компиляторами языка Basic для платформы Windows.Я не буду упоминать о компиляторах фирмы Microsoft, так как вы и без меня прекрасно знаете об их достоинствах и недостатках.
Иногда требуется написать небольшую программку, которая бы заработала на другом компьютере, но если писать ее на VB, то придется тащить с собой MSVBVM60.DLL плюс еще ActiveX контролы используемые программой. И хотя эта DLL присутствует в дистрибутиве Windows 2000/XP, очень часто ее там не оказывается. Так как, многие программисты, создавая инсталляционный скрипт для своего приложения, указывают, что при деиинсталляции, надо удалить все файлы используемые приложением, в том числе и MSVBVM, в результате никогда нельзя быть уверенным, что эта DLL присутствует на компьютере пользователя. Можно конечно пользоваться программами типа Bit-Arts Fusion, слинковывающими DLL с основным приложением, но при этом иногда возникают проблемы с запуском таких файлов под NT4.
Поэтому, я решил найти альтернативу Visual Basic, в области создания небольших программ, утилит. Протестировав более десятка различных Basic компиляторов от бесплатных до коммерческих, я выбрал 7 наиболее интересных.
В данном обзоре описываются мой опыт работы со следующими системами: PowerBasic, PureBasic, Rqbeta, IBasic, XPBasic, RealBasic, BCX.
Все перечисленные компиляторы создают автономные EXE файлы, не требующие внешних библиотек, а некоторые могут создавать еще и DLL.
Сразу хочу сказать, что этот обзор не претендует на энциклопедические знания, а скорее отражает мои впечатления от использования выше перечисленных инструментов.
 
 
PowerBasic
www.powerbasic.com
 
Пожалуй, это наиболее известный Basic компилятор в мире после VB. В России же о нем, почти ничего неизвестно. История этого языка началась еще в 1979 году, когда никому неизвестный программист Боб Зейл выпустил довольно удачный компилятор BASIC/Z для CP/M, впоследствии портированный им под MS-DOS.
В середине 80 фирма Borland, в дополнение к Turbo Pascal, решила создать собственную Бейсик - систему. За основу был взят BASIC/Z, и основательно переработав его, Зейл совместно с Питером Нортоном выпустили в 1987 году Turbo Basic 1.0. По тем временам это была передовая система: интерактивная среда разработки, эффективный компилятор с поддержкой сопроцессора, высокая скорость работы сгенерированного машинного кода. Turbo Basic сразу "убил" архаичный GW-Basic и примитивный майкрасофтовский QuickBasic.
С появлением Turbo Basic, наконец, появилась возможность создавать нормальное программное обеспечение на Бейсике, появляется само понятие Basic - технологии. Но Microsoft, не желая отдавать никому пальму первенства в создание Basic систем, заключает в 1989 г. неявное мировое соглашение с Borland, по нему Microsoft отказалась от дальнейшей поддержки Pascal, а Borland - от Basic. Borland передает права на Turbo Basic Бобу Зейлу, и он, основав фирму PowerBASIC Inc, начинает выпускать очень удачные системы для DOS. В 1993 году эксперты журнала PC Magazine и CA Realizer (Computer Associates), признали PowerBasic 3.0 лучшим Бейсик компилятором для DOS.
В данный момент фирма PowerBasic Inc предлагает два коммерческих компилятора для Windows:
 
  • PowerBASIC Console Compiler 3.0
  • PowerBASIC for Windows 7.0
 

PowerBASIC Console Compiler 3.0

Этот компилятор предназначен для создания консольных приложений под Win32, и имеет традиционный набор Basic операторов типа: PRINT, COLOR, LOCATE, LINE INPUT, он позволяет с минимальными усилиями создавать приложения даже начинающими программистами. Кроме того компилятор может осуществлять вызов любых WinApi32 функций, создавать многопоточных приложения, использовать строки неограниченной длинны. Есть встроенный ассемблер с поддержкой MMX, можно компилировать DLL файлы.
Качество кодогенерации очень высокое, исполняемые файлы получаются очень быстрые и небольшого размера.
К недостаткам этой системы можно отнести отсуствие встроенной поддержки событий(Events) и обратных вызовов (Сallbacks) из-за чего их приходится эмулировать с помощью API функций.
И хотя уже доступна 3 версия этого компилятора, он похоже уже отживает свой век, так как PowerBASIC for Windows может создавать консольные и GUI приложения и поддерживает механизм обработки событий.
 
Достоинства:
  • Простота языка, легко можно портировать код из DOS приложений под Windows.
  • Хорошее качество генерируемого машинного кода
Недостатки:
  • Без особых ухищрений нельзя создавать GUI приложения.
  • Отсутствует механизм обработки событий.
Область применения:
Различные консольные утилиты, создание DLL файлов, CGI скрипты.
 
 

PowerBASIC for Windows 7.0

Это уже зрелый компилятор для Win32. По качеству кодогенерации не уступает многим С++ и Pascal компиляторам. Получаемые EXE и DLL файлы отличаются небольшим размером и высоким быстродействием.
Компилятор оптимизирующий, однопроходной, с высокой скоростью компиляции. Размер генерируемых EXE файлов от 5 кбайт. Возможно создание стандартных EXE и DLL приложений. В дистрибутив входит также PowerBASIC COM Browser, позволяющий автоматически генерировать интерфейсы к COM серверам.
 
Достоинства:
  • Поддержка COM automation, создание COM client/controller, возможность прямой работы с IUnknown/Dispatch Interface.
  • Встроенные типы данных совместимые с Pascal и C (WORD, DWORD, POINTER, etc).
  • Арифметика указателей, указатели на функции. Поддержка Events & Сallbacks.
  • Инлайн ассемблер, с поддержкой плавающей арифметики и команд MMX.
  • Поддержка Client/Server Network Communications - TCP/UDP for E-mail, FTP, etc.
  • Создание многопоточных приложений.
  • Возможность размещения переменных в регистрах процессора.
  • Наличие препроцессора.
  • Имеется отладчик.
Недостатки:
  • PB использует собственной формат файла ресурсов, имеющий расширение .PBR Ресурсы необходимо скомпилировать в .RES файл, а затем конвертировать утилитой PBRes в .PBR файл, после чего можно подключать их к проекту. Причем 6 и 7 версии компилятора используют каждая свой формат .PBR файлов и они не совместимы между собой. Т.е. если вам попадет исходник с .PBR файлом созданным в 6 версии, вы не сможете его откомпилировать в 7 версии без конвертации файлов ресурсов.
  • Отсутствие возможности линковки многоязычных модулей. Компилятор сразу выдает EXE файл, без создания .OBJ файла.
  • Примитивный редактор кода, по функциональности чуть лучше Блокнота. Понятно, что его создатели боролись за минимальный размер дистрибутива, но все-таки можно было сделать его более удобным. Вместо PBEdit, можно использовать RAD Developer 1.2 for PowerBasic, похожую на среду VB.
Область применения:
Создание различных приложений для платформы Windows. Если требуется написать небольшую и быстродействующую программу, то PowerBasic for Windows, несомненно, будет лучшим выбором. Также есть довольно много коммерческих расширений для компилятора, например позволяющих создавать на PB ActiveX сервера (in-process/out-process), различные библиотеки компрессии, и т.д.В ближайшее время должна появится версия PowerBasic для Linux.
 
 
PureBasic
http://www.purebasic.com/
 

PureBasic 3.51

Довольно “молодой” компилятор, первый релиз вышел в 2000 году. Сейчас доступны версии для платформ Windows, AmigaOS, Linux. В Windows версии компилятор генерирует ассемблерный вывод, который затем компилирует NASM с использованием библиотек от ANSI С компилятора LccWin32. Возможно создание стандартных EXE, DLL файлов. Синтаксис языка очень простой и максимально приближен к обычному Basic`у . Высокая скорость компиляции. Программы получаются компактные и очень быстрые. Благодаря поддержке DirectX возможно создание несложных 3D игрушек. В дистрибутив PureBasic входит большое количество примеров.
 
Достоинства:
  • Встроенный ассемблер.
  • Создание многопоточных приложений. Указатели на функции и метки.
  • Поддержка DirectX, встроенные функции для работы с 3D графикой и текстурами, воспроизведение аудио/видео файлов, функции компрессии данных в памяти.
  • Функции NetworkConnection.
  • Работа с базами данных через ODBC.
  • Простое программирование CD-привода, джойстика, звуковой карты.
  • Встроенный отладчик.
Недостатки:
  • Из-за того что код сначала конвертируется в ассемблер, а уже затем компилируется, скорость трансляции невысока.
  • Поддерживается всего 4 типа числовых данных (Byte, Word, Long, Float).
  • Невозможность линковки .RES файлов с приложением. Можно лишь только указать иконку для создаваемого EXE файла.
  • Нет поддержки COM automation.
  • Компилятор еще довольно "сырой", и автор прямо просит слать ему на мейл баг репорты…
Область применения:
Скорее всего, создание мультимедиа приложений и игрушек.
 
 
Rapid-Q
http://www.basicguru.com/abc/rapidq/
 

Rapid-Q 1.0

"Самодельный" Freeware компилятор написанный William Yu на Delphi. Дистрибутив содержит консольный компилятор Бейсика в байт код, примитивную IDE среду с дизайнером форм, и две библиотеки. Процесс компилирования происходит так, файл с исходным тестом транслируется в байт код, а после этого он "прошивается" в секцию ресурсов одного из файлов RAPIDQ32.LIB или RAPIDQCC.LIB, в зависимости от того требуется консольное или GUI приложение. После чего, файл переименовывается в EXE.
Поскольку "каркасные" файлы написаны на Delphi, и байт код интерпретируется виртуальной машиной, полученные EXE файлы работают довольно медленно, хотя и не требуют внешних run-time DLL.
Синтаксис Бейсика используемый в Rapid-Q, очень похож на VB. Можно использовать готовые визуальные комноненты типа TextBox, TabStrip, Image, etc. Каждый компонент поддерживает несколько событий: OnClick, OnDblClick, etc и множество свойств. Также можно создавать собственные компоненты на основе имеющихся. Есть поддержка COM automation, с использованием "позднего" связывания. Для работы с базами данных в Rapid-Q встроена поддержка MySQL.
 
Достоинства:
  • Бесплатность компилятора.
  • Объектно-подобный синтаксис, возможность создания почти настоящих компонентов.
  • Частичная поддержка COM automation с использованием "позднего" связывания.
  • Поддержка DirectX, встроенные функции для работы с 3D графикой.
  • Дизайнер форм.
Недостатки:
  • Размер получаемых EXE файлов от 300 кбайт, нет возможности создания DLL.
  • Невысокая скорость работы скомпилированных программ.
  • Нельзя создавать MDI формы.
  • Нет функций для чтения/записи бинарных файлов.
Область применения:
  Несложные SDI приложения, не требующие быстрого исполнения. Можно делать простые игрушки, что-то типа тетриса.
 
 
IBasic
http://www.pyxia.com/
 

IBasic 1.96

Shareware транслятор бейсик-подобного языка. Первый релиз появился в 2001 году, несмотря на быстрое развитие, все еще довольно примитивен, да и компилятором его назвать можно довольно условно, исходный текст на IBasic конвертируется в .RES файл, а затем просто дописывается к каркасному EXE файлу. Размер результирующего EXE от 370 Кб, если используется DirectX от 420 Кб.
При запуске приложения код программы интерпретируется, из за чего он работает довольно медленно. Слабый синтаксический анализатор IBasic`а рекурсивно-нисходящего типа, реализован очень небрежно, пропускаются грубые ошибки в виде незакрытых скобок, кавычек, и т.д. В трансляторе есть поддержка DirectX.
 
Достоинства:
  • Поддержка DirectX.
Недостатки:
  • IBasic это интерпретатор, отсюда низкая скорость работы и все ошибки проявляются во время работы, даже в "скомпилированном" EXE файле.
  • Примитивный диалект Бейсика, нет указателей на функции, нет поддержки Events & Callbacks.
Область применения:
Создание простых приложений, возможно несложных игрушек.
 
 
XPB! Basic
www.xpbbasic.com
 

XPB! Basic 1.12

В отличие от IBasic, XPB это настоящий компилятор, размер создаваемых GUI приложений от 4 кбайт, консольных от 2 кбайт. Также можно создавать DLL и OBJ файлы. Однако, этот диалект Бейсика самый примитивный из всех представленных. В XPB есть только два типа числовых данных: Integer и Float, причем числа с плавающей точкой имеют точность только до 2 знаков после запятой, в инструкции говорится, что арифметика с плавающей точкой будет реализована в более поздних версиях. Есть встроенная обработка событий, можно использовать диалоги из ресурсов.
 
Достоинства:
  • Небольшой размер генерируемых EXE и DLL файлов.
  • Встроенный линкер и компилятор ресурсов.
Недостатки:
  • Нет поддержки арифметических операций с плавающей точкой.
  • Примитивный синтаксис языка, подходит только для начинающих программистов.
  • Медленная компиляция.
Область применения:
XPB версии 1.12 пока еще не пригоден создания сколько нибудь ценных приложений.
 
 
REALbasic
http://www.realsoftware.com/
 

REALbasic 5.2

Среда разработки этого языка внешне напоминает VB, но чрезвычайно неудобная. Такое впечатление, что создатели REALbasic своим творением не пользуются и не понимают, как должна работать нормальная RAD среда. Неудобный дизайнер форм, неудобный редактор кода, криво сделанная справочная система, глючный компилятор создающий гигантские EXE файлы (программка "Hello word" будет весить от 1.5 мбайт!). Все это наводит на закономерную мысль, кому и для чего нужен весь этот байтовый хлам? Лучше уж использовать VB. Единственная полезная фича в REALbasic - это возможность создавать приложения для Macintosh.
 
Достоинства:
  • Есть возможность использования ActiveX контролов.
  • Можно компилировать приложения для Carbon/Mac OS X.
Недостатки:
  • Неудобная RAD среда.
  • Компилятор создает огромные EXE файлы.
Область применения:
Под Windows однозначно не имеет смысла использовать этот компилятор, про Mac OS ничего сказать не могу, но наверняка и там есть более удобные инструменты разработки приложений на Бейсике.
 
 
BCX
http://bcx.basicguru.com
 

BCX 2.78

Бесплатный транслятор Бейсика в ANSI C. Для компиляции приложений необходимо установить С компилятор LCC-Win32. Язык представляет собой смесь Qbasic, PowerBasic, и VB. Можно использовать все возможности имеющиеся в языке С. Транслятор может создавать GUI, консольные и DLL приложения. BCX удобен для бейсик-программистов изучающих С, можно ввести программу на Бейсике, оттранслировать ее в С, а затем сравнивать два листинга…Доступны исходные тексты транслятора на Бейсике.
 
Достоинства:
  • Бесплатность транслятора.
  • В код на Бейсике, можно вставлять фрагменты на С и ассемблере.
  • Есть исходники.
Недостатки:
  • Примитивный синтаксический анализатор, основную работу он переваливает на С компилятор, в результате чего большинство ошибок всплывает на этапе трансляции С кода.
  • BCX порадует любителей работы в командной строке, для автоматизации трансляции приложений, прийдется использовать несколько .BAT файлов.
Область применения:
С помощью BCX можно относительно просто создавать консольные и DLL приложения на Бейсике, для серьезной работы этот транслятор малопригоден.
 
 
В заключении привожу таблицу сравнительных характеристик описанных компиляторов. Поясню некоторые позиции:
 
Тип генерируемого кода:
  • Native - машинный код.
  • Bytecode - байт код для виртуальной стековой машины. Пример "байткодных" компиляторов: Forth или Java.
 
Сигнатура создаваемого PE файла:
  • PE COFF - файл полностью соответствует формату PortableExecutables, т.е. он может быть, впоследствии обработан программами-упаковщиками типа: UPX, Aspack, или навесными защитами: Asprotect, Fusion.
  • PE Corrupted - структура PE файла нарушена, это может быть в случае когда исполняемый файл "собирается" из нескольких кусков, например к "каркасному" EXE дописывается секция ресурсов содержащая байт код. И хотя такой файл запускается без проблем, программы упаковщики и им подобные, не могут обрабатывать такие файлы.
 
Загрузка внешних DLL:
  • Неявная - При неявной компоновке функции загружаемой DLL добавляются в секцию импорта вызывающего EXE файла.
  • Явная - При явной загрузке программисту самому придется позаботиться о загрузке DLL и подключении экспортируемых функций. Пример: hRTFLib = LoadLibrary("RICHED32.DLL")
 
 
 

Таблица сравнительных характеристик Basic компиляторов.

 
Название компилятора PowerBasic PureBasic Rqbeta Ibasic XPB REALbasic BCX
Версия 7.0 3.51 1.0 1.96 1.12 5.2 2.78
Первый релиз компилятора 1996 г. 2000 г. 1999 г. 2001 г. 2003 г. 1997 г. 2001 г.
Тип генерируемого кода Native Native Bytecode Bytecode Native Bytecode Native
Платформа Win32 Win32, AmigaOS, Linux Win32, Linux Win32 Win32 Win32, MAC OS Win32
Тип создаваемых приложений EXE / DLL EXE / DLL EXE EXE EXE / DLL / OBJ EXE EXE / DLL
Сигнатура создаваемого PE файла PE COFF PE COFF PE Corrupted PE COFF PE COFF PE Corrupted PE COFF
Скорость компиляции Высокая Низкая, двухпроходной компилятор Высокая Высокая Низкая Низкая Высокая
Скорость работы скомпилированного кода Высокая Высокая Средняя Низкая Высокая Средняя Высокая
Оптимизация кода компилятором Есть Нет Нет Нет Есть Нет Есть
Минимальный размер EXE файла от 5 кб от 5 кб от 300 кб от 370 кб от 2 кб от 1450 кб от 7 кб
Использование .RES файлов Да Нет Нет Нет Да Нет Да
Препроцессор Есть Нет Нет Нет Нет Нет Есть
Поддержка многопоточности Есть Есть Нет Нет Нет Есть Есть
Загрузка внешних DLL Явная / неявная Явная Явная Явная Явная Явная Явная / неявная
Поддержка DirectX в компиляторе Нет Есть Есть Есть Нет Нет Нет
Поддержка COM automation Есть, только "раннее" связывание Нет Есть, только "позднее" связывение Нет Нет Есть, можно использовать ActiveX Нет
Встроенный ассемблер Есть Есть Нет Нет Нет Нет Есть
Указатели на функции Есть Есть Есть Нет Нет Нет Есть
Количество типов данных 17 4 10 5 3 6 14
Работа с базами данных Да Да, через ODBC API Да, есть поддержка MySQL Нет Нет Да Нет
Наличие отладчика Есть Есть Нет Нет Нет Нет Есть
Стоимость компилятора 199$ 59 Euros Freeware 25$ 25$ 50$ Freeware
Субъективная оценка по 5-бальной шкале * * * * * * * * * * * * * * * * * * * *

 

(C) Пашков Александр.

2003 г.

 
     

   
   
     
  VBNet рекомендует