FreeBASIC — это бесплатный и открытый исходный код многоплатформенного компилятора и языка программирования на основе BASIC, лицензированного по GNU GPL для Microsoft Windows , защищенного режима MS-DOS ( DOS extender ), Linux , FreeBSD и Xbox . Версия для Xbox больше не поддерживается. [2]
Согласно его официальному сайту, [3] FreeBASIC обеспечивает совместимость синтаксиса с программами, изначально написанными на Microsoft QuickBASIC (QB). Однако, в отличие от QuickBASIC, FreeBASIC является компилятором только для командной строки , если пользователи вручную не установят внешнюю интегрированную среду разработки (IDE) по своему выбору. [4]
На своем бэкэнде FreeBASIC использует GNU Binutils для создания консольных и графических приложений пользовательского интерфейса . FreeBASIC поддерживает связывание и создание статических и динамических библиотек C и имеет ограниченную поддержку библиотек C++ . В результате код, скомпилированный в FreeBASIC, может быть повторно использован в большинстве собственных сред разработки.
Хотя FreeBASIC не является оптимизирующим компилятором , он может опционально транскомпилировать в C для компиляции с оптимизацией. FreeBASIC поддерживает встроенный ассемблер , многопоточность и не использует автоматическую сборку мусора .
Поддерживается предварительная обработка в стиле C , включая многострочные макросы , условную компиляцию и включение файлов. Препроцессор также имеет доступ к символьной информации и настройкам компилятора, таким как диалект языка .
Изначально FreeBASIC эмулировал синтаксис Microsoft QuickBASIC настолько близко, насколько это было возможно. За пределами этого язык продолжал свою эволюцию. В результате FreeBASIC объединяет несколько языковых диалектов для максимального уровня совместимости с QuickBASIC и полного доступа к современным функциям. [5] Новые функции включают поддержку таких концепций, как объекты , перегрузка операторов , перегрузка функций , пространства имен и другие. [6]
Символы новой строки указывают на завершение операторов программирования. Оператор программирования может быть распределен по нескольким последовательным строкам с помощью символа продолжения строки подчеркивания (_), тогда как несколько операторов могут быть записаны на одной строке, если каждый оператор разделять двоеточием ( :).
Поддерживаются блочные комментарии , а также замечания в конце строки. Полные комментарии в строке делаются с апострофом '
, в то время как блоки комментируемого кода начинаются с /'
и заканчиваются на '/
.
FreeBASIC не чувствителен к регистру.
FreeBASIC предоставляет встроенную, совместимую с QuickBASIC графическую поддержку через FBgfx, которая автоматически включается в программы, которые вызывают команду SCREEN
. Его бэкэнд по умолчанию использует OpenGL в Linux и DirectX в Microsoft Windows . Эта абстракция делает графический код FBgfx кроссплатформенным. Однако FBgfx не имеет аппаратного ускорения.
Пользователи, знакомые с внешними графическими утилитами, такими как OpenGL или Windows API, могут использовать их, не вмешиваясь в работу встроенной графической библиотеки.
По мере развития FreeBASIC были внесены изменения, которые потребовали сломать устаревший синтаксис. Для того чтобы продолжить поддержку программ, написанных с использованием старого синтаксиса, FreeBASIC теперь поддерживает следующие диалекты:
GOSUB
/ RETURN
, числовые метки и другие функции разрешены в этом диалекте.Стандартные программы, такие как программа «Hello, World!», выполняются так же, как и в QuickBASIC.
Распечатать «Привет, мир!» sleep: end 'Комментарий, предотвращает мгновенное закрытие окна программы
FreeBASIC дополняет это поддержкой объектно-ориентированных функций, таких как методы , конструкторы , динамическое выделение памяти , свойства и временное выделение.
Тип Vector Private : x As Integer y As Integer Public : Объявить конструктор ( nX As Integer = 0 , nY As Integer = 0 ) Объявить свойство getX As Integer Объявить свойство getY As Integer Конец типа Конструктор Вектор ( nX как целое число , nY как целое число ) x = nX y = nY Конец конструктора Вектор свойства . getX как целое число Возврат x Конец свойства Вектор свойства . getY As Integer Возврат y Конец свойства
Dim As Vector Ptr player = Новый вектор () * player = Тип < Вектор > ( 100 , 100 ) Плеер печати -> getX Плеер печати -> getY Удалить игрока Sleep 'Предотвращает мгновенное закрытие окна программы.
В обоих случаях язык хорошо подходит для целей обучения.