This article includes a list of general references, but it lacks sufficient corresponding inline citations. (June 2011) |
Парадигма | Структурированный , императивный , процедурный |
---|---|
Семья | БАЗОВЫЙ |
Разработано | Программное обеспечение Fantaisie |
Разработчик | Программное обеспечение Fantaisie |
Впервые появился | 1998 (1998) |
Стабильный релиз | 6.12 LTS / 13 сентября 2024 г. (2024-09-13) |
ОС | Windows , Linux , macOS , ОС Raspberry Pi , AmigaOS |
Лицензия | Пробная версия |
Расширения имени файла | .pb, .pbi, .pbf, .pbp |
Веб-сайт | www.purebasic.com |
PureBasic — это коммерчески распространяемый процедурный язык программирования и интегрированная среда разработки на основе BASIC , разработанная Fantaisie Software для Windows , Linux и macOS . Доступна версия для Amiga , хотя ее поддержка прекращена, а некоторые ее части выпущены как open-source . Первый публичный релиз PureBasic для Windows состоялся 17 декабря 2000 года. С тех пор он постоянно обновляется.
PureBasic имеет "модель пожизненной лицензии". Как указано на сайте, первый пользователь PureBasic (зарегистрировавшийся в 1998 году) по-прежнему имеет бесплатный доступ к новым обновлениям, и это не изменится. [1]
PureBasic компилируется напрямую в наборы инструкций IA-32 , x86-64 , PowerPC или 680x0 , генерируя небольшие автономные исполняемые файлы и библиотеки DLL , которым не нужны библиотеки времени выполнения, кроме стандартных системных библиотек. Программы, разработанные без использования платформенно-специфичных интерфейсов прикладного программирования (API), можно легко построить из того же исходного файла с небольшими изменениями или без них.
PureBasic поддерживает встроенный ассемблер , что позволяет разработчику включать команды ассемблера FASM в исходный код PureBasic, используя переменные, объявленные в исходном коде PureBasic, что позволяет опытным программистам повысить скорость критичных по скорости разделов кода. PureBasic поддерживает и интегрировал OGRE 3D Environment. Другие 3D-среды, такие как Irrlicht Engine, неофициально поддерживаются.
PureBasic — это собственный кроссплатформенный 32- и 64-битный компилятор BASIC. В настоящее время поддерживаются системы Windows, Linux, macOS. Версия AmigaOS является устаревшей и имеет открытый исходный код. Компилятор создает собственные исполняемые файлы, а синтаксис PureBasic прост и понятен, сравним с обычным C без скобок и с собственной обработкой строк Unicode и большой библиотекой встроенных функций поддержки. [2] Он может компилировать консольные приложения, [3] приложения с графическим интерфейсом пользователя [4] и файлы DLL. [5]
Следующая строка кода PureBasic создаст автономный исполняемый файл x86 (4,5 КБ (4608 байт) в версии для Windows), который отображает окно сообщения с текстом « Hello World ».
MessageRequester ( "Message Box" , "Hello World" )
А следующий вариант того же кода, который вместо этого использует встроенный вызов Windows API без необходимости в объявлениях или других внешних ссылках, создаст еще меньший автономный исполняемый файл x86 размером 2,0 КБ (2048 байт) для Windows.
MessageBox_ ( 0 , "Привет, мир" , "Окно сообщения" , 0 )
Ниже представлена консольная версия примера Hello World.
OpenConsole () ; Открыть окно консоли. Print ( "Hello, World!" ) Delay ( 5000 ) ; Пауза на 5 секунд
PureBasic — это язык «второго поколения BASIC» со структурированными условными операторами и циклами, а также поддерживаемым программированием, ориентированным на процедуры. Пользователю не обязательно использовать процедуры, поэтому программист может выбрать стиль кодирования, включающий Goto, Gosub Label и Return .
Ниже приведен пример процедуры сортировки массива, хотя SortArray теперь является встроенной функцией PureBasic.
Процедура bubbleSort ( Массив a ( 1 )) Защищено i , itemCount , hasChanged itemCount = ArraySize ( a ()) Повторить hasChanged = # Ложь Количество предметов - 1 Для i = 0 Для itemCount Если а ( я ) > а ( я + 1 ) Поменять местами a ( i ), a ( i + 1 ) hasChanged = # Истина EndIf Следующий Пока hasChanged = # Ложь КонецПроцедуры
Ниже приведен пример программы, отображающей большой текстовый редактор с двумя пунктами меню.
; Создать окно : OpenWindow ( 0 , #PB_Ignore , #PB_Ignore , 800 , 600 , " Простой текстовый редактор " , #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget ) ;Добавить 2 меню: CreateMenu ( 0 , WindowID ( 0 )) MenuItem ( 1 , "&OK" ) MenuItem ( 2 , "&Cancel" ) ; Добавить редактор : EditorGadget ( 0,0,0,0,0,0 ) SetGadgetFont ( 0 , LoadFont ( 0 , " Courier New " , 10 ) ) ;Обрабатывать сообщения окна до закрытия: Повторить Select WaitWindowEvent () Случай # PB_Event_Menu Select EventMenu () Случай 1 : MessageRequester ( "OK нажато напрямую или с помощью мнемоники '&'." , GetGadgetText ( 0 )) Случай 2 : Break EndSelect Случай # PB_Event_SizeWindow : ResizeGadget ( 0 , 0 , 0 , WindowWidth ( 0 , # PB_Window_InnerCoordinate ), WindowHeight ( 0 , # PB_Window_InnerCoordinate )) Случай # PB_Event_CloseWindow : Break EndSelect ForEver
PureBasic не экранирует двойные кавычки в строках, поэтому их необходимо объединять с помощью Chr(34) .
Фред, разработчик PureBasic, заявил, что PureBasic никогда не будет объектно-ориентированным . [6] Однако многочисленные пользователи создали объектно-ориентированные системы поддержки. [7] [8] [9]
Тип данных переменной указывается при первом использовании (и опционально - в дальнейшем), и отделяется от имени точки. Существует набор базовых типов - .f, .d (числа с плавающей точкой и двойные числа), .b, .c, .w, .l, .q (целые числа - от однобайтовых до 8-байтовых), .s - строки.
Тип | Суффикс | Использование памяти | Числовой диапазон |
---|---|---|---|
Байт | б | 1 байт (8 бит) | −128 ... +127 |
Ascii | а | 1 байт (8 бит) | 0 ... +255 |
Характер | с | 1 байт (8 бит) (ascii) | 0 ... +255 |
Слово | ж | 2 байта (16 бит) | −32768 ... +32767 |
Юникод | ты | 2 байта (16 бит) | 0 ... +65535 |
Характер | с | 2 байта (16 бит) (юникод) | 0 ... +65535 |
Длинный | л | 4 байта (32 бита) | −2147483648 ... +2147483647 |
Целое число | я | 4 байта (32 бита) x86 | −2147483648 ... +2147483647 |
Плавать | ф | 4 байта (32 бита) | В зависимости от соотношения десятичных чисел. |
Целое число | я | 8 байт (64 бита) x64 | −9223372036854775808 ... +9223372036854775807 |
Квад | д | 8 байт (64 бита) | −9223372036854775808 ... +9223372036854775807 |
Двойной | г | 8 байт (64 бита) | В зависимости от соотношения десятичных чисел. |
Нить | с | (Длина строки + 1) * SizeOf (Символ) | Нет ограничений. |
Фиксированная строка | s{длина } | (Длина строки) * SizeOf(Символ) | Нет ограничений. |
В дополнение к основным типам пользователь может определить тип конструкции через
Имя_типа_структуры field_name.type ; Одно поле. Возможно, присоединение структур. field_name[count].type ; Статические массивы. ; ... ; Необязательная конструкция StructureUnion.. EndStructureUnion позволяет ; для объединения нескольких полей в одну область памяти ; это иногда требуется для типов преобразования. СтруктураСоюз имя_типа.тип ; ... EndStructureUnionКонецСтруктуры
Переменные могут быть одиночными (фактически, стандартные переменные), динамическим массивом (объявленным с помощью ), связанным списком ( ), ассоциативным массивом (в новых версиях языка) ( )Dim var_name.type_name (size1, size2, ... )
List() var_name.type_name
Map var_name.type_name()
PureBasic имеет собственный конструктор форм , помогающий создавать формы для приложений, но также доступны и другие сторонние решения. [10] [11] [12] Оригинальный неинтегрированный визуальный конструктор был заменен новым интегрированным конструктором форм 14 февраля 2013 года. [13]
PureBasic предоставляет пользователям онлайн-форум, где они могут задавать вопросы и делиться знаниями. 6 мая 2013 года на форуме на английском языке было 4769 участников, и он содержал 44043 темы, включающие 372200 сообщений с 17 мая 2002 года. [14]
Многочисленные сайты по обмену кодом показывают, что PureBasic используется для быстрого и простого создания инструментов [15] и игр [16] , а также для обмена большими объемами открытого исходного кода. [17]