Interested Article - PureBasic
- 2020-08-29
- 1
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 г. | 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 .
Ссылки
- — сайт разработчика.
- от 8 декабря 2014 на Wayback Machine - Русскоязычное сообщество
- - PureBasic — The Perfect Cross-Platform & Native Development Language
- в каталоге ссылок Curlie (dmoz)
- 2020-08-29
- 1