QB64
Deweloper | Rob Galleon, zespół QB64 |
---|---|
Po raz pierwszy pojawiły się | 8 września 2007 |
Wersja stabilna | 2.0.2 / 7 listopada 2021 r
|
system operacyjny | Microsoft Windows , Linux , macOS |
Licencja | MIT |
Strona internetowa | |
Pod wpływem | |
QuickBASIC , QBASIC |
QB64 (pierwotnie QB32 ) to samodzielny kompilator języka BASIC dla systemów Microsoft Windows , Linux i Mac OS X , zaprojektowany tak, aby był kompatybilny z Microsoft QBasic i QuickBASIC . QB64 to emiter C++ , który jest zintegrowany z kompilatorem C++ w celu zapewnienia kompilacji za pomocą kodu C++ i optymalizacji GCC .
QB64 implementuje większość instrukcji QBasic i może uruchamiać wiele programów QBasic, w tym gry Microsoft QBasic Gorillas i Nibbles . Co więcej, QB64 został zaprojektowany tak, aby zawierał IDE przypominające QBASIC IDE. QB64 rozszerza także język programowania QBASIC o 64-bitowe typy danych, a także lepszą obsługę dźwięku i grafiki. Może także emulować niektóre funkcje specyficzne dla DOS/x86, takie jak INT 33h i wiele timerów.
Od wersji 2.0 QB64 oferuje teraz możliwości debugowania za pomocą nowej metakomendy $DEBUG .
Historia
QB64 został pierwotnie skompilowany z QuickBASIC 4.5. Po znaczącym rozwoju Rob Galleon, programista, napotkał trudności związane z ograniczeniami pamięci QuickBASIC-a i przeszedł na Microsoft Basic PDS 7.1, co na krótki czas rozwiązało te problemy. Po wersji 0.63 QB64 był w stanie się skompilować , więc konwencjonalne ograniczenia pamięci nie miały już zastosowania.
Jeśli chodzi o impuls dla QB64, Galleon powiedział:
Zacząłem dostrzegać potrzebę QB64, kiedy stało się jasne, że wprowadzenie VISTA sparaliżuje QBASIC, sprowadzając go do starożytnego języka, który można uruchomić tylko na emulatorach, które dają niewielkie/żadne szanse na wykorzystanie nowoczesnych funkcji komputerów. Właściwe kodowanie QB64 rozpoczęło się na początku tego roku i od tego czasu QB64 poczyniło stałe postępy. Miałem już doświadczenie w pisaniu języków programowania, więc z góry wiedziałem, jakie wyzwania mnie czekają.
Składnia
Składnia QB64 została zaprojektowana tak, aby była całkowicie kompatybilna wstecz z QuickBASIC-iem. Numery linii nie są wymagane, a instrukcje są kończone znakami nowej linii lub oddzielane dwukropkami ( :
).
Przykład „Hello, World!” program to:
DRUKUJ „Witaj, świecie!”
Przykład emulacji pamięci VGA QB64 w celu zapewnienia kompatybilności:
CLS S$ = „Witaj, świecie!” DEF SEG = & HB800 'ustawia segment na pamięć wideo FOR I = 1 TO LEN ( S$ ) POKE 160 + ( I - 1 ) * 2 , ASC ( MID$ ( S$ , I , 1 )) 'znak NEXT DEF SEG 'zresetuj segment do ustawień domyślnych
Przykład tego, jak QB64 umożliwia pliki audio:
sound_effect& = _SNDOPEN ( "sound.wav" ) 'WAV, OGG lub MP3 _SNDPLAY sound_effect&
Przykład tego, jak QB64 umożliwia pliki obrazów:
0 0
SCREEN _NEWIMAGE ( 800 , 600 , 32 ) 'tworzy 32-bitową nazwę obrazu ekranu& = _LOADIMAGE ( "image__name.png" ) 'BMP, JPG, PNG itp. _PUTIMAGE ( , ), nazwa obrazu& _FREEIMAGE nazwa obrazu& 'zwolnij przypisaną pamięć
Przykład wykorzystania wielu timerów przez QB64:
t1 = _FREETIMER t2 = _FREETIMER NA TIMERZE ( t1 , 1 ) GOSUB Timer . Trap 'kod następujący po etykiecie Timer.Trap będzie uruchamiany co 1 sekundę ON TIMER ( t2 , .5 ) mySub 'QB64 może również wywołać procedurę SUB za pomocą TIMER; ' w tym przypadku mySUB będzie uruchamiany co 500 milisekund 'aktywuj timery: TIMER ( t1 )
ON TIMER ( t2 ) ON DO 'przejdź do nieskończonej pętli, aż okno się zamknie _LIMIT 1 'uruchom główną pętlę z szybkością 1 cyklu na sekundę, aby pokazać, jak timery są niezależne od głównego przebiegu programu LOOP Timer . Pułapka: WYDRUKUJ „1s;” ; POWRÓT SUB mySub PRINT "500ms; " ; KONIEC POD
Rozszerzenia do QBASIC-a
Rozszerzone polecenia QB64 zaczynają się od podkreślenia , aby uniknąć konfliktów z nazwami, które mogą być użyte w programie QuickBASIC. Począwszy od wersji 1.4, przedrostek podkreślenia można usunąć za pomocą metakomendy $NOPREFIX . QB64 rozszerza język QuickBASIC na kilka sposobów. Dodaje nowe typy danych , w tym _BIT
, _BYTE
, _INTEGER64
i _FLOAT
, a także typy danych bez znaku . Nowe typy danych mają przyrostki podobnie jak tradycyjne typy danych BASIC. QB64 zawiera również bibliotekę audio , która umożliwia odtwarzanie najpopularniejszych formatów audio, w tym plików MP3 , Ogg Vorbis i WAV , a także biblioteki umożliwiające użytkownikom korzystanie z grafiki o wyższej rozdzielczości niż 640×480 oferowanej przez QuickBASIC, używanie różnych czcionek i kreślenie obrazów w formacie BMP , PNG i JPEG formaty. Umożliwia także użycie kolorów 32-bitowych w przeciwieństwie do pierwotnie oferowanych ograniczonych 256 (lub 16, w zależności) kolorów. Programista nie musi także określać, które biblioteki programistyczne ma uwzględnić, ponieważ QB64 robi to automatycznie. Programista ma możliwość dołączenia własnej biblioteki za pomocą $INCLUDE, tak jak zrobił to QuickBASIC .
Kolejną istotną funkcją, która została dodana, jest obsługa sieci. Początkowo umożliwiało to otwarcie strumienia TCP/IP, który można było odczytywać i zapisywać przy użyciu Wejście#/Print# . Tryb ten ma swój własny, zastrzeżony format enkapsulacji pakietów, który choć jest łatwy w użyciu z QBasic, oznacza, że może być używany tylko do komunikacji z innymi programami QB64 lub backendami serwerów z niestandardowymi interfejsami stworzonymi specjalnie dla aplikacji. Późniejsze wersje dodają GET# i PUT# do odczytu i zapisu surowych bajtów ze strumienia. Umożliwia to natywne implementacje standardowych protokołów, takich jak smtp i http.
Zalety QB64
- Obsługuje różne formaty plików, a także zapewnia dostęp do schowka.
- QB64 zapewnia natychmiastowy dostęp do 32-bitowych plików graficznych (najpopularniejsze formaty).
- QB64 zapewnia natychmiastowy dostęp do kilku formatów audio.
- Jest obsługiwany przez większość nowoczesnych systemów operacyjnych, więc nie jest wymagana emulacja.
Biblioteki
QB64 integruje FreeGLUT ze względu na grafikę i tekst.
Gałąź rozwojowa repozytorium hostowanego na GitHubie jest często aktualizowana o poprawki i ulepszenia, które ostatecznie staną się kolejną stabilną wersją. Wersje rozwojowe są również oferowane za pośrednictwem oficjalnej strony internetowej, aby użytkownicy mogli przetestować wersję beta.
QB64 może także używać bibliotek DLL dla nagłówków Windows i C++ z blokiem DECLARE LIBRARY. Użytkownicy mogą również uzyskać dostęp do plików nagłówkowych C w celu uruchomienia funkcji C.
Widelce
Ze względu na wstrząsy w społeczności w 2022 r. istnieją obecnie co najmniej dwa rozwidlenia projektu QB64. Repozytorium Github „QB64 Team” nie jest już aktywne, a cały rozwój odbywa się w nowych forkach:
- Zespół QB64 był wersją wiarygodną do kwietnia 2022 r.
- Oficjalny QB64 Połączenie wcześniejszych i nowych programistów rozwiodło i wznowiło prace rozwojowe.
- QB64 Phoenix (strona główna) ( Github ) Widelec „Phoenix” został stworzony, aby wskrzesić projekt po wstrząsach w 2022 roku.