Это не официальный сайт wikipedia.org 01.01.2023

PureBasic — Википедия

PureBasic

PureBasic — коммерческий язык программирования высокого уровня, основан на синтаксисе BASIC.

PureBasic
Изображение логотипа
Класс языка императивный, процедурный, структурный
Тип исполнения компилируемый
Появился в 1998 (AmigaOS)
2000 (Windows)
Автор Fantaisie Software
Расширение файлов .pb .pbi .pbp .pbf
Выпуск 6.00 (22 июня 2022; 7 месяцев назад (2022-06-22))
Система типов статическая
Испытал влияние BASIC
Лицензия Проприетарная, коммерческое ПО.
Сайт purebasic.com
ОС AmigaOS, Linux, Windows, MacOS
Логотип Викисклада Медиафайлы на Викискладе

Предназначен для создания кроссплатформенных прикладных программ для AmigaOS, Linux, Microsoft Windows, Windows NT и Mac OS X. Компилятор PureBasic способен компилировать программы в код процессоров IA-32, m68k и PowerPC. Поддерживает компиляцию исполняемых файлов и динамических библиотек. Если не злоупотреблять API операционной системы, то код можно скомпилировать не изменяя его на все поддерживаемые платформы.

Поддерживает разные API: Windows API, MFC (Windows), SDL (Linux) и OpenGL.

Многопроходный компилятор PureBasic состоит из переводчика кода в ассемблер, ассемблера (FASM) и компоновщика. У PureBasic также есть и неплохой отладчик. Так как в компиляторе присутствует ассемблер, есть возможность в коде использовать ассемблерные вставки. Поддерживает наборы символов ASCII и Unicode.

Во все дистрибутивы языка входит IDE, поддающийся конфигурации. В него встроен визуальный конструктор форм для построения графического интерфейса.

В PureBasic встроены стандартные библиотеки для программирования консольного и графического интерфейса, библиотеки для создания 2D (DirectX, OpenGL) и 3D игр (OGRE). Всего насчитывается более 1800 встроенных команд (многие кроссплатформенные).

Язык платный и предоставляются 2 версии: PureBasic Demo и PureBasic Full. PureBasic Demo имеет некоторые ограничения: Нельзя скомпилировать код в котором больше 800 строк кода. Нельзя скомпилировать динамическую библиотеку. Нельзя использовать API операционных систем.

БиблиотекиПравить

PureBasic содержит следующие библиотеки:

Библиотеки общего назначения: (Array, CDAudio, Cipher, Clipboard, Console, Database, Date, Debugger, Desktop, File, FileSystem, Font, Gadget, Help, Image, ImagePlugin, Linked List, Math, Memory, Menu, Misc, Movie, Network, OnError, Packer, Preference, Process, Printer, Requester, Sort, StatusBar, String, SysTray, Thread, Toolbar, Window)

Библиотеки для создания 2D графики: (2D Drawing, Joystick, Keyboard, Module, Mouse, Palette, Sprite & Screen, Sprite3D, Sound, SoundPlugin)

Библиотеки для работы с 3D графикой: (Ogre3D): (Engine3D, Billboard, Camera, Entity, Light, Material, Mesh, Particle, Terrain, Texture)

С помощью библиотеки Library можно взаимодействовать с динамическими библиотеками.

Типы данныхПравить

Тип данных переменной указывается при её первом использовании (и опционально — в дальнейшем), и отделяется от имени точкой. существует набор элементарных типов — .f, .d (числа с плавающей точкой одинарной и двойной точности), .b, .c, .w, .l, .q (целые числа — от однобайтных до 8байтных), .s — строки.

Тип Суффикс Использование памяти Числовой диапазон
Byte .b 1 байт (8 бит) от −128 до +127
Ascii .a 1 байт (8 бит) от 0 до +255
Character .c 1 байт (8 бит) (ascii) от 0 до +255
Word .w 2 байта (16 бит) от −32768 до +32767
Unicode .u 2 байта (16 бит) от 0 до +65535
Character .c 2 байта (16 бит) (unicode) от 0 до +65535
Long .l 4 байта (32 бита) от −2147483648 до +2147483647
Integer .i 4 байта (32 бита) x86 от −2147483648 до +2147483647
Float .f 4 байта (32 бита) В зависимости от соотношения целой и дробной части числа.
Integer .i 8 байт (64 бита) x64 от −9223372036854775808 до +9223372036854775807
Quad .q 8 байт (64 бита) от −9223372036854775808 до +9223372036854775807
Double .d 8 байт (64 бита) В зависимости от соотношения целой и дробной части числа.
String .s Длина строки + 1 байт Нет лимита.
Fixed String .s{длина} Длина строки Нет лимита.


Помимо элементарных типов, пользователь может определить свой тип с помощью конструкции

Structure имя_типа
   имя_поля.тип ;Одиночное поле. Возможно вложение структур.
   имя_поля[количество].тип ;Статические массивы.
   ;...
   ;Опциональная конструкция StructureUnion .. EndStructureUnion позволяет объединить несколько полей в одной области памяти, что иногда требуется для конверсии типов.
   StructureUnion
      имя_типа.тип
      ;...
   EndStructureUnion 
EndStructure

Переменные могут быть одиночными (собственно, стандартные переменные), динамическим массивом (объявляются с помощью ключевого слова Dim имя_переменной.имя_типа(размер1, размер2, …), связанным списком (ключевое слово List имя_переменной.имя_типа()), ассоциативным массивом(в новых версиях языка)(ключевое слово Map имя_переменной.имя_типа())

Примеры программПравить

Классическая программа «Hello, world!»:

С использованием интерфейса командной строки:

If OpenConsole("My first program!") ;Если открылась консоль, то выполняем код.
   Print("Hello, world!") ;Вывод текста на экран.
   Repeat : Until Inkey() = Chr(27) ;Конструкция ждёт нажатия кнопки Escape
   CloseConsole() ;Закрыть консоль.
EndIf ;Конец условия.
End ;Выход из программы.

С использованием графического интерфейса:

MessageRequester("My first program!", "Hello, world!") ;Вызвать диалог.

С использованием Windows API:

MessageBox_(0, "Hello, world!", "My first program!", #MB_OK) ;Вызвать диалог.

Простой калькулятор:

С использованием интерфейса командной строки:

Define var_a.i ;Объявляем переменную первого числа.
Define var_b.i ;Объявляем переменную второго числа.
Define var_action.a ;Объявляем переменную действия.
Define var_out.i ;Объявляем переменную выходного числа.

If OpenConsole("Calculation") ;Если открылась консоль, то выполняем код.
   start: ;Метка start.
   
   Print("A: ")
   var_a = Val(Input()) ;Спрашиваем первое число.
   Print("B: ")
   var_b = Val(Input()) ;Спрашиваем второе число.
   Print("Action: ")
   var_action = Asc(Input()) ;Спрашиваем действие.
   
   Select Chr(var_action) ;Проверяем действие.
      Case "+"
         var_out = var_a + var_b ;Складываем числа.
      Case "-"
         var_out = var_a - var_b ;Вычитаем числа.
      Case "*"
         var_out = var_a * var_b ;Умножаем числа.
      Case "/"
         var_out = var_a / var_b ;Делим числа.
      Case "^"
         var_out = Pow(var_a, var_b) ;Выводим в степень.
   EndSelect ;Конец проверки действия.
   
   PrintN("Result: " + Str(var_out)) ;Выводим результат.
   
   Print("Exit? (Y/N): ") ;Выводим сообщение о выходе.
   If Input() = "N" ;Проверяем, хочет ли пользователь остаться.
      Goto start ;Переходим на метку start.
   EndIf ;Конец условия.
   
   CloseConsole() ;Закрыть консоль.
EndIf ;Конец условия.

End ;Выход из программы.

Примечание: Примеры рассчитаны для версии компилятора 5.11. На старых версиях могут быть ошибки из за разного синтаксиса версий!

Основные этапы развитияПравить

Дата выхода Версия Описание
1 сентября 1999 г. 1.00 Первая версия для AmigaOS.
10 октября 1999 г. 1.10 Полноценная поддержка PowerPC под AmigaOS (WarpOS).
30 ноября 1999 г. 1.20 Встроенный редактор и поддержка библиотек AmigaOS.
9 сентября 2000 г. 1.60 Удалось реализовать парадигму программирования для AmigaOS без потерь в бета-версиях для Microsoft Windows и Linux.
17 декабря 2000 г. 2.00 Final Первая non-beta версия для Microsoft Windows, доступная широкой публике.
4 апреля 2002 г. 3.00 Добавлены новые библиотеки
25 октября 2006 г. 4.00 Beta Стабильная версия для AmigaOS и Linux.
8 мая 2006 г. 4.00 Final Стабильная версия для Microsoft Windows.
9 ноября 2007 г. 4.10 Final Впервые одновременный релиз для всех поддерживаемых платформ: Microsoft Windows, Linux и Mac OS X.
5 ноября 2012 г. 5.00 Версия для Windows (x86 и x64), Linux (x86 и x64) и Mac OS X (x86, x64 и PowerPC).
23 июля 2014 г. 5.30 Реализовано пространство имён.
16 октября 2015 г. 5.40 LTS Обновления версии 5.40 LTS.
25 июля 2016 г. 5.50 Добавлены новые функции для работы с 3D, а также поддержка UNICODE в компиляторе.
2 марта 2017 г. 5.60 Добавлен Gif декодер и многое другое.
12 сентября 2017 г. 5.61 Исправлена часть известных ошибок компилятора и библиотек.
2 января 2019 г. 5.70 LTS Ввод подсистемы QT для Linux, расширенная поддержка кроссплатформенности, внедрение функции поддержки DPI для приложений Windows, добавлены функции HTTPRequest(), HTTPRequestMemory(), UseMySQLDatabase(), добавлены новые функции для работы с 3D
16 августа 2019 г. 5.71 LTS Исправлены ошибки в компиляторе и большинстве библиотек
30 марта 2020 г. 5.72 LTS Исправлены ошибки в компиляторе и большинстве графических библиотек
23 ноября 2020 г. 5.73 LTS Обновление IDE, и большинства встроенных сетевых библиотек
22 июня 2022 г. 6.00 LTS Добавлена поддержка инструкции для процессоров Apple M1, Raspberry 32 и 64 бит, обновлен компилятор C, улучшена поддержка OS Windows 11 (в т.ч. добавлена поддержка high auto DPI), OS X 11 and 12 (x86 версия PB удалена, обновлены важные библиотеки в т.ч. Movie library), для виджетов теперь полная поддержка GTK3 на OS Linux

ЛитератураПравить

  • Willoughby, G. Purebasic: A Beginner's Guide to Computer Programming. — Aardvark Global Publishing, 2006. — ISBN 9781427604286.

СсылкиПравить