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[d] и AArch64[d]
ОС Linux, Windows, DOS, FreeBSD, MacOS (не полностью)
Логотип Викисклада Медиафайлы на Викискладе
FreeBASIC Compiler
Логотип программы FreeBASIC Compiler
Скриншот программы FreeBASIC Compiler
Тип компилятор, язык программирования и объектно-ориентированный
Разработчик The FreeBASIC Development Team
Написана на Бейсик
Операционные системы Windows, Linux, DOS и FreeBSD
Первый выпуск 2004
Аппаратные платформы x86, x86-64, ARMv7[d] и AArch64[d]
Последняя версия 1.08.1 [1] (9 июля 2021; 2 года назад (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), и стандартный режим, включающий в себя все последние изменения и возможности.

Новые возможности и расширения[2][править | править код]

Поддержка библиотек функций прикладного программирования[править | править код]

Примеры программ[править | править код]

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. 1 2 Version 1.09.0 Released. Дата обращения: 1 января 2022. Архивировано 1 января 2022 года.
  2. More about FreeBASIC (англ.). freebasic.net. — FreeBASIC - ещё больше нужных функций. Дата обращения: 14 октября 2015. Архивировано из оригинала 24 октября 2015 года.

См. также[править | править код]

Источники[править | править код]

Ссылки[править | править код]

IDE
  • FBIde — IDE для FreeBASIC
  • FbEdit (недоступная ссылка) — ещё одна IDE для FreeBASIC
  • WinFBE - Современный FreeBASIC IDE для Windows