PureBasic

PureBasic - діалект мови BASIC і комерційний компілятор для нього.

Призначений для створення кроссплатформенних додатків для AmigaOS, Linux, Microsoft Windows, Windows NT і Mac OS X. Розроблений компанією Fantaisie Software.

Програми, написані на PureBasic компілюються безпосередньо в код процесорів IA-32, m68k і PowerPC, при цьому виходять невеликі автономні виконувані файли і динамічні бібліотеки. Якщо не використовувати специфічні API операційних систем, один файл вихідного коду може бути скомпільований для всіх підтримуваних операційних систем з невеликими модифікаціями або взагалі без них.

Є можливість використання бібліотек Windows API (32 біт) і MFC ( Windows); SDL ( Linux), OpenGL (у всіх підтримуваних операційних системах).

Також PureBasic дозволяє використовувати асемблерні "включення", так як компілятор - FASM.

При створенні програми можна вибрати, чи буде використовуватися стандартний набір символів ( ASCII), або розширений ( Unicode)

PureBasic (починаючи з версії 3.60 для Windows) має також Visual Designer [1], який може допомогти в створенні вікон.

Має більше 1100 вбудованих (багато - Кросплатформені) команд, додатково до цього є прямий доступ до команд API AmigaOS, Microsoft Windows, Linux або Mac OS X. Демонстраційна версія надається безкоштовно, і дозволяє компілювати програми тільки якщо в них менше 800 рядків коду.


1. Бібліотеки

Містить кілька десятків вбудованих бібліотек загального призначення (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 Drawing, Joystick, Keyboard, Module, Mouse, Palette, Sprite & Screen, Sprite3D, Sound, SoundPlugin), з тривимірною графікою, через OGRE (Engine3D, Billboard, Camera, Entity, Light, Material, Mesh, Particle, Terrain, Texture).

За допомогою бібліотеки Library може взаємодіяти з довільними DLL-бібліотеками.


2. Типи даних

Тип даних змінної вказується при її першому використанні (та опціонально - надалі), і відокремлюється від імені крапкою. існує набір елементарних типів -. 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 імя_переменной.імя_тіпа ())


3. Приклади програм

Наступний рядок коду створить невелике (3,072 байт) додаток для Microsoft Windows.

 MessageRequester("","Hello World") 
"Hello World"

Аналогічно, замість вбудованої команди MessageRequester можна використовувати MessageBox з WinAPI:

  MessageBox_(0,"Hello World","",0) 

Ця програма займає всього 2 кілобайт, але виконатися зможе тільки в ОС Microsoft Windows.

Наступний приклад демонструє як створювати вікно, додати в нього елементи, створити цикл вікна і виконувати прості математичні операції. Які б значення користувач не ввів у два поля, праворуч відображається їх сума. Цей код компілюється в невеликий додаток (15 КБ), яке в залежності від використання компілятора, може бути запущено на Windows, Linux, Mac OS X або AmigaOS.

 OpenWindow(1,300,300,100,100,"Title",#PB_Window_SystemMenu) CreateGadgetList(WindowID(1)) StringGadget(1,10,10,50,20,"") StringGadget(2,10,40,50,20,"") TextGadget(3,80,30,50,20,"") Repeat ev=WaitWindowEvent() If ev=#PB_Event_Gadget op1=Val(GetGadgetText(1)) op2=Val(GetGadgetText(2)) SetGadgetText(3,Str(op1+op2)) EndIf Until ev=#PB_Event_CloseWindow End 
Підсумовуємо числа

Примітка: для версій компілятора вище 4.2 інструкція CreateGadgetList (WindowID (1)) викличе попередження про відсутність в ній потреби.


4. Основні етапи розвитку

  • 23 травня 2008 р. - PureBasic v4.20 для всіх підтримуваних платформ крім AmigaOS.
  • 1 грудня 2009 р. - Вийшла версія 4.40 для Windows (x86 і x64), Linux (x86 і x64) і MacOS X (x86 і PowerPC)
  • 7 червня 2010 р. - Вийшла версія 4.50 Revision 1253 для Windows (x86 і x64), Linux (x86 і x64) і MacOS X (x86 і PowerPC)
  • 7 листопада 2011 р. - Вийшла версія 4.60 для Windows (x86 і x64), Linux (x86 і x64) і MacOS X (x86 і PowerPC)
  • 21 травня 2012 р. - Вийшла версія 4.61 для Windows (x86 і x64), Linux (x86 і x64) і MacOS X (x86 і PowerPC)
  • 5 листопада 2012 р. - Вийшла версія 5.00 для Windows (x86 і x64), Linux (x86 і x64) і MacOS X (x86, x64 і PowerPC)