Открыть сервис

QB64

QB64 — это бесплатный компилятор и среда разработки, ориентированный на язык программирования BASIC, совместимый с диалектами QuickBASIC и QBASIC. Он позволяет запускать и создавать программы, написанные для этих языков, на современных операционных системах (Windows, Linux, macOS), а также предоставляет расширенные возможности для работы с графикой, звуком и вводом-выводом.

История

Проект QB64 был начат в 2007 году программистом под псевдонимом Galleon. Первоначальная цель заключалась в создании компилятора, который мог бы исполнять код, написанный для QuickBASIC, без изменений, но при этом работал бы в 64-разрядных средах, где оригинальный QuickBASIC (16-разрядное приложение) не запускается. Первая публичная версия, QB64 1.0, была выпущена в 2010 году. Разработка велась на C++ с использованием библиотек SDL (Simple DirectMedia Layer) для кроссплатформенной работы с графикой и звуком. В 2022 году проект был переименован в QB64-PE (Phoenix Edition) после того, как исходный код был форкнут и передан новой команде разработчиков, которая продолжила его поддержку и развитие.

Архитектура и принцип работы

QB64 не является интерпретатором, как QBASIC, а представляет собой компилятор, который транслирует исходный код на BASIC в промежуточный код на C++, а затем компилирует его с помощью стандартного компилятора C++ (например, GCC или MinGW). Это обеспечивает высокую производительность исполняемых файлов и возможность использования системных библиотек.

Компиляция

Процесс компиляции состоит из двух этапов:

  1. Трансляция: Исходный код на BASIC (с расширением .bas) преобразуется в код на C++.
  2. Компиляция: Полученный C++ код компилируется в исполняемый файл (.exe на Windows, бинарный файл на Linux/macOS).

Среда разработки (IDE)

QB64 поставляется с интегрированной средой разработки (IDE), которая внешне напоминает классическую среду QBASIC. Она включает в себя:

  • Текстовый редактор с подсветкой синтаксиса.
  • Встроенный отладчик.
  • Систему подсказок (IntelliSense) для ключевых слов и функций.
  • Возможность запуска программы прямо из редактора.

Ключевые особенности и отличия от QuickBASIC

QB64 сохраняет обратную совместимость с большинством программ, написанных для QuickBASIC 4.5 и QBASIC, но добавляет множество новых возможностей, недоступных в оригинале.

Совместимость

  • Поддерживается синтаксис, операторы и функции QuickBASIC (например, DIM, IF...THEN...ELSE, FOR...NEXT, GOTO, SUB, FUNCTION).
  • Работают графические режимы, включая SCREEN 0-13, и операторы PSET, LINE, CIRCLE, DRAW.
  • Поддерживается работа с файлами, включая последовательный и произвольный доступ.

Расширенные возможности

  • 64-разрядная поддержка: Программы могут использовать более 64 КБ памяти, что было ограничением в 16-разрядном QuickBASIC.
  • Современная графика: Поддержка 32-битного цвета (RGBA), аппаратного ускорения (через OpenGL), сглаживания (anti-aliasing), прозрачности (alpha-blending) и работы с изображениями в форматах PNG, JPEG, BMP, GIF.
  • Звук: Воспроизведение звуковых файлов (WAV, MP3, OGG), синтез звука, работа с MIDI.
  • Сеть: Функции для работы с сокетами (TCP/UDP), что позволяет создавать сетевые приложения.
  • Работа с памятью: Доступ к указателям, работа с блоками памяти, что даёт возможность писать низкоуровневый код.
  • Многопоточность: Поддержка параллельного выполнения кода с помощью операторов _THREAD и _THREADEND.
  • Современные конструкции: Включены операторы для работы с массивами (например, REDIM _PRESERVE), перечисления (ENUM), пользовательские типы (TYPE), поддержка Unicode.
  • Встраивание C++ кода: Возможность вставлять фрагменты кода на C++ непосредственно в программу на BASIC с помощью оператора $INCLUDE, что позволяет использовать библиотеки C++.

Пример программы

Ниже приведён пример программы на QB64, которая выводит окно с движущимся кругом:

```basic SCREEN _NEWIMAGE(640, 480, 32) ' Создаём графическое окно 640x480 с 32-битным цветом _TITLE "QB64 Demo" ' Устанавливаем заголовок окна

x = 100 y = 100 dx = 2 dy = 2

DO CLS ' Очищаем экран CIRCLE (x, y), 50, _RGB(255, 0, 0) ' Рисуем красный круг PAINT (x, y), _RGB(255, 0, 0) ' Заливаем его x = x + dx y = y + dy IF x < 50 OR x > 590 THEN dx = -dx ' Отражение от стенок IF y < 50 OR y > 430 THEN dy = -dy _DISPLAY ' Обновляем экран _LIMIT 60 ' Ограничиваем частоту кадров до 60 FPS LOOP UNTIL _KEYHIT = 27 ' Выход по нажатию ESC ```

Применение

QB64 используется в нескольких областях:

  • Образование: Благодаря простоте синтаксиса BASIC, QB64 часто применяется для обучения основам программирования, особенно в школах и на начальных курсах.
  • Ретрогейминг: Разработка и портирование старых игр, написанных на QuickBASIC, на современные платформы.
  • Создание небольших утилит: Быстрая разработка инструментов для автоматизации задач, обработки данных, работы с файлами.
  • Хобби-программирование: Энтузиасты создают на QB64 игры, демосцены, визуализации и другие проекты, сочетая старый синтаксис с новыми технологиями.

Критика и ограничения

  • Устаревший синтаксис: Язык BASIC, особенно в его диалекте QuickBASIC, считается устаревшим и не соответствует современным стандартам программирования (например, отсутствие строгой типизации, структур исключений, объектно-ориентированного программирования в классическом виде).
  • Размер исполняемых файлов: Из-за того, что в каждый исполняемый файл встраивается среда выполнения (runtime), размер файлов может быть относительно большим (несколько мегабайт) даже для простых программ.
  • Ограниченная поддержка сообщества: По сравнению с такими языками, как Python или C++, сообщество QB64 невелико, что может затруднять поиск готовых библиотек и решений.
  • Отсутствие нативной поддержки GUI: Создание оконных интерфейсов (кнопки, меню) требует либо ручного программирования с использованием графических функций, либо подключения сторонних библиотек.

См. также

  • BASIC
  • QuickBASIC
  • QBASIC
  • FreeBASIC

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →