PowerBASIC - PowerBASIC

PowerBASIC
PowerBasic-screen-shot.png
Zrzut ekranu PowerBasic dla Windows 9.0 IDE i przykład skompilowanego GUI Windows.
Deweloper Robert „Bob” Zale (ur. 1945, zm. 2012)
Po raz pierwszy pojawiły się 1989 ; 32 lata temu  ( 1989 )
Wersja stabilna
10,0 (4 maja 2011 ; 9 lat temu )  ( 2011-05-04 )
Stronie internetowej www .powerbasic .com
Wpływem
Turbo Basic

PowerBASIC , dawniej Turbo Basic , jest marką kilku komercyjnych kompilatorów firmy PowerBASIC Inc., które kompilują dialekt języka programowania BASIC . Istnieją wersje MS-DOS i Windows, a dwa rodzaje tej ostatniej: konsola i Windows. Wersja MS-DOS ma składnię podobną do QBasic i QuickBASIC . Wersje Windows używają składni BASIC rozszerzonej, aby zawierała wiele funkcji Windows, a instrukcje można łączyć z wywołaniami API Windows .

Historia

Pierwsza wersja kompilatora DOS została opublikowana jako BASIC / Z, pierwszy interaktywny kompilator dla CP / M i MDOS. Później został rozszerzony na MS-DOS / PC DOS, aw 1987 roku Borland rozprowadzał go jako Turbo Basic .

Turbo Basic zostało pierwotnie stworzone przez Roberta „Boba” Zale (1945–2012) i kupione od niego przez firmę Borland . Kiedy Borland zdecydował się zaprzestać jego wydawania (1989), Zale odkupił go od nich, przemianował na PowerBASIC i założył PowerBASIC Inc., aby kontynuować jego wsparcie i rozwój; później nazwano go PBDOS.

Następnie PowerBASIC opracował kompilatory BASIC dla systemu Windows, najpierw PBWIN - ich flagowy produkt - a następnie PBCC, opisane poniżej.

6 listopada 2012 zmarł Robert Zale, twórca PowerBASIC. Przez pewien czas zakładano, że firma może zaprzestać działalności. Jego żona, pani Vivian Zale, opublikowała 8 marca 2014 r. Na forach PowerBASIC oświadczenie, że firma będzie nadal działać. W dniu 10 maja 2015 r. Pani Zale ogłosiła, że ​​trwają prace nad nowymi wersjami kompilatorów PowerBASIC.

2 listopada 2016 roku Vivian Zale ogłosiła zamiar rozpoczęcia poszukiwania kupca na firmę.

Aktywny rozwój produktów PowerBASIC został zatrzymany. Nie spodziewają się już wydania PBWin11 i PBCC7, które były w fazie testów beta, gdy zmarł Bob Zale, ani 64-bitowych kompilatorów lub PB / Pro (PBWin i CC w jednym kompilatorze), które wciąż były w fazie alfa.

31 stycznia 2017 roku Adam Drake ogłosił, że Drake Software nabył kod źródłowy PowerBASIC od PowerBasic, Inc. z zamiarem aktualizacji i ulepszenia funkcjonalności produktu. Zostało to później potwierdzone przez Vivian Zale w poście na forum z podziękowaniem członkom za ich wsparcie. Niestety, żadna nowa wersja nie została wydana (ostatnia wersja v10.03 miała miejsce 8 lat temu, stan na grudzień 2020 r.), Nie pojawiły się nawet drobne poprawki, takie jak dodanie prawidłowych ustawień DPI dla IDE, co sprawia, że ​​jest całkiem jasne, co przyszłość PowerBASIC jest. Żadna działalność deweloperska nie została również pokazana w postaci raportów o postępach lub wydań beta. Najwyraźniej jedna osoba pracuje nad czymś przez te 8 lat, co, nawet jeśli to prawda, przywraca pojedynczy punkt awarii. Jednak nadal można kupić nowe licencje.

Kompilatory

Programy PowerBASIC są samodzielne i nie używają do wykonania żadnego pliku wykonawczego. We wszystkich wersjach kompilatora aplikacje kompilują się bez bibliotek zewnętrznych, chociaż w razie potrzeby można ich używać. PBDOS tworzy 16-bitowe pliki wykonywalne DOS MZ , podczas gdy PBWIN i PBCC tworzą 32-bitowe pliki Portable Executable (PE).

Turbo Basic

Borland Turbo Basic zawiera rozszerzenia do klasycznego BASIC-a (nie naruszając kompatybilności). Jednym z nich był interfejs API do rysowania i dostęp za pomocą myszy.

W przeciwieństwie do większości implementacji BASIC w tamtych czasach, Turbo Basic był pełnym kompilatorem, który generował natywny kod dla MS-DOS. Inne implementacje były albo interpreterami , albo w dużym stopniu polegały na bibliotece wykonawczej. Zintegrowane środowisko programistyczne może wewnętrznie uruchamiać program BASIC do tradycyjnego debugowania BASIC (patrz przykład poniżej) lub generować samodzielny plik wykonywalny MS-DOS, który mógłby być uruchamiany w innych systemach bez produktu Turbo Basic lub bibliotek wykonawczych.

Przykład kodu

Poniższy program jest przykładem dialektu BASIC podobnego do ALGOL , obsługiwanego przez Turbo Basic. W przeciwieństwie do tradycyjnego języka BASIC, który wykorzystywał numery linii i miał ograniczone struktury kontrolne i nie obsługiwał podprogramów podobnych do ALGOL, nowoczesne dialekty BASIC, począwszy od tego okresu, zostały rozszerzone, aby uczynić język kompatybilnym z nowoczesną teorią programowania strukturalnego poprzez odrzucenie numerów linii i dodanie kontroli struktury i definicje podprogramów potrzebne w programowaniu strukturalnym.

INPUT "What is your name?: ", n$
PRINT "Hello "; n$
DO
  s$ = ""
  INPUT "How many stars do you want to print"; s
  FOR i = 1 TO s
    s$ = s$ + "*"
  NEXT i
  PRINT s$
  DO
    INPUT "Do you want to print more stars"; q$
  LOOP WHILE LEN(q$) = 0
  q$ = LCASE$(LEFT$(q$, 1))
LOOP WHILE q$ = "y"
PRINT "Goodbye "; n$

( s$ jest ciągiem znaków i s jest zmiennoprzecinkową (liczbą) o pojedynczej precyzji . Są to oddzielne zmienne.)

Podobnie jak inne produkty firmy Borland z tamtej epoki, kod jest wykonywany w zintegrowanym środowisku programistycznym.

PowerBASIC dla DOS (PBDos)

PBDOS zawiera zintegrowane środowisko programistyczne (IDE) i obsługuje DOS 3.30 i wszystkie późniejsze wersje.

Kompilator konsoli PowerBASIC (PBCC)

PBCC to 32-bitowy kompilator dla systemów operacyjnych z serii Windows 9x i Windows NT , w tym Windows XP , Windows Server 2008 , Windows Vista i Windows 7 . Aplikacje PBCC mogą korzystać z bibliotek dołączanych dynamicznie (DLL). Kompilator jest wyposażony w IDE, w tym edytor i debuger krokowy .

Do tworzenia trybu znakowego lub aplikacji graficznych za pomocą tego kompilatora nie jest wymagana znajomość programowania w systemie Windows. Pliki wykonywalne Common Gateway Interface można również skompilować za pomocą PBCC.

PBCC tworzy tylko pliki wykonywalne, a nie biblioteki DLL. (PBWin - patrz poniżej - może utworzyć oba).

Kompilator PowerBASIC dla Windows (PBWin)

PBWin to 32-bitowy kompilator kompatybilny z systemami operacyjnymi z serii Windows 9x i Windows NT , w tym Windows XP , Windows Server 2008 , Windows Vista , Windows 7 , Windows 8 ( 8.1 ) i Windows 10 . PBWin może tworzyć biblioteki dołączane dynamicznie . Aplikacje PBWin mogą czytać biblioteki dołączane dynamicznie]. PBWin zawiera kompilator, IDE z edytorem i debugger krokowy .

Dynamiczne narzędzia dialogowe (DDT)

Graficzny interfejs użytkownika aplikacji można utworzyć za pomocą interfejsu API systemu Windows lub za pomocą wbudowanych rozszerzeń językowych DDT. Grupa instrukcji BASIC, które zawijają funkcje Windows API , szczególnie w tworzeniu i obsłudze okien dialogowych i kontrolek potomnych, jest zbiorczo nazywana dynamicznymi narzędziami dialogowymi. Korzystanie z DDT wymaga mniej kodowania niż tworzenie podobnego programu za pomocą interfejsu API systemu Windows . Używanie DDT i Windows API (znane jako styl SDK, jak w Microsoft Windows SDK ) nie wykluczają się wzajemnie.

Wersje próbne kompilatorów

PowerBASIC zmienił nazwy PBWin 9.07 i PB / CC v5.07 na „Classic PBWin” i „Classic PB / CC”, a 1 listopada 2016 r. Udostępnił je na krótki czas w swoim sklepie internetowym jako bezpłatne, nie- nag, wersje próbne wraz z PBForms v1.0 (PowerBASIC Forms).

Przybory

Formularze PB

PowerBASIC Forms, dostępne do kupienia osobno, to dodatek do narzędzia do projektowania graficznego interfejsu użytkownika dla PBWin. Automatycznie tworzy kod źródłowy przy użyciu rozszerzenia języka DDT, które tworzy formularze przy użyciu graficznego interfejsu użytkownika systemu Windows.

Przeglądarka COM

Przeglądarka PowerBASIC COM, dostarczana z PBWin, to aplikacja, która udostępnia interfejsy, metody i właściwości obiektów COM, zgodnie z opisem w plikach bibliotek typów. Przeglądarka COM PowerBASIC eksportuje strukturę interfejsu obiektu COM do celów wczesnego wiązania w kodzie PowerBASIC i udostępnia odwołania do składni i pomoc kontekstową dla elementów interfejsu udostępnianych przez obiekt COM.

Język programowania

Charakterystyka

PowerBASIC to kompilator języka BASIC z natywnym kodem, którego zalety to prostota użycia i szybkość w porównaniu z innymi językami. Chociaż skompilowany kod jest wystarczająco szybki do większości zastosowań, kompilatory obsługują również wbudowany asembler w celu dodatkowej optymalizacji kodu. Kompilatory Windows (PBWin i PBCC) obsługują prawie cały zestaw instrukcji x86 , w tym FPU , SIMD i MMX , z których głównymi wyjątkami są tylko niektóre, które są przydatne głównie dla programistów systemów. Nadal można używać nieobsługiwanych instrukcji, wstawiając ich opkody za pomocą instrukcji „db”, „dw” i „dd”. Linie kodu asemblera mogą być dowolnie przeplatane liniami kodu BASIC-a, chociaż zawsze należy wziąć pod uwagę potencjalne interakcje między tymi dwoma typami kodu.

Witaj świecie

Hello world służy do podania bardzo małego przykładu składni używanej przez język programowania i często jest najmniejszym możliwym programem dla dowolnego języka programowania.

Oto przykład programu hello world w PBCC. Domyślnie PBCC tworzy w czasie wykonywania okno konsoli do wyświetlania danych wyjściowych. Jedynym celem Waitkey $ w tym przykładzie jest utrzymanie konsoli w stanie gotowości, aby można było odczytać dane wyjściowe.

Function PBMain

  Print "Hello, World!"
  Waitkey$

End Function

Oto wersja PBWin, która wyświetla okno dialogowe systemu Windows.

Function PBMain

  MsgBox "Hello, World!"

End Function

Programowanie obiektowe

PBWin i PBCC obsługują programowanie obiektowe w postaci klas COM , jednak kompilatory nie zmuszają Cię do korzystania z OOP, jest to tylko opcja. Serwery COM w trakcie i poza procesem można również budować za pomocą tych kompilatorów.

Grafika

Zarówno kompilator konsoli, jak i kompilator systemu Windows mogą tworzyć okna graficzne. Instrukcje GRAPHICs są na wyższym poziomie niż funkcje biblioteki GDI ( Graphics Device Interface ) systemu Windows .

Elementy instrukcji GRAPHIC

OKNA GRAFICZNE to dedykowane okna dialogowe, z których każde zawiera pojedynczą kontrolkę, która wypełnia obszar roboczy okna dialogowego. Kontrolki GRAPHIC to okna potomne, które obsługują tę samą funkcjonalność rysowania GRAPHIC, co okna GRAPHIC. BITMAPS GRAPHIC są również zdefiniowane, ponownie obsługując funkcję rysowania GRAPHIC, ale jako obiekty czysto pamięciowe, takie jak mapy bitowe systemu Windows lub sekcje DIB . Instrukcje obsługi klawiatury i myszy są zawarte w instrukcjach GRAPHIC. Znak wyjściowy do celu GRAPHIC wykorzystuje czcionki określone za pomocą instrukcji FONT NEW.

Tworzenie aplikacji GRAPHIC WINDOW

OKNO GRAFICZNE jest odpowiednikiem okna dialogowego Windows zawierającego statyczną kontrolę, na której można wykonywać operacje rysowania. Pojedyncza instrukcja BASIC utworzy OKNO GRAFICZNE i określi jego rozmiar, położenie i tytuł. Nie jest konieczne określanie WNDPROC dla OKNA GRAFICZNEGO. Oto krótki przykład kodu źródłowego dla pełnej aplikacji GRAPHIC WINDOW:

#Compile Exe ' using either PBCC6 or PBWIN10 compiler
#Dim All

Function PBMain
    Local GW As Dword
    ' start a GRAPHIC WINDOW
    Graphic Window New "graphic window", 100, 100, 200, 200 to GW
    ' show a coloured disc
    Graphic Ellipse (10, 10)-(190, 190), %rgb_Red, %rgb_SeaGreen, 0
    ' wait for a keypress
    Graphic Waitkey$
End Function
Porównanie instrukcji PB GRAPHIC z interfejsem API GDI

Używając instrukcji PB GRAPHIC, GRAPHIC (WINDOW, BITMAP lub kontrolka) jest najpierw wybierana jako bieżący cel GRAPHIC, a następnie wykonywane są na nim operacje bez konieczności ponownej identyfikacji. Porównaj to z podejściem GDI API, w którym uchwyt kontekstu urządzenia jest wymagany dla każdej operacji rysowania.

W przypadku używania instrukcji PB GRAPHIC do zdefiniowania pędzla lub pióra jako oddzielnej jednostki nie jest konieczne ani przerysowanie celu GRAPHIC (w widoku) w odpowiedzi na komunikaty systemu Windows, takie jak WM_PAINT i WM_ERASEBKGND. Cele GRAPHIC są trwałe.

Gdy dołączone są cele GRAPHIC, można określić opcję PRZERYSUJ, która buforuje wyniki operacji rysowania, dopóki nie zostaną wyraźnie zażądane. Korzystanie z tej techniki zmniejsza migotanie w podobny sposób do techniki rysowania na kontrolerach domeny pamięci podczas korzystania z interfejsu API GDI.

Operacje na pikselach są możliwe za pomocą instrukcji GRAPHIC GET | SET PIXEL, w sposób podobny do GetPixel / SetPixel interfejsu API GDI. GRAPHIC GET BITS umożliwia załadowanie całej mapy bitowej do dynamicznego ciągu. Można nim manipulować jako ciąg znaków lub mapując na niego tablicę. Można go z powrotem umieścić w celu GRAPHIC za pomocą GRAPHIC SET BITS.

Komplementarność instrukcji GRAPHIC i Windows GDI API

Instrukcje GRAPHIC zawierają wszystkie powszechnie używane funkcje API GDI, ale jeśli potrzebujesz takiej, która nie jest uwzględniona, możesz uzyskać hDC dowolnego celu GRAPHIC i tym samym użyć funkcji API GDI na nim.

Społeczność użytkowników

PowerBASIC zapewnia forum internetowe, na którym użytkownicy mogą zadawać pytania i dzielić się wiedzą. W dniu 8 lipca 2012 r. Forum liczyło 5 623 członków (tylko ułamek z nich nadal jest aktywnych) i zawierało 50 093 wątków, w tym 408 642 posty od 26 sierpnia 1998 r. Sama sekcja kodu źródłowego zawierała 3768 wątków.

Wsparcie innych firm

Bibliografia

Zewnętrzne linki