BASIC (Beginner's All-purpose Symbolic Instruction Code[1]) – język programowania wysokiego poziomu, opracowany w 1964 przez Johna George'a Kemeny'ego i Thomasa E. Kurtza w Dartmouth College na bazie Fortrana i Algola-60. Jego pierwsza wersja znana była później pod nazwą Dartmouth BASIC, pierwszy program w BASIC-u został uruchomiony 1 maja 1964 na komputerze General Electric GE-225 typu mainframe[2].
Historia
[edytuj | edytuj kod]Założenia projektantów BASIC-a uwzględniały łatwość użytkowania, wszechstronność zastosowań, interaktywność i dobrą komunikację z użytkownikiem poprzez jasne komunikaty błędów.
BASIC wybił się na czoło języków do zastosowań amatorskich i półprofesjonalnych po wprowadzeniu na rynek mikrokomputera Altair 8800. Twórcami dialektu BASIC-a dla tej maszyny byli Bill Gates i Paul Allen, był to pierwszy produkt firmy Microsoft. BASIC szybko zaimplementowany został przy budowie serii komputerów Apple, a później (jako GW BASIC) w IBM PC (początkowo w ROM, a po pojawieniu się DOS-a – na dyskietce).
Następcą GW BASIC-a dla komputerów PC został QB, później rozprowadzany komercyjnie jako QuickBASIC, który w końcu wyewoluował w Visual Basic for Windows. Istnieją też alternatywne interpretery i kompilatory tego języka dla platformy win32 (Power BASIC, DarkBASIC itp.)
Do najbardziej znanych dialektów można zaliczyć: Altair BASIC, AMOS (Amiga), Applesoft BASIC, Atari BASIC, BASICA, Blitz Basic, Commodore BASIC (CBM BASIC), EBASIC (dla Elwro 500), GW BASIC, Locomotive BASIC (dla Amstrad CPC), QBasic, QuickBasic, Sinclair BASIC, Turbo Basic, Visual Basic, Visual Basic .NET, sBasic (dla komunikatorów Nokia), Jabaco (Java Bytecode BASIC; Open Source), PureBasic, KBasic, DarkBasic, FreeBASIC, PowerBASIC, G-BASIC (dla konsoli Famicom), GFA Basic (rodzina Atari ST, później Amiga i PC).
W Polsce najbardziej znane są dialekty BASIC-a napisane dla popularnych komputerów ośmiobitowych – Commodore'a, Amstrada CPC, Atari i Sinclaira ZX Spectrum.
Współcześnie (2018) BASIC istnieje w wersjach na smartfony (np. Linuxa Androida) - przykładowo RFO Basic pozwala na tworzenie kodu bezpośrednio na smartfonie, w trybie interpretera lub kompilowanym albo np. na stacjonarnych komputerach uruchamiających inne dystrybucje Linuxa. Poza poleceniami znanymi z innych wersji BASICA ma wiele dostosowanych do smartfonów - jak obsługa ekranu dotykowego czy połączeń sieciowych, aparatów fotograficznych etc.[3]
Semantyka
[edytuj | edytuj kod]Ponieważ istnieje ponad 200 różnych dialektów języka BASIC, poniższa charakterystyka dotyczy najpopularniejszych rozwiązań.
Programy w BASIC-u składają się z kolejno wykonywanych instrukcji, które zebrane są w wiersze. Wszystkie dialekty oprócz najprymitywniejszych dopuszczają kilka instrukcji w jednym wierszu, rozdzielonych zazwyczaj znakiem dwukropka. Starsze wersje wymagały numerowania wierszy (maksymalny numer wynosił zwykle 9999, 16384, 32767, czasami 65535, jak to miało miejsce w Meritum).
Zmienne mogą mieć dowolnie długie nazwy zaczynające się od litery. Nazwy zmiennych łańcuchowych zakończone są znakiem dolara, np. x$
, zmienna$
. Tablice mogą mieć dwa lub więcej wymiarów (w niektórych dialektach tablice znakowe służą do wskaźnikowego dostępu do łańcuchów, jak w C).
BASIC w sprowadzonej do wspólnego mianownika wersji posiada bardzo proste mechanizmy sterowania przebiegiem programu – instrukcję skoku bezwarunkowego GOTO
, wywołania podprogramu GOSUB kończonego instrukcją powrotu RETURN
oraz warunkową IF…THEN
(w niektórych dialektach również ELSE
). pętla iteracyjna zapisywana jest za pomocą konstrukcji FOR…NEXT
.
Niektóre dialekty posiadają także instrukcje pętli warunkowej DO LOOP…UNTIL
, WHILE…WEND
, skoku warunkowego ON GOTO
, ON GOSUB
, oraz wyboru CASE…SELECT
.
Inne typowe instrukcje:
RUN
– instrukcja wywołania (uruchomienie programu),PRINT tekst
– instrukcja wyjścia (wyprowadzenie tekstu lub wartości zmiennej na urządzenie wyjściowe, najczęściej ekran),INPUT zmienna
– instrukcja wejścia (wczytanie wartości z klawiatury do zmiennej),DIM tablica
– instrukcja deklaracji tablicyLET zmienna = wartość
– instrukcja przypisania (niekiedy dozwolone jest opuszczenie słowa kluczowegoLET
)STOP
– instrukcja zatrzymaniaCONTINUE
– instrukcja kontynuacji (wznowienie zatrzymanego programu)
W niektórych wersjach dostępne były skróty najczęściej wykorzystywanych instrukcji, np. PRINT
, GOTO
, DRAWTO
, RUN
odpowiadały odpowiednio: PR.
lub ?
, G.
, DR.
, RU.
.
Ponadto w większości dialektów dostępne są funkcje matematyczne: części całkowitej INT
, wartości bezwzględnej ABS
, signum SGN
, trygonometryczne SIN
, COS
, TAN
, niekiedy funkcje logarytmów: dziesiętnego LOG
i naturalnego LN
oraz operacji na łańcuchach, zwykle zakończonych znakiem $
, np. LEFT$
, UPPER$
.
Przykład
[edytuj | edytuj kod]Poniższy program został napisany w duchu paradygmatu imperatywnego, promowanego przez wczesne implementacje języków z rodziny BASIC.
10 PRINT "Witaj"
20 INPUT "Liczba gwiazdek do wyświetlenia: "; ile
30 PRINT "*"
40 LET ile = ile -1
50 IF ile > 0 THEN GOTO 30
Wiersze programu są numerowane, a pętle konstruuje się za pomocą instrukcji skoku GOTO
. Duża liczba skoków powodowała, że kod wczesnego BASIC-a był często trudny do odczytania i zrozumienia, powstał nawet termin spaghetti code określający taki sposób tworzenia programów. Wiele dialektów zawierało jednak instrukcje pętli FOR…NEXT
, którą zastosowano w poniższym przykładzie:
10 PRINT "Witaj"
20 INPUT "Liczba gwiazdek do wyświetlenia: "; ile
30 FOR licznik = 1 TO ile
40 PRINT "*"
50 NEXT licznik
Interpretery
[edytuj | edytuj kod]Podejmowano różne próby ułatwienia pisania programów przez osoby nie robiące tego zawodowo (czyli większość posiadaczy komputerów domowych). Najbardziej oryginalne rozwiązanie było zastosowane w komputerach ZX Spectrum, gdzie do każdego klawisza przypisana było słowo kluczowe bądź nazwa funkcji wbudowanej języka Sinclair BASIC (tak, aby nie było potrzeby wpisywania ich znak po znaku). Miało to znacznie ułatwić i przyspieszyć pisanie programów. Rozwiązanie to w praktyce oznaczało niemałe trudności (na początku) w pisaniu programów, gdyż język dostępny dla tego komputera miał na tyle dużo instrukcji, że każdemu klawiszowi przypisane było ich wiele. Dostęp do nich był możliwy po kłopotliwym przełączaniu trybów edytora[4]. Jednak w rzeczywistości po dłuższym użytkowaniu klawiatury ZX Spectrum i nabraniu wprawy pisanie programów okazywało się dużo wygodniejsze, szybsze i łatwiejsze niż w innych rodzajach klawiatur.
Zobacz też
[edytuj | edytuj kod]Przypisy
[edytuj | edytuj kod]- ↑ Clive Thompson: Koderzy. Znak Litera Nowa, 2019, s. 53. ISBN 83-240-7009-5. (pol.).
- ↑ "May 1, 1964: First Basic Program Runs"
- ↑ http://rfobasic.com/#section-1
- ↑ Vickers, Steven (1982). Sinclar ZX Spectrum BASIC Programming. Sinclair Research.