PureBasic

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

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

Предназначен для создания кроссплатформенных прикладных программ для 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.b1 байт (8 бит)от −128 до +127
Ascii.a1 байт (8 бит)от 0 до +255
Character.c1 байт (8 бит) (ascii)от 0 до +255
Word.w2 байта (16 бит)от −32768 до +32767
Unicode.u2 байта (16 бит)от 0 до +65535
Character.c2 байта (16 бит) (unicode)от 0 до +65535
Long.l4 байта (32 бита)от −2147483648 до +2147483647
Integer.i4 байта (32 бита) x86от −2147483648 до +2147483647
Float.f4 байта (32 бита)В зависимости от соотношения целой и дробной части числа.
Integer.i8 байт (64 бита) x64от −9223372036854775808 до +9223372036854775807
Quad.q8 байт (64 бита)от −9223372036854775808 до +9223372036854775807
Double.d8 байт (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.

Ссылки