FreeBASIC
FreeBASIC | |
---|---|
![]() | |
Класс языка | мультипарадигмальный: императивный, процедурный, структурный, объектно‐ориентированный |
Тип исполнения | компилируемый |
Появился в | 2004 |
Автор | The FreeBASIC Development Team |
Разработчик | The FreeBASIC Development Team |
Расширение файлов | .bas или .bi |
Выпуск | 1.09.0 [1] (1 января 2022; 2 года назад (2022-01-01)) |
Система типов | строгая, статическая |
Диалекты | fb |
Испытал влияние | QuickBASIC, C |
Лицензия | GNU GPLv2+, Стандартные библиотеки лицензированы по GNU LGPLv2+ |
Сайт | freebasic.net |
Платформа | x86, x86-64, ARMv7[вд] и AArch64[вд] |
ОС | Linux, Windows, DOS, FreeBSD, MacOS (не полностью) |
![]() |
FreeBASIC Compiler | |||
---|---|---|---|
![]() | |||
![]() | |||
Тип | компилятор, язык программирования и объектно-ориентированный | ||
Разработчик | The FreeBASIC Development Team | ||
Написана на | Бейсик | ||
Операционные системы | Windows, Linux, DOS и FreeBSD | ||
Первый выпуск | 2004 | ||
Аппаратные платформы | x86, x86-64, ARMv7[вд] и AArch64[вд] | ||
Последняя версия | 1.08.1 [1] (9 июля 2021; 3 года назад (2021-07-09)) | ||
Репозиторий | github.com/freebasic/fbc | ||
| |||
| |||
Лицензия | GNU GPL | ||
Сайт | freebasic.net | ||
![]() |
FreeBASIC — язык программирования высокого уровня по синтаксису наиболее близкий к QuickBASIC, а также компилятор для него (FreeBASIC Compiler). Первоначально компилятор разрабатывался как свободная альтернатива Microsoft QuickBasic, но скоро обзавёлся новыми возможностями, превратившись в мощное средство разработки. Хотя первые версии компилятора были написаны на Visual Basic, теперь он может откомпилировать сам себя.
Компилятор
Компилирует QBasic и FreeBASIC код в 32 и 64-битные исполняемые Win32, DOS (в защищённом режиме) и Linux x86 модули.
Ассемблирование и компоновка производятся с помощью GNU Binutils.
Компилятор распространяется на условиях GNU GPL, стандартная библиотека — на GNU LGPL.
Имеется несколько сред разработки, в качестве отладчика можно использовать GNU Debugger (также поддерживается gprof).
Язык
Несмотря на то, что компилятор имеет совместимость с QuickBASIC, в язык FreeBASIC были добавлено множество расширений и возможностей для соответствия современным требованиям, стандартам и совместимостью с библиотеками и API написанными на C/C++. Начиная с версии 0.17 пользователь может выбрать три режима компиляции (опция -lang): режим совместимости с QuickBASIC (qb), старыми версиями FreeBASIC (deprecated), и стандартный режим, включающий в себя все последние изменения и возможности.
Новые возможности и расширения[4]
- Поддержка Юникода.
- Множество встроенных типов переменных (Byte, UByte, Short, UShort, Integer, UInteger, LongInt, ULongInt, Single, Double, Boolean, String, ZString, WString).
- Типы данных определяемые пользователем (бесконечная вложенность, Union, тип поля (array, function, bit fields)).
- Пространства имён.
- Перечисляемый тип (Enum).
- Новые возможности при работе с массивами (до 2 ГБ размером, Redim Preserve).
- Указатели (указатели на любые типы данных, неограниченная косвенная адресация).
- Перегрузка функций и операторов.
- Необязательные аргументы функций.
- Встроенный ассемблер (ассемблерные инструкции в исходном коде программы).
- Препроцессоры.
- Typedefs.
- Конструкторы и деструкторы классов.
- Улучшенная графическая библиотека.
Поддержка библиотек функций прикладного программирования
- Создание интерфейсов: GTK, FLTK, IUP, WINAPI и др.
- Регулярные выражения: PCRE
- Автоматизация IE и Microsoft Office: Disphelper
- Звук: BASS, fbsound, FMOD и др.
- Графика: Сairo, FreeType, Allegro, DevIL, FreeImage, DISLIN и др.
- Создание PDF: CD, LibHaru
- Базы данных: mysql, sqlite, postgresql
- Сеть: Curl и др.
- Архивы: Zlib, libzip и др.
Примеры программ
Hello, World!
Используя встроенную библиотеку FreeBASIC:
Print "Hello, World!"
Используя стандартную библиотеку C:
#Include "crt.bi" puts(!"Hello, World!\n")
Используя Windows API:
#Include "windows.bi" MessageBox(Null, "Hello, World!", "Message", MB_OK)
Объектно-ориентированное программирование
' Класс вектора Type Vector W As Integer H As Integer Declare Constructor(nW As Integer, nH As Integer) End Type Constructor Vector(nW As Integer, nH As Integer) W = nW H = nH End Constructor ' Класс для создания объекта Type AObject Private: X As Integer Y As Integer Movement As Vector Pointer Public: ' Видимые извне методы, включая конструктор и деструктор Declare Constructor(nX As Integer, nY As Integer) Declare Destructor() Declare Sub SetMotion (Motion As Vector Pointer) Declare Sub Move() Declare Property GetX As Integer End Type ' Установка значений по умолчанию Constructor AObject(nX As Integer, nY As Integer) X = nX Y = nY End Constructor ' Освобождение памяти Destructor AObject() Delete Movement End Destructor ' Установка вектора Sub AObject.SetMotion(Motion As Vector Pointer) Movement = Motion End Sub ' Перемещает объект по его вектору Sub AObject.Move() X += Movement->W Y += Movement->H End Sub ' Возвращает координату X, недоступную извне Property AObject.GetX As Integer Return X End Property ' Фактическое начало программы ' Создание экземпляра класса с координатами (100, 100) Dim Player As AObject = Type<AObject>(100, 100) ' Создание вектора с начальными значениями (-10, 5) и перемещение позиции объекта Player.SetMotion(New Vector(-10, 5)) ' Перемещение объекта Player.Move() ' Получаем координату X и выводим на консоль Print Player.GetX ' Деструктор объекта «Player» вызывается тогда, когда объект покидает зону видимости ' Так как «Player» является локальной переменной, деструктор вызывается автоматически 'Ожидаем нажатия любой клавиши Sleep
Примечания
- ↑ 1 2 Version 1.09.0 Released (неопр.). Дата обращения: 1 января 2022. Архивировано 1 января 2022 года.
- ↑ 1 2 https://www.freebasic.net/wiki/ProPgSourceFiles
- ↑ 1 2 https://www.freebasic.net/wiki/ProPgHeaderFiles
- ↑ More about FreeBASIC (англ.). freebasic.net. — FreeBASIC - ещё больше нужных функций. Дата обращения: 14 октября 2015. Архивировано из оригинала 24 октября 2015 года.
См. также
Источники
- FreeBASIC Manual (англ.)
Ссылки
- Проект FreeBASIC на сайте SourceForge.net (англ.)
- Русскоязычный сайт Архивная копия от 4 мая 2020 на Wayback Machine
- Русскоязычный форум
- IDE
- FBIde — IDE для FreeBASIC
- FbEdit (недоступная ссылка) — ещё одна IDE для FreeBASIC
- WinFBE - Современный FreeBASIC IDE для Windows