PureBasic

PureBasic
PureBasic IDE 5.10.png
Класс языка императивный, процедурный, структурный
Тип исполнения компилируемый
Появился в 1998
Автор Fantaisie Software
Расширение файлов .pb .pbi .pbp .pbf
Выпуск 5.71 (16 августа 2019 г.)
Система типов статическая
Испытал влияние 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 .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 г. PureBasic 1.00 Первая версия для AmigaOS.
10 октября 1999 г. PureBasic 1.10 Полноценная поддержка PowerPC под AmigaOS (WarpOS).
30 ноября 1999 г. PureBasic 1.20 Встроенный редактор и поддержка библиотек AmigaOS.
9 сентября 2000 г. PureBasic 1.60 Удалось реализовать парадигму программирования для AmigaOS без потерь в бета-версиях для Microsoft Windows и Linux.
17 декабря 2000 г. PureBasic 2.00 Final Первая non-beta версия для Microsoft Windows, доступная широкой публике.
25 октября 2006 г. PureBasic 4.00 Beta Стабильная версия для AmigaOS и Linux.
8 мая 2006 г. PureBasic 4.00 Final Стабильная версия для Microsoft Windows.
9 ноября 2007 г. PureBasic 4.10 Final Впервые одновременный релиз для всех поддерживаемых платформ: Microsoft Windows, Linux и Mac OS X.
5 ноября 2012 г. PureBasic 5.00 Версия для Windows (x86 и x64), Linux (x86 и x64) и Mac OS X (x86, x64 и PowerPC).
23 июля 2014 г. PureBasic 5.30 Реализовано пространство имён.
16 октября 2015 г. PureBasic 5.40 LTS Обновления версии 5.40 LTS.
25 июля 2016 г. PureBasic 5.50 Добавлены новые функции для работы с 3D, а также поддержка UNICODE в компиляторе.
2 марта 2017 г. PureBasic 5.60 Добавлен Gif деер и многое другое.
12 сентября 2017 г. PureBasic 5.61 Исправлена часть известных ошибок компилятора и библиотек.
2 января 2019 г. PureBasic 5.70 LTS Ввод подсистемы QT для Linux, расширенная поддержка кроссплатформенности, внедрение функции поддержки DPI

для приложений Windows, добавлены функции HTTPRequest(), HTTPRequestMemory(), UseMySQLDatabase(),

добавлены новые функции для работы с 3D

16 августа 2019 г. PureBasic 5.71 Исправлены ошибки в компиляторе и большинстве библиотек

Литература[ | ]

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

Ссылки[ | ]