Введение
FreeBASIC — это бесплатный и открытый многоплатформенный компилятор и язык программирования, основанный на BASIC, распространяемый под лицензией GNU GPL для Microsoft Windows, MS-DOS в защищенном режиме (с использованием расширителя DOS), Linux, FreeBSD и Xbox. Версия для Xbox больше не поддерживается. Согласно официальному сайту, FreeBASIC обеспечивает синтаксическую совместимость с программами, изначально написанными на Microsoft QuickBASIC (QB). Однако, в отличие от QuickBASIC, FreeBASIC является компилятором, работающим только из командной строки, если пользователи не установят вручную внешнюю интегрированную среду разработки (IDE) по своему выбору. Специально для FreeBASIC разработаны IDE FBide и FbEdit, а более графические варианты включают WinFBE Suite и VisualFBEditor.
FreeBASIC is a free and open source multiplatform compiler and programming language based on BASIC licensed under the GNU GPL for Microsoft Windows, protected mode MS DOS (DOS extender), Linux, FreeBSD and Xbox. The Xbox version is no longer maintained. According to its official website, FreeBASIC provides syntax compatibility with programs originally written in Microsoft QuickBASIC (QB). Unlike QuickBASIC, however, FreeBASIC is a command line only compiler, unless users manually install an external integrated development environment (IDE) of their choice. IDEs specifically made for FreeBASIC include FBide and FbEdit, while more graphical options include WinFBE Suite and VisualFBEditor.
Особенности компилятора
На своем бэкенде FreeBASIC использует GNU Binutils для создания консольных и графических приложений. FreeBASIC поддерживает связывание и создание статических и динамических библиотек C и обладает ограниченной поддержкой библиотек C++. В результате, код, скомпилированный в FreeBASIC, может быть повторно использован в большинстве нативных сред разработки. Хотя FreeBASIC не является оптимизирующим компилятором, он может опционально транскомпилировать код в C для последующей компиляции с оптимизациями. FreeBASIC поддерживает встроенные ассемблерные вставки, многопоточность и не использует автоматическую сборку мусора. Поддерживается препроцессинг в стиле C, включая многострочные макросы, условную компиляцию и включение файлов. Препроцессор также имеет доступ к информации о символах и настройкам компилятора, таким как диалект языка.
Синтаксис
Первоначально FreeBASIC максимально точно эмулировал синтаксис Microsoft QuickBASIC. Однако язык продолжал развиваться. В результате FreeBASIC сочетает в себе несколько диалектов языка для обеспечения максимальной совместимости с QuickBASIC и полного доступа к современным возможностям. Новые возможности включают поддержку таких концепций, как объекты, перегрузка операторов, перегрузка функций, пространства имен и другие. Символы новой строки обозначают завершение операторов программы. Оператор программы может быть разбит на несколько последовательных строк с помощью символа продолжения строки подчеркивания (_), а несколько операторов могут быть записаны в одной строке, разделяя каждый оператор двоеточием (:). Поддерживаются как блочные комментарии, так и комментарии в конце строки. Комментарии в строке начинаются с апострофа ('), а блочные комментарии – с /* и заканчиваются */. FreeBASIC не чувствителен к регистру.
Библиотека графики
FreeBASIC предоставляет встроенную поддержку графики, совместимую с QuickBASIC, посредством FBgfx, который автоматически включается в программы при обращении к команде SCREEN. По умолчанию, его графический движок использует OpenGL в Linux и DirectX в Microsoft Windows. Такая абстракция обеспечивает кроссплатформенную совместимость графического кода FBgfx. Однако FBgfx не использует аппаратное ускорение. Пользователи, знакомые с внешними графическими библиотеками, такими как OpenGL или Windows API, могут использовать их, не нарушая работу встроенной графической библиотеки.
Языковые диалекты
По мере развития FreeBASIC были внесены изменения, потребовавшие отказа от устаревшего синтаксиса. Чтобы продолжить поддержку программ, написанных с использованием старого синтаксиса, FreeBASIC теперь поддерживает следующие диалекты:
Диалект по умолчанию (lang fb в качестве аргумента командной строки) поддерживает все новые возможности компилятора и запрещает использование устаревшего синтаксиса. Диалект FB lite (lang fblite) позволяет использовать большинство новых, не объектно-ориентированных возможностей, а также программирование в старом стиле. В этом диалекте разрешены неявные переменные, суффиксы, GOSUB / RETURN, числовые метки и другие функции. Диалект QB (lang qb) стремится воспроизвести поведение QuickBASIC и способен компилировать многие программы QuickBASIC без изменений.
The default dialect ( lang fb as a command line argument) supports all new compiler features and disallows archaic syntax. The FB lite dialect ( lang fblite) permits use of most new, non object oriented features in addition to older style programming. Implicit variables, suffixes, GOSUB / RETURN, numeric labels and other features are allowed in this dialect. The QB dialect ( lang qb) attempts to replicate QuickBASIC behavior and is able to compile many QuickBASIC programs without modification.