QB64 - QB64
Разработчик | Роб Галеон, команда QB64 |
---|---|
Впервые появился | 2007 |
Стабильный выпуск | 2.0.1 / 17 октября 2021 г .
|
Операционные системы | Microsoft Windows , Linux , macOS |
Лицензия | Массачусетский технологический институт |
Веб-сайт | www |
Под влиянием | |
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.