QB64 - QB64

QB64
Логотип QB64
Разработчик Роб Галеон, команда QB64
Впервые появился 2007 ; 14 лет назад ( 2007 )
Стабильный выпуск
2.0.1 / 17 октября 2021 г . ; 0 дней назад ( 2021-10-17 )
Операционные системы Microsoft Windows , Linux , macOS
Лицензия Массачусетский технологический институт
Веб-сайт www .qb64 .org
Под влиянием
QuickBASIC , QBASIC

QB64 (первоначально QB32 ) - это компилятор BASIC с собственным хостом для Microsoft Windows , Linux и Mac OS X , разработанный для совместимости с Microsoft QBasic и QuickBASIC . QB64 - это эмиттер C ++ , который интегрирован с компилятором C ++ для обеспечения компиляции с помощью кода C ++ и оптимизации GCC .

QB64 реализует большинство операторов QBasic и может запускать многие программы QBasic, включая игры Microsoft QBasic Gorillas и Nibbles . Кроме того, QB64 был разработан, чтобы содержать IDE, похожую на QBASIC IDE. QB64 также расширяет язык программирования QBASIC, добавляя 64-битные типы данных, а также улучшенную поддержку звука и графики. Он также может имитировать некоторые особенности DOS / x86, такие как доступ мыши INT 33h и несколько таймеров.

Начиная с версии 2.0, QB64 теперь предлагает возможности отладки с новой метакомандой $ DEBUG .

История

QB64 изначально был скомпилирован с QuickBASIC 4.5. После значительных усовершенствований разработчик Роб Галеон столкнулся с ограничениями памяти QuickBASIC и переключился на Microsoft Basic PDS 7.1, который решил эти проблемы на короткое время. После версии 0.63 QB64 смог скомпилировать себя, поэтому обычные ограничения памяти больше не применялись.

Что касается импульса для QB64, Галеон сказал:

Я начал видеть потребность в QB64, когда стало ясно, что внедрение VISTA нанесет вред QBASIC, превратив его в древний язык, работающий только на эмуляторах, которые дают мало / никакие шансы воспользоваться преимуществами современных функций на компьютерах. Фактическое кодирование QB64 началось в начале этого года, и с тех пор QB64 стабильно продвигается вперед. У меня уже был опыт написания языков программирования, поэтому я заранее знал, какие проблемы меня ждут.

Синтаксис

Синтаксис QB64 полностью обратно совместим с QuickBASIC. Номера строк не требуются, а операторы заканчиваются символом новой строки или разделяются двоеточием ( :).

Пример "Hello, World!" программа :

PRINT "Hello, World!"

Пример эмуляции памяти VGA QB64 для совместимости:

CLS
S$ = "Hello, World!"
DEF SEG = &HB800 'sets the segment to video memory
FOR I = 1 TO LEN(S$)
    POKE 160 + (I - 1) * 2, ASC(MID$(S$, I, 1))'character
NEXT
DEF SEG 'reset the segment to default

Пример того, как QB64 разрешает аудиофайлы:

sound_effect& = _SNDOPEN("sound.wav") 'WAV, OGG or MP3
_SNDPLAY sound_effect&

Пример того, как QB64 разрешает файлы изображений:

SCREEN _NEWIMAGE(800, 600, 32) 'creates a 32-bit screen
imagename& = _LOADIMAGE("image__name.png") 'BMP, JPG, PNG, etc.
_PUTIMAGE (0, 0), imagename&
_FREEIMAGE imagename& 'release assigned memory

Пример того, как QB64 использует несколько таймеров:

t1 = _FREETIMER
t2 = _FREETIMER
ON TIMER(t1, 1) GOSUB Timer.Trap 'the code following the Timer.Trap label will be run every 1 second

ON TIMER(t2, .5) mySub 'QB64 can also trigger a SUB procedure with TIMER;
'                       in this case mySUB will be triggered every 500 milliseconds

'activate timers:
TIMER(t1) ON
TIMER(t2) ON

DO 'go into an infinite loop until the window is closed
    _LIMIT 1 'run the main loop at 1 cycle per second, to show how timers are independent from main program flow
LOOP

Timer.Trap:
PRINT "1s; ";
RETURN

SUB mySub
    PRINT "500ms; ";
END SUB

Расширения QBASIC

Расширенные команды QB64 начинаются с подчеркивания , чтобы избежать конфликтов с любыми именами, которые могут использоваться в программе QuickBASIC. Начиная с версии 1.4, префикс подчеркивания можно удалить с помощью метакоманды $ NOPREFIX . QB64 расширяет язык QuickBASIC несколькими способами. Он добавляет новые типы данных , в том числе _BIT, _BYTE, _INTEGER64и _FLOAT, а также беззнаковых типов данных. Новые типы данных имеют суффиксы, как и традиционные типы данных BASIC. QB64 также включает в себя аудио- библиотеку, которая позволяет воспроизводить наиболее распространенные аудиоформаты, включая файлы MP3 , Ogg Vorbis и WAV, а также библиотеки, позволяющие пользователям использовать графику с более высоким разрешением, чем 640 × 480, предлагаемую QuickBASIC, использовать другие шрифты и создавать изображения в Форматы BMP , PNG и JPEG . Он также позволяет использовать 32-битные цвета вместо изначально предложенных ограниченных 256 (или 16, в зависимости от того, что). Программисту также не нужно указывать, какие библиотеки программирования включать, поскольку QB64 делает это автоматически. Программист имеет возможность включить собственную библиотеку с помощью команды $ INCLUDE, как это сделал QuickBASIC .

Еще одна важная функция, которая была добавлена, - это сеть. Первоначально это позволяло открывать поток TCP / IP, который можно было читать и записывать с помощью инструкций Input # / Print #. Этот режим имеет свой собственный запатентованный формат инкапсуляции пакетов, который, будучи простым в использовании с QBasic, означал, что его можно было использовать только для связи с другими программами QB64 или серверными бэкэндами с пользовательскими интерфейсами, созданными специально для приложения. Более поздние версии добавляют GET # и PUT # для чтения и записи необработанных байтов из потока. Это позволяет реализовать стандартные протоколы, такие как smtp и http.

Преимущества QB64

  • Он поддерживает различные форматы файлов, а также обеспечивает доступ к буферу обмена.
  • QB64 дает мгновенный доступ к 32-битным графическим файлам (самые популярные форматы).
  • QB64 дает мгновенный доступ к нескольким аудиоформатам.
  • Он поддерживается в большинстве современных операционных систем, поэтому эмуляция не требуется.

Библиотеки

QB64 интегрирует FreeGLUT для графики и текста.

Разрабатываемая ветка репозитория, размещенная на GitHub , часто обновляется исправлениями и улучшениями, которые в конечном итоге станут следующей стабильной версией. Сборки для разработки также предлагаются пользователям через официальный сайт для бета-тестирования.

QB64 также может использовать библиотеки DLL для заголовков Windows и C ++ с блоком DECLARE LIBRARY. Пользователи также могут получить доступ к файлам заголовков C для выполнения функций C.

использованная литература

внешние ссылки