FreeBASIC: различия между версиями
[отпатрулированная версия] | [непроверенная версия] |
KrBot (обсуждение | вклад) м переименование категории согласно итогу обсуждения |
РобоСтася (обсуждение | вклад) |
||
(не показано 29 промежуточных версий 15 участников) | |||
Строка 1: | Строка 1: | ||
{{Карточка языка программирования |
{{Карточка языка программирования |
||
| |
| = |
||
|logo = |
|||
|semantics = |
|||
|paradigm = [[Мультипарадигменный язык программирования|мультипарадигмальный]]: [[императивное программирование|императивный]], [[процедурное программирование|процедурный]], [[структурное программирование|структурный]], [[Объектно-ориентированное программирование|объектно‐ориентированный]] |
|paradigm = [[Мультипарадигменный язык программирования|мультипарадигмальный]]: [[императивное программирование|императивный]], [[процедурное программирование|процедурный]], [[структурное программирование|структурный]], [[Объектно-ориентированное программирование|объектно‐ориентированный]] |
||
|class = [[компилятор|компилируемый]] |
|class = [[компилятор|компилируемый]] |
||
|year = [[2004]] |
|||
|designer = The FreeBASIC Development Team |
|designer = The FreeBASIC Development Team |
||
| developer = The FreeBASIC Development Team |
|||
|extension = .bas .bi |
|||
| последняя версия = 1.09.0 <ref name="multiple">{{Cite web |url=https://www.freebasic.net/forum/viewtopic.php?f=1&t=31376 |title=Version 1.09.0 Released |access-date=2022-01-01 |archive-date=2022-01-01 |archive-url=https://web.archive.org/web/20220101223522/https://www.freebasic.net/forum/viewtopic.php?f=1&t=31376 |deadlink=no }}</ref> |
|||
|latest_release_version = 1.05.0 |
|||
({{start date and age|2022|01|01}}) |
|||
|latest_release_date = [[31 января]] [[2016]] г.<ref>[http://www.freebasic.net/forum/viewtopic.php?f=1&t=24363#p215619 Version 1.05.0 released - freebasic.net<!-- Заголовок добавлен ботом -->]</ref> |
|||
|latest_preview_version = |
|||
|latest_preview_date = |
|||
|typing = строгая, статическая |
|typing = строгая, статическая |
||
| |
| = |
||
⚫ | |||
|dialects = |
|||
|license = [[GNU General Public License|GNU GPLv2+]], [[GNU Lesser General Public License|Стандартные библиотеки лицензированы по GNU LGPLv2+]] |
|||
⚫ | |||
| website = {{URL|https://www.freebasic.net/}} |
|||
|influenced = |
|||
⚫ | |||
|license = |
|||
|website = |
|||
⚫ | |||
}} |
}} |
||
{{Карточка программы | название = FreeBASIC Compiler | разработчики = The FreeBASIC Development Team}} |
{{Карточка программы | название = FreeBASIC Compiler | разработчики = The FreeBASIC Development Team}} |
||
'''FreeBASIC''' — [[язык программирования]] высокого уровня по синтаксису наиболее близкий к [[QuickBASIC]], а также компилятор для него (FreeBASIC Compiler). Первоначально компилятор разрабатывался как [[Свободное программное обеспечение|свободная]] альтернатива Microsoft QuickBasic, но скоро обзавёлся новыми возможностями, превратившись в мощное средство разработки. Хотя первые версии компилятора были написаны на [[Visual Basic]], теперь он может откомпилировать сам себя |
'''FreeBASIC''' — [[язык программирования]] высокого уровня по синтаксису наиболее близкий к [[QuickBASIC]], а также компилятор для него (FreeBASIC Compiler). Первоначально компилятор разрабатывался как [[Свободное программное обеспечение|свободная]] альтернатива Microsoft QuickBasic, но скоро обзавёлся новыми возможностями, превратившись в мощное средство разработки. Хотя первые версии компилятора были написаны на [[Visual Basic]], теперь он может откомпилировать сам себя. |
||
== Компилятор == |
== Компилятор == |
||
Строка 36: | Строка 29: | ||
Несмотря на то, что компилятор имеет совместимость с QuickBASIC, в язык FreeBASIC были добавлено множество расширений и возможностей для соответствия современным требованиям, стандартам и совместимостью с [[библиотека (программирование)|библиотеками]] и [[Интерфейс программирования приложений|API]] написанными на C/[[C++]]. Начиная с версии 0.17 пользователь может выбрать три режима компиляции (опция -lang): режим совместимости с QuickBASIC (qb), старыми версиями FreeBASIC (deprecated), и стандартный режим, включающий в себя все последние изменения и возможности. |
Несмотря на то, что компилятор имеет совместимость с QuickBASIC, в язык FreeBASIC были добавлено множество расширений и возможностей для соответствия современным требованиям, стандартам и совместимостью с [[библиотека (программирование)|библиотеками]] и [[Интерфейс программирования приложений|API]] написанными на C/[[C++]]. Начиная с версии 0.17 пользователь может выбрать три режима компиляции (опция -lang): режим совместимости с QuickBASIC (qb), старыми версиями FreeBASIC (deprecated), и стандартный режим, включающий в себя все последние изменения и возможности. |
||
=== Новые возможности и расширения<ref name="freebasic.net_1" |
=== Новые возможности и расширения<ref name="freebasic.net_1"/> === |
||
* Поддержка [[Юникод]]а. |
* Поддержка [[Юникод]]а. |
||
* Множество встроенных типов [[Переменная (программирование)|переменных]] (Byte, UByte, Short, UShort, Integer, UInteger, LongInt, ULongInt, Single, Double, Boolean, String, ZString, WString). |
* Множество встроенных типов [[Переменная (программирование)|переменных]] (Byte, UByte, Short, UShort, Integer, UInteger, LongInt, ULongInt, Single, Double, Boolean, String, ZString, WString). |
||
Строка 57: | Строка 50: | ||
* Автоматизация [[Internet Explorer|IE]] и [[Microsoft Office]]: Disphelper |
* Автоматизация [[Internet Explorer|IE]] и [[Microsoft Office]]: Disphelper |
||
* Звук: [[BASS]], fbsound, FMOD и др. |
* Звук: [[BASS]], fbsound, FMOD и др. |
||
* Графика: [[Cairo|Сairo]], [[FreeType]], [[ |
* Графика: [[Cairo|Сairo]], [[FreeType]], [[()|Allegro]], [[DevIL]], FreeImage, DISLIN и др. |
||
* Создание PDF: CD, LibHaru |
* Создание PDF: CD, LibHaru |
||
* Базы данных: [[MySQL|mysql]], [[SQLite|sqlite]], [[PostgreSQL|postgresql]] |
* Базы данных: [[MySQL|mysql]], [[SQLite|sqlite]], [[PostgreSQL|postgresql]] |
||
* Сеть: [[CURL|Curl]] и др. |
* Сеть: [[CURL|Curl]] и др. |
||
Строка 64: | Строка 57: | ||
=== Примеры программ === |
=== Примеры программ === |
||
==== Hello, World! ==== |
==== Hello, World! ==== |
||
Используя встроенную библиотеку FreeBASIC: |
Используя встроенную библиотеку FreeBASIC: |
||
Строка 161: | Строка 155: | ||
== Примечания == |
== Примечания == |
||
{{примечания|1|refs= |
{{примечания|1|refs= |
||
<ref name="freebasic.net_1">{{cite web |url=http://freebasic.net/about |title=More about FreeBASIC |publisher=freebasic.net |author= |
<ref name="freebasic.net_1">{{cite web |url=http://freebasic.net/about |title=More about FreeBASIC |publisher=freebasic.net |author= |
||
|date= |description=FreeBASIC - ещё больше нужных функций |lang=en |accessdate=2015-10-14}}</ref> |
|||
<ref name="spaces.ru_1">{{cite web |url=http://spaces.ru/forums/?com_cat_id=115370&id=11928525&link_id=1498806&sid=6687538668213364&tp=1 |title=Объектные диалекты языка Бейсик |publisher=spaces.ru |author=Артем aka Kryeker |date=2012-08-19 |description=Сравнение языков ОП |lang=ru |accessdate=2015-10-14}}</ref> |
|||
}} |
}} |
||
== См. также == |
|||
* [[QB64]] |
|||
== Источники == |
== Источники == |
||
* [http://sourceforge.net/project/showfiles.php?group_id=122342&package_id=159165&release_id=368628 FreeBASIC Manual] |
* [http://sourceforge.net/project/showfiles.php?group_id=122342&package_id=159165&release_id=368628 FreeBASIC Manual]{{ref-en}} |
||
== Ссылки == |
== Ссылки == |
||
* {{Sourceforge|fbc}} |
* {{Sourceforge|fbc}}{{ref-en}} |
||
* [http:// |
* [http://-. Русскоязычный сайт] |
||
* [http://freebasic. |
* [http://freebasic../ Русскоязычный форум] |
||
* [http://fbasic.tk Сайт «FreeBASIC в России»] |
|||
;IDE |
|||
* [http://fbide.freebasic.net FBIde] — IDE для FreeBASIC |
* [http://fbide.freebasic.net FBIde] — IDE для FreeBASIC |
||
* [https://fbedit.svn.sourceforge.net/svnroot/fbedit/Release/FbEdit.zip FbEdit] — ещё одна IDE для FreeBASIC |
* [https://fbedit.svn.sourceforge.net/svnroot/fbedit/Release/FbEdit.zip FbEdit] — ещё одна IDE для FreeBASIC |
||
* [https://github.com/PaulSquires/WinFBE WinFBE] - Современный FreeBASIC IDE для Windows |
|||
{{Диалекты языка программирования Basic}} |
{{Диалекты языка программирования Basic}} |
||
Строка 183: | Строка 180: | ||
[[Категория:Бейсик]] |
[[Категория:Бейсик]] |
||
[[Категория:Компиляторы]] |
[[Категория:Компиляторы]] |
||
[[Категория:Статьи с примерами кода |
[[Категория:Статьи с примерами кода ]] |
||
[[Категория:Свободные компиляторы и интерпретаторы]] |
[[Категория:Свободные компиляторы и интерпретаторы]] |
Текущая версия от 04:56, 17 июля 2024
FreeBASIC | |
---|---|
![]() | |
Класс языка | мультипарадигмальный: императивный, процедурный, структурный, объектно‐ориентированный |
Тип исполнения | компилируемый |
Появился в | 2004 |
Автор | The FreeBASIC Development Team |
Разработчик | The FreeBASIC Development Team |
Расширение файлов |
.bas или .bi |
Выпуск |
1.09.0 [1] (1 января 2022 ) |
Система типов | строгая, статическая |
Диалекты | 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 ) | ||
Репозиторий | 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