PODSTAWOWY
Paradygmat | Niestrukturalne , później proceduralne , później obiektowe |
---|---|
Zaprojektowany przez | |
Po raz pierwszy pojawiły się | 1 maja 1964 |
Główne wdrożenia | |
Wpływem | |
Pod wpływem | |
|
BASIC ( ang. Beginners' All-purpose Symbolic Instruction Code ) to rodzina języków programowania wysokiego poziomu ogólnego przeznaczenia , zaprojektowanych z myślą o łatwości użytkowania. Oryginalna wersja została stworzona przez Johna G. Kemeny'ego i Thomasa E. Kurtza w Dartmouth College w 1963 roku. Chcieli oni umożliwić studentom kierunków nienaukowych korzystanie z komputerów. W tamtym czasie prawie wszystkie komputery wymagały napisania niestandardowego oprogramowania, którego uczyli się tylko naukowcy i matematycy .
Oprócz języka programowania Kemeny i Kurtz opracowali Dartmouth Time Sharing System (DTSS), który umożliwiał wielu użytkownikom edycję i jednoczesne uruchamianie programów BASIC na zdalnych terminalach. Ten ogólny model stał się bardzo popularny w systemach minikomputerowych , takich jak PDP-11 i Data General Nova pod koniec lat 60. i na początku lat 70. XX wieku. Hewlett-Packard wyprodukował całą linię komputerów dla tej metody działania, wprowadzając serię HP2000 pod koniec lat 60. i kontynuując sprzedaż do lat 80. Historia wielu wczesnych gier wideo wywodzi się z jednej z tych wersji języka BASIC.
Pojawienie się mikrokomputerów w połowie lat siedemdziesiątych XX wieku doprowadziło do powstania wielu dialektów języka BASIC, w tym Microsoft BASIC w 1975 r. Ze względu na niewielką pamięć główną dostępną na tych komputerach, często 4 KB, stworzono również różne dialekty Tiny BASIC . BASIC był dostępny dla prawie każdego systemu tamtej epoki i stał się de facto językiem programowania dla domowych systemów komputerowych, które pojawiły się pod koniec lat siedemdziesiątych. Te komputery prawie zawsze miały domyślnie instalowany interpreter języka BASIC , często w oprogramowaniu sprzętowym maszyny lub czasami na kasecie ROM .
Popularność języka BASIC spadła w latach 90., gdy na rynku pojawiły się potężniejsze mikrokomputery, a języki programowania z zaawansowanymi funkcjami (takie jak Pascal i C ) stały się możliwe do utrzymania na takich komputerach. W 1991 roku Microsoft wydał Visual Basic , łączący zaktualizowaną wersję języka BASIC z wizualnym narzędziem do tworzenia formularzy . To ponowne użycie języka i „VB” pozostaje głównym językiem programowania [ potrzebne źródło ] w postaci VBA i VB.NET .
Pochodzenie
John G. Kemeny był przewodniczącym wydziału matematyki w Dartmouth College. Opierając się głównie na jego reputacji jako innowatora w nauczaniu matematyki, w 1959 roku szkoła zdobyła Fundacji Alfreda P. Sloana za 500 000 dolarów na budowę nowego budynku wydziału. Thomas E. Kurtz dołączył do wydziału w 1956 roku, a od lat 60. Kemeny i Kurtz zgodzili się co do potrzeby umiejętności programowania wśród studentów spoza tradycyjnych dziedzin STEM . Kemeny zauważył później, że „Naszą wizją było, aby każdy student w kampusie miał dostęp do komputera , a każdy członek wydziału powinien mieć możliwość korzystania z komputera w klasie, kiedy tylko jest to stosowne. To było takie proste”.
Kemeny i Kurtz przeprowadzili dwa poprzednie eksperymenty z językami uproszczonymi, DARSIMCO (Dartmouth Simplified Code) i DOPE (Dartmouth Oversimplified Programming Experiment) . Nie przeszły one przez jedną klasę pierwszego roku. nowe eksperymenty z użyciem Fortranu i ALGOL-u , ale Kurtz doszedł do wniosku, że te języki są zbyt trudne w stosunku do tego, czego chcieli. Jak zauważył Kurtz, Fortran miał wiele dziwnie sformułowanych poleceń, w szczególności „prawie niemożliwą do zapamiętania konwencję określania pętli: DO 100 , I = 1 , 10 , 2
. Czy to „1, 10, 2” czy „1 , 2, 10' i czy przecinek po numerze wiersza jest wymagany, czy nie?"
Ponadto kluczowym problemem był brak jakiejkolwiek natychmiastowej informacji zwrotnej; maszyny tamtej epoki wykorzystywały przetwarzanie wsadowe i wykonanie programu zajmowało dużo czasu. Kiedy Kurtz odwiedzał MIT , John McCarthy zasugerował, że rozwiązaniem jest podział czasu ; pojedyncza maszyna mogłaby dzielić swój czas przetwarzania między wielu użytkowników, dając im złudzenie posiadania (wolnego) komputera dla siebie. Małe programy zwracałyby wyniki w ciągu kilku sekund. Doprowadziło to do wzrostu zainteresowania systemem wykorzystującym podział czasu i nowy język specjalnie do użytku przez studentów spoza STEM.
Kemeny napisał pierwszą wersję języka BASIC. Akronim BASIC pochodzi od tytułu nieopublikowanej pracy Thomasa Kurtza. Nowy język był mocno wzorowany na FORTRANIE II; instrukcje były typu jeden do wiersza, liczby były używane do wskazania celu pętli i rozgałęzień, a wiele poleceń było podobnych lub identycznych z fortranem. Jednak składnia była zmieniana wszędzie tam, gdzie można ją było poprawić. Na przykład trudną do zapamiętania DO
zastąpiono znacznie łatwiejszą do zapamiętania pętlą FOR I = 1 TO 10 STEP 2
, a numer linii użyty w DO został zamiast tego wskazany przez NEXT I
. Podobnie tajemnicza IF
języka Fortran, której składnia pasowała do konkretnej instrukcji maszyny, na której została pierwotnie napisana, stała się prostsza IF I = 5 THEN GOTO 100
. Te zmiany sprawiły, że język stał się znacznie mniej charakterystyczny, a jednocześnie miał ogólną strukturę i przypominał oryginalny FORTRAN.
Projekt otrzymał grant w wysokości 300 000 USD od National Science Foundation , który został wykorzystany na zakup komputera GE-225 do przetwarzania oraz procesora czasu rzeczywistego Datanet-30 do obsługi dalekopisów Teletype Model 33 używanych do wprowadzania i wyprowadzania danych. Zespół kilkunastu studentów pracował nad projektem przez około rok, pisząc zarówno system DTSS, jak i kompilator języka BASIC. Pierwsza wersja języka BASIC została wydana 1 maja 1964 roku.
Początkowo BASIC koncentrował się na obsłudze prostych prac matematycznych, z obsługą arytmetyki macierzowej od jego początkowej implementacji jako języka wsadowego, a funkcjonalność ciągów znaków została dodana do 1965 r. Użycie na uniwersytecie szybko się rozszerzyło, wymagając zastąpienia głównego procesora przez GE- 235, a jeszcze później przez GE-635. Na początku lat 70. do maszyn w Dartmouth były podłączone setki terminali, niektóre z nich zdalnie.
Chcąc rozpowszechnić używanie tego języka, jego projektanci udostępnili kompilator bezpłatnie. W latach sześćdziesiątych oprogramowanie stało się towarem płatnym; do tego czasu była świadczona bezpłatnie jako usługa z bardzo drogimi komputerami, zwykle dostępnymi tylko w leasingu. Udostępnili go również szkołom średnim w Hanowerze , rejonie New Hampshire i regionalnie w całej Nowej Anglii na terminalach dalekopisowych Teletype Model 33 i Model 35 podłączonych do Dartmouth za pośrednictwem linii telefonicznych i włożyli znaczny wysiłek w promocję języka. W następnych latach, gdy pojawiły się inne dialekty języka BASIC, oryginalny dialekt BASIC Kemeny'ego i Kurtza stał się znany jako Dartmouth BASIC .
New Hampshire doceniło to osiągnięcie w 2019 roku, kiedy wzniosło historyczny znacznik autostrady w Hanowerze, opisujący stworzenie „pierwszego przyjaznego dla użytkownika języka programowania”.
Spread na usługach z podziałem czasu
Pojawienie się języka BASIC miało miejsce w ramach szerszego ruchu w kierunku systemów z podziałem czasu. Pomysł ten, po raz pierwszy opracowany pod koniec lat pięćdziesiątych, stał się tak dominujący w przemyśle komputerowym na początku lat sześćdziesiątych, że jego zwolennicy mówili o przyszłości, w której użytkownicy będą „kupować czas przy komputerze w taki sam sposób, w jaki przeciętne gospodarstwo domowe kupuje prąd i wodę od spółek komunalnych”.
General Electric, który pracował nad projektem Dartmouth, napisał własny podstawowy system operacyjny i uruchomił internetowy system podziału czasu, znany jako Mark I. Zawierał BASIC jako jeden z głównych punktów sprzedaży. Inne firmy z rozwijającej się dziedziny szybko poszły w ich ślady; Tymshare wprowadził SUPER BASIC w 1968 r., CompuServe miał wersję na DEC-10 podczas ich premiery w 1969 r., A na początku lat 70. BASIC był w dużej mierze uniwersalny na komputerach mainframe ogólnego przeznaczenia . Nawet IBM w końcu dołączył do klubu wraz z wprowadzeniem VS-BASIC w 1973 roku.
Chociaż usługi współdzielenia czasu z BASIC-em były przez pewien czas skuteczne, przewidywany wcześniej powszechny sukces nie miał być. Pojawienie się minikomputerów w tym samym okresie, a zwłaszcza tanich mikrokomputerów w połowie lat 70., umożliwiło każdemu kupowanie i uruchamianie własnych systemów zamiast kupowania czasu online, który zwykle był rozliczany w dolarach za minutę.
Rozpowszechnianie na minikomputerach
BASIC, ze względu na swój mały rozmiar, w naturalny sposób nadawał się do przeniesienia na rynek minikomputerów , który rozwijał się w tym samym czasie, co usługi współdzielenia czasu. Maszyny te miały bardzo małą pamięć główną , być może zaledwie 4 KB we współczesnej terminologii, i brakowało im pamięci masowej o wysokiej wydajności, takiej jak dyski twarde , dzięki którym kompilatory są praktyczne. W tych systemach BASIC był zwykle implementowany jako interpreter, a nie kompilator ze względu na zmniejszone zapotrzebowanie na pamięć roboczą.
Szczególnie ważnym przykładem był HP Time-Shared BASIC , który podobnie jak oryginalny system Dartmouth wykorzystywał dwa współpracujące ze sobą komputery w celu wdrożenia systemu podziału czasu. Pierwsza, niskobudżetowa maszyna z HP 2100 , była używana do kontrolowania danych wprowadzanych przez użytkownika oraz zapisywania i ładowania ich programów na taśmę lub dysk. Druga, zaawansowana wersja tej samej maszyny bazowej, uruchamiała programy i generowała dane wyjściowe. Za około 100 000 USD można było mieć maszynę zdolną do obsługi od 16 do 32 użytkowników jednocześnie. System, dostępny w pakiecie jako HP 2000, był pierwszą miniplatformą oferującą podział czasu i odniósł natychmiastowy sukces, dzięki czemu HP stał się trzecim co do wielkości dostawcą w dziedzinie minikomputerów, za DEC i Data General ( DG ) .
DEC, lider w dziedzinie minikomputerów od połowy lat 60., początkowo ignorował język BASIC. Było to spowodowane ich współpracą z RAND Corporation , która zakupiła PDP-6 do obsługi ich języka JOSS , który był koncepcyjnie bardzo podobny do BASICa. To skłoniło DEC do wprowadzenia mniejszej, uporządkowanej wersji JOSS znanej jako FOCAL , którą mocno promowali pod koniec lat 60. Jednak przy systemach współdzielenia czasu, które szeroko oferowały język BASIC, a cała ich konkurencja w dziedzinie minikomputerów robiła to samo, klienci DEC domagali się języka BASIC. Po tym, jak kierownictwo wielokrotnie ignorowało ich prośby, David H. Ahl podjął się zakupu BASIC-a dla PDP-8 , co odniosło duży sukces na rynku edukacyjnym. Na początku lat siedemdziesiątych zapomniano o FOCAL i JOSS, a BASIC stał się niemal uniwersalny na rynku minikomputerów. DEC zamierzał wprowadzić swoją zaktualizowaną wersję, BASIC-PLUS , do użytku w systemie operacyjnym z podziałem czasu RSTS/E .
w BASICu napisano wiele prostych gier tekstowych , w szczególności Star Trek Mike'a Mayfielda . David Ahl zebrał je, niektóre przeniesione z FOCAL, i opublikował w opracowanym przez siebie biuletynie edukacyjnym. Później zebrał kilka z nich w formie książkowej, 101 BASIC Computer Games , opublikowanej w 1973 roku. W tym samym okresie Ahl był zaangażowany w tworzenie małego komputera do użytku edukacyjnego, wczesnego komputera osobistego . Kiedy kierownictwo odmówiło poparcia tej koncepcji, Ahl opuścił DEC w 1974 roku, aby założyć przełomowy magazyn komputerowy Creative Computing . Książka pozostała popularna i była kilkakrotnie wznawiana.
Gwałtowny wzrost: era komputerów domowych
Wprowadzenie pierwszych mikrokomputerów w połowie lat 70. XX wieku było początkiem gwałtownego rozwoju języka BASIC. Miał tę zaletę, że był dość dobrze znany młodym projektantom i hobbystom komputerowym, którzy interesowali się mikrokomputerami, z których wielu widziało BASIC na komputerach typu mini lub mainframe. Pomimo słynnego wyroku Dijkstry z 1975 roku: „Praktycznie niemożliwe jest nauczenie dobrego programowania uczniów, którzy mieli wcześniej kontakt z BASIC-iem: jako potencjalni programiści są psychicznie okaleczeni bez nadziei na regenerację”, BASIC był jednym z niewielu języków, które był zarówno wystarczająco wysoki, aby mógł być używany przez osoby bez przeszkolenia, jak i wystarczająco mały, aby pasował do ówczesnych mikrokomputerów, co czyni go de facto standardowym językiem programowania we wczesnych mikrokomputerach.
Pierwsza mikrokomputerowa wersja języka BASIC została napisana wspólnie przez Billa Gatesa , Paula Allena i Monte Davidoffa dla ich nowo utworzonej firmy Micro-Soft. Zostało to wydane przez MITS w taśmy perforowanej dla Altair 8800 wkrótce po samej maszynie, natychmiast umacniając BASIC jako podstawowy język wczesnych mikrokomputerów. Członkowie Homebrew Computer Club zaczęli rozpowszechniać kopie programu, co spowodowało, że Gates napisał list otwarty do hobbystów , narzekając na ten wczesny przykład piractwa komputerowego .
Częściowo w odpowiedzi na list Gatesa, a częściowo w celu stworzenia jeszcze mniejszego języka BASIC, który działałby z pożytkiem na maszynach 4 KB, Bob Albrecht namówił Dennisa Allisona do napisania własnej odmiany tego języka. Jak zaprojektować i wdrożyć okrojoną wersję interpretera dla języka BASIC, omówiono w artykułach Allison w pierwszych trzech kwartalnikach biuletynu People's Computer Company opublikowanego w 1975 r. Oraz implementacjach z kodem źródłowym opublikowanych w Dr. Dobb's Journal of Tiny BASIC Kalistenika i ortodoncja: światło do biegania bez overbyte'a . Doprowadziło to do powstania szerokiej gamy Tiny BASIC z dodatkowymi funkcjami lub innymi ulepszeniami, przy czym wersje Toma Pittmana i Li-Chen Wanga stały się szczególnie dobrze znane.
Micro-Soft, do tego czasu Microsoft , przeportował swój interpreter dla MOS 6502 , który szybko stał się jednym z najpopularniejszych mikroprocesorów ery 8-bitowej. Kiedy zaczęły pojawiać się nowe mikrokomputery, zwłaszcza „trójca” z 1977 r. TRS-80 , Commodore PET i Apple II , albo zawierały wersję kodu MS, albo szybko wprowadzały z nią nowe modele. Komputery osobiste Ohio Scientific również włączyły się wówczas w ten trend. Do 1978 roku MS BASIC był de facto standardem i praktycznie każdy komputer domowy lat 80. zawierał go w pamięci ROM . Po uruchomieniu został zaprezentowany interpreter języka BASIC w trybie bezpośrednim .
Commodore Business Machines obejmował Commodore BASIC , oparty na Microsoft BASIC. Apple II i TRS-80 miały po dwie wersje BASIC, mniejszą wersję wprowadzającą wprowadzoną wraz z pierwszymi wydaniami maszyn oraz wersję opartą na MS, wprowadzoną wraz ze wzrostem zainteresowania platformami. Gdy nowe firmy wkroczyły na rynek, dodano dodatkowe wersje, które subtelnie zmieniły rodzinę BASIC. Rodzina 8-bitowych Atari miała swój własny Atari BASIC , który został zmodyfikowany w celu dopasowania do kasety ROM o pojemności 8 KB . Sinclair BASIC został wprowadzony w 1980 roku wraz z Sinclair ZX80 , a później został rozszerzony dla Sinclair ZX81 i Sinclair ZX Spectrum . BBC opublikowało BBC BASIC , opracowany przez Acorn Computers Ltd, zawierający wiele dodatkowych słów kluczowych programowania strukturalnego i zaawansowane funkcje operacji zmiennoprzecinkowych.
Wraz ze wzrostem popularności BASIC-a w tym okresie, magazyny komputerowe publikowały pełny kod źródłowy w BASIC-u dla gier wideo, narzędzi i innych programów. Biorąc pod uwagę prostą naturę BASIC-a, wpisanie kodu z magazynu i wykonanie programu było prostą sprawą . Wydawano różne czasopisma zawierające programy dla określonych komputerów, chociaż niektóre programy BASIC były uważane za uniwersalne i mogły być używane na maszynach z dowolnym wariantem BASIC (czasami z niewielkimi adaptacjami). Dostępnych było również wiele książek z programami do pisania, w szczególności Ahl opublikował wersje oryginalnych 101 gier BASIC przekonwertowanych na dialekt Microsoft i opublikował je z Creative Computing jako BASIC Computer Games . Ta książka i jej kontynuacje zawierały setki gotowych programów, które można było łatwo przekonwertować na praktycznie każdą platformę obsługującą język BASIC. Książka trafiła do sklepów w 1978 roku, gdy komputerów domowych dopiero się rozpoczynał, i stała się pierwszą książką komputerową, która sprzedała się w milionach egzemplarzy. Późniejsze pakiety, takie jak Learn to Program BASIC, również skupiałyby się na grach. Na zorientowanych na biznes CP/M , które wkrótce stały się powszechne w środowiskach małych firm, Microsoft BASIC ( MBASIC ) był jedną z wiodących aplikacji.
W 1978 roku David Lien opublikował pierwsze wydanie The BASIC Handbook: An Encyclopedia of the BASIC Computer Language , dokumentujące słowa kluczowe na ponad 78 różnych komputerach. Do 1981 roku druga edycja udokumentowała słowa kluczowe z ponad 250 różnych komputerów, ukazując gwałtowny rozwój ery mikrokomputerów.
IBM PC i kompatybilne
Kiedy IBM projektował IBM PC , podążał za paradygmatem istniejących komputerów domowych, chcąc mieć wbudowany BASIC. Pozyskiwali to od Microsoft - IBM Cassette BASIC - ale Microsoft wyprodukował także kilka innych wersji BASIC dla MS-DOS / PC DOS , w tym IBM Disk BASIC (BASIC D), IBM BASICA (BASIC A), GW-BASIC (kompatybilny z BASICA wersja, która nie wymagała pamięci ROM IBM) i QBasic , wszystkie zazwyczaj dołączane do maszyny. Ponadto wyprodukowali Microsoft BASIC Compiler przeznaczony dla profesjonalnych programistów. Turbo Pascal -wydawca Borland opublikował Turbo Basic 1.0 w 1985 roku (następne wersje są nadal sprzedawane pod nazwą PowerBASIC ).
Te późniejsze odmiany wprowadziły wiele rozszerzeń, takich jak ulepszona manipulacja łańcuchami i obsługa grafiki, dostęp do systemu plików i dodatkowe typy danych . Ważniejsze były udogodnienia dla programowania strukturalnego , w tym dodatkowe struktury kontrolne i odpowiednie podprogramy obsługujące zmienne lokalne . Jednak w drugiej połowie lat 80. użytkownicy coraz częściej korzystali z gotowych aplikacji napisanych przez innych, zamiast samodzielnie uczyć się programowania; podczas gdy profesjonalni programiści mieli teraz szeroką gamę bardziej zaawansowanych języków dostępnych na małych komputerach. C , a później C++ , stały się językami wybieranymi do tworzenia profesjonalnych aplikacji typu „shrink wrap” .
Visual Basic
W 1991 roku Microsoft wprowadził Visual Basic , ewolucyjny rozwój QuickBASICa . Zawierał konstrukcje z tego języka, takie jak instrukcje sterujące o strukturze blokowej, sparametryzowane podprogramy i opcjonalne typowanie statyczne , a także konstrukcje zorientowane obiektowo z innych języków, takie jak „Z” i „Dla każdego”. Język zachował pewną kompatybilność ze swoimi poprzednikami, na przykład słowo kluczowe Dim dla deklaracji, instrukcje „Gosub”/Return i opcjonalne numery wierszy, których można było użyć do zlokalizowania błędów. Ważnym motorem rozwoju Visual Basic był nowy język makr dla Microsoft Excel , programu do obsługi arkuszy kalkulacyjnych . Ku zaskoczeniu wielu osób w firmie Microsoft, które początkowo sprzedawały go jako język dla hobbystów, język ten wszedł do powszechnego użytku w małych, niestandardowych aplikacjach biznesowych wkrótce po wydaniu VB w wersji 3.0, która jest powszechnie uważana za pierwszą względnie stabilną wersję.
Podczas gdy wielu zaawansowanych programistów nadal szydziło z jego użycia, VB skutecznie zaspokajał potrzeby małych firm , ponieważ do tego czasu komputery z systemem Windows 3.1 stały się wystarczająco szybkie, aby wiele procesów związanych z biznesem można było wykonać „w mgnieniu oka”, nawet przy użyciu „powolny” język, o ile nie dotyczyło to dużych ilości danych. Wielu właścicieli małych firm stwierdziło, że w ciągu kilku wieczorów może stworzyć własne, małe, ale przydatne aplikacje, które zaspokoją ich własne specjalistyczne potrzeby. W końcu, podczas długiego życia VB3, znajomość języka Visual Basic stała się rynkową umiejętnością zawodową. Microsoft wyprodukował również VBScript w 1996 r. i Visual Basic .NET w 2001 r. Ten ostatni ma zasadniczo taką samą moc jak C# i Java , ale ze składnią odzwierciedlającą oryginalny język Basic. IDE , ze swoim kreatorem GUI sterowanym zdarzeniami , miało również wpływ na inne narzędzia, w szczególności na Delphi firmy Borland Software dla Object Pascal i jego własnych następców , takich jak Lazarus .
Wsparcie głównego nurtu dla ostatecznej wersji 6.0 oryginalnego Visual Basic zakończyło się 31 marca 2005 r., a następnie rozszerzone wsparcie w marcu 2008 r. 11 marca 2020 r. Microsoft ogłosił, że ewolucja języka VB.NET również się zakończyła, chociaż tak było nadal obsługiwane. Tymczasem istnieją konkurenci, tacy jak Xojo i Gambas .
Wersje i dialekty po 1990 roku
Od 1990 roku pojawiło się również wiele innych dialektów BASIC-a, w tym open source QB64 i FreeBASIC , zainspirowane QBasic, oraz stylizowane na Visual Basic RapidQ , HBasic , Basic For Qt i Gambas . Nowoczesne komercyjne wcielenia obejmują PureBasic , PowerBASIC , Xojo , Monkey X i True BASIC (bezpośredni następca Dartmouth BASIC firmy kontrolowanej przez Kurtza).
Obecnie istnieje również kilka prostych internetowych interpreterów języka BASIC, w tym Small Basic . Wiele wersji języka BASIC jest teraz dostępnych również na smartfony i tablety za pośrednictwem sklepu Apple App Store lub sklepu Google Play dla systemu Android. Na konsolach aplikacja na konsole Nintendo 3DS i Nintendo DSi o nazwie Petit Computer umożliwia programowanie w nieco zmodyfikowanej wersji BASICa z obsługą przycisków DS. Wydano również wersję na Nintendo Switch .
Kalkulatory
Warianty języka BASIC są dostępne w graficznych i programowalnych kalkulatorach wyprodukowanych przez firmy Texas Instruments , HP, Casio i inne.
wiersz poleceń systemu Windows
QBasic , wersja Microsoft QuickBASIC bez konsolidatora do tworzenia plików EXE, jest obecna w strumieniach systemów operacyjnych Windows NT i DOS- Windows 95 i można ją uzyskać dla nowszych wydań, takich jak Windows 7 , które ich nie mają. Przed DOS 5 interpreterem Basic był GW-Basic . QuickBasic jest częścią serii trzech języków wydanych przez Microsoft dla zaawansowanych użytkowników domowych i biurowych oraz rozwoju zawodowego na małą skalę; QuickC i QuickPascal to dwa pozostałe. W przypadku systemów Windows 95 i 98, które nie mają domyślnie zainstalowanego QBasic, można je skopiować z dysku instalacyjnego, który będzie zawierał zestaw katalogów dla starego i opcjonalnego oprogramowania; inne brakujące polecenia, takie jak Exe2Bin i inne, znajdują się w tych samych katalogach.
Inny
Różne pakiety biurowe Microsoft, Lotus i Corel oraz powiązane produkty można programować za pomocą Visual Basic w takiej czy innej formie, w tym LotusScript , który jest bardzo podobny do VBA 6. Emulator terminala Host Explorer używa WWB jako języka makr; lub ostatnio program i pakiet, w którym jest zawarty, można zaprogramować w wewnętrznym wariancie Basic, znanym jako Hummingbird Basic. Wariant VBScript jest używany do programowania treści internetowych, programu Outlook 97, Internet Explorer i hosta skryptów systemu Windows. WSH ma również Visual Basic for Applications (VBA) zainstalowany jako trzeci z domyślnych silników wraz z VBScript, JScript i licznymi zastrzeżonymi lub otwartymi silnikami, które można zainstalować, jak PerlScript , kilka silników opartych na Rexx, Python , Ruby, Tcl, Delphi, XLNT, PHP i inne; co oznacza, że dwie wersje Basic mogą być używane wraz z innymi wymienionymi językami, jak również LotusScript, w pliku WSF, poprzez komponentowy model obiektowy oraz inne konstrukcje WSH i VBA. VBScript jest jednym z języków, do których dostęp mają udoskonalone powłoki 4Dos, 4NT i Take Command. SaxBasic i WWB są również bardzo podobne do linii implementacji Basic w języku Visual Basic. Język makr dla programu Microsoft Word sprzed pakietu Office 97 jest znany jako WordBASIC . Programy Excel 4 i 5 używają języka Visual Basic jako języka makr. Chipmunk Basic , oldschoolowy interpreter podobny do BASIC z lat 70., jest dostępny dla systemów Linux , Microsoft Windows i macOS .
Dziedzictwo
Wszechobecność tłumaczy języka BASIC na komputerach osobistych była taka, że podręczniki zawierały kiedyś proste ćwiczenia „Wypróbuj w języku BASIC”, które zachęcały uczniów do eksperymentowania z koncepcjami matematycznymi i obliczeniowymi na komputerach w klasie lub na komputerach domowych. Popularne ówczesne magazyny komputerowe zazwyczaj zawierały programy do wpisywania .
Futurysta i pisarz science-fiction David Brin opłakiwał utratę wszechobecnego języka BASIC w artykule Salonu z 2006 roku , podobnie jak inni, którzy jako pierwsi używali komputerów w tamtej epoce. Z kolei artykuł skłonił Microsoft do opracowania i wydania Small Basic ; zainspirował również podobne projekty, takie jak Basic-256 . Dartmouth zorganizowało obchody 50. rocznicy powstania BASIC w dniu 1 maja 2014 r., Podobnie jak inne organizacje; co najmniej jedna organizacja zrzeszająca programistów VBA zorganizowała w 1999 roku obchody 35-lecia.
Dartmouth College obchodził 50. rocznicę języka BASIC dniem wydarzeń 30 kwietnia 2014 r. Na potrzeby tego wydarzenia wyprodukowano krótki film dokumentalny.
Składnia
Typowe słowa kluczowe BASICa
Manipulacja danymi
LET przypisuje
- zmiennej wartość (która może być wynikiem wyrażenia ) . W większości dialektów języka BASIC
LET
jest opcjonalne, a linia bez innego identyfikowalnego słowa kluczowego zakłada, że słowo kluczowe toLET
. DATA
- przechowuje listę wartości, które są przypisywane sekwencyjnie za pomocą polecenia READ.
READ
- odczytuje wartość z instrukcji
DATA
i przypisuje ją do zmiennej. Wewnętrzny wskaźnik śledzi ostatnio odczytany elementDATA i przesuwa go o jedną pozycję do przodu przy każdym
ODCZYCIE
. Większość dialektów dopuszcza wiele zmiennych jako parametry, odczytując kilka wartości w jednej operacji. RESTORE
- resetuje wewnętrzny wskaźnik do pierwszej instrukcji
DATA
, umożliwiając programowi rozpoczęcieODCZYTU
od pierwszej wartości. Wiele dialektów pozwala na opcjonalny numer wiersza lub wartość porządkową, aby umożliwić zresetowanie wskaźnika do wybranej lokalizacji. DIM
- Konfiguruje tablicę.
Kontrola przebiegu programu
JEŻELI ... TO ... {INNY}
- używany do przeprowadzania porównań lub podejmowania decyzji. Wczesne dialekty zezwalały tylko na numer linii po
THEN
, ale późniejsze wersje pozwalały na dowolne prawidłowe stwierdzenie.ELSE
nie był powszechnie obsługiwany, zwłaszcza we wcześniejszych wersjach. FOR ... TO ... {STEP} ... NEXT
- powtórz sekcję kodu określoną liczbę razy. W pętli dostępna jest zmienna, która działa jak licznik, „indeks” .
-
WHILE ... WEND
iREPEAT ... aż
- powtórz sekcję kodu, gdy określony warunek jest prawdziwy. Warunek może być oceniany przed każdą iteracją pętli lub po. Oba te polecenia występują głównie w późniejszych dialektach.
-
DO ... LOOP {WHILE}
lub{UNTIL}
- powtarza sekcję kodu w nieskończoność lub dopóki określony warunek nie będzie spełniony. Warunek może być oceniany przed każdą iteracją pętli lub po. Podobnie jak
WHILE
, te słowa kluczowe występują głównie w późniejszych dialektach. GOTO
- przeskakuje do numerowanej lub oznaczonej linii w programie. Większość dialektów dopuszczała również formę
GO TO
. GOSUB ... RETURN
- przeskakuje do linii numerowanej lub oznaczonej etykietą, wykonuje znaleziony tam kod, aż dotrze do komendy
RETURN
, po której przeskakuje z powrotem do instrukcji następującej poGOSUB
, albo po dwukropku, albo w następnej linii. Służy do implementacji podprogramów . ON ... GOTO/GOSUB
- wybiera miejsce skoku w oparciu o określone warunki. Zobacz instrukcję Switch dla innych formularzy.
DEF FN
- para słów kluczowych wprowadzonych na początku lat 60. w celu zdefiniowania funkcji. Oryginalne funkcje języka BASIC były wzorowane na funkcjach jednokreskowych języka FORTRAN. Funkcje BASIC były jednym wyrażeniem ze zmiennymi argumentami, a nie podprogramami , ze składnią opartą na modelu
DEF FND(x) = x*x
na początku programu. Nazwy funkcji były pierwotnie ograniczone do FN plus jedna litera, tj . FNA, FNB…
Wejście i wyjście
LISTA
- wyświetla pełny kod źródłowy bieżącego programu.
PRINT
- wyświetla komunikat na ekranie lub innym urządzeniu wyjściowym.
INPUT
- prosi użytkownika o wprowadzenie wartości zmiennej. Oświadczenie może zawierać monit.
TAB
- używany z
PRINT
do ustawiania pozycji, w której następny znak będzie wyświetlany na ekranie lub drukowany na papierze.AT
jest formą alternatywną. SPC
- drukuje pewną liczbę znaków spacji. Podobny w koncepcji do
TAB
, ale przesuwa się o liczbę dodatkowych spacji z bieżącej kolumny zamiast przechodzić do określonej kolumny.
Funkcje matematyczne
ABS
- Wartość bezwzględna
ATN
- Arcus tangens (wynik w radianach )
COS
- Cosinus (argument w radianach )
EXP
- Funkcja wykładnicza
INT
- Część całkowita (zazwyczaj funkcja podłogi )
LOG
- Logarytm naturalny
RND
- Generowanie liczb losowych
SIN
- Sinus (argument w radianach )
SQR
- Pierwiastek kwadratowy
TAN
- Tangens (argument w radiany )
Różnorodny
REM
- zawiera komentarz programisty lub REMark; często używany do nadania tytułu programowi i pomocy w określeniu celu danej sekcji kodu.
USR
- przekazuje kontrolę programu do podprogramu języka maszynowego , zwykle wprowadzanego jako ciąg alfanumeryczny lub na liście instrukcji DATA.
CALL
- alternatywna forma
USR
występująca w niektórych dialektach. Nie wymaga sztucznego parametru do uzupełnienia podobnej do funkcji składniUSR
i ma jasno zdefiniowaną metodę wywoływania różnych procedur w pamięci. -
TRON
/TROFF
- włącza wyświetlanie numeru każdej linii podczas jej wykonywania („TRAce ON”). Było to przydatne do debugowania lub korygowania problemów w programie. TROFF ponownie go wyłącza.
ASM
- , takie jak Freebasic, Purebasic i Powerbasic, obsługują również wbudowany język asemblera, umożliwiając programistom mieszanie kodu wysokiego i niskiego poziomu, zwykle poprzedzonego przedrostkiem „ASM” lub „!” sprawozdania.
Typy danych i zmienne
Minimalne wersje BASIC-a miały tylko zmienne całkowite i jedno- lub dwuliterowe nazwy zmiennych, co zminimalizowało wymagania ograniczonej i drogiej pamięci (RAM). Bardziej zaawansowane wersje miały arytmetykę zmiennoprzecinkową, a zmienne można było oznaczać nazwami o długości sześciu lub więcej znaków. We wczesnych wdrożeniach występowały pewne problemy i ograniczenia; na przykład Applesoft BASIC dopuszczał, aby nazwy zmiennych miały długość kilku znaków, ale tylko dwa pierwsze były znaczące, dzięki czemu można było przypadkowo napisać program ze zmiennymi „STRATA” i „LOAN”, które byłyby traktowane jako to samo; przypisanie wartości do „LOAN” po cichu nadpisałoby wartość zamierzoną jako „STRATA”. Słowa kluczowe nie mogły być używane w zmiennych w wielu wczesnych językach BASIC; „SCORE” będzie interpretowane jako „SC” LUB „E”, gdzie OR jest słowem kluczowym. łańcuchowe są zwykle rozróżniane w wielu dialektach mikrokomputerów przez dodanie do ich nazwy sufiksu $ jako sigila , a wartości są często identyfikowane jako ciągi znaków przez oddzielenie „podwójnych cudzysłowów”. Tablice w języku BASIC mogą zawierać liczby całkowite, zmiennoprzecinkowe lub zmienne łańcuchowe.
Niektóre dialekty języka BASIC wspierały macierze i operacje na macierzach , które można wykorzystać do rozwiązywania układów równoczesnych liniowych równań algebraicznych. Te dialekty bezpośrednio wspierałyby operacje na macierzach, takie jak przypisywanie, dodawanie, mnożenie (kompatybilnych typów macierzy) i ocena wyznacznika. Wiele mikrokomputerów BASIC nie obsługiwało tego typu danych; operacje na macierzach były nadal możliwe, ale musiały być programowane jawnie na elementach tablicy.
Przykłady
Niestrukturalny BASIC
Nowi programiści BASIC-a na komputerze domowym mogą zaczynać od prostego programu, na przykład używając instrukcji PRINT języka, aby wyświetlić komunikat na ekranie; dobrze znanym i często powielanym przykładem jest „Hello, World!” Kernighana i Ritchiego . program :
10 DRUKUJ „Witaj, świecie!” 20 KONIEC
Nieskończoną pętlę można wykorzystać do wypełnienia wyświetlacza komunikatem:
10 DRUKUJ „Witaj, świecie!” 20 PRZEJDŹ DO 10
Zauważ, że instrukcja END
jest opcjonalna i nie ma działania w większości dialektów języka BASIC. Nie zawsze był uwzględniany, jak w tym przykładzie. Ten sam program można zmodyfikować tak, aby drukował ustaloną liczbę komunikatów przy użyciu wspólnej FOR...NEXT
:
10 LET N = 10 20 FOR I = 1 TO N 30 DRUKUJ „Witaj, świecie!” 40 DALEJ _
Większość wersji języka BASIC pierwszej generacji, takich jak MSX BASIC i GW-BASIC , obsługiwała proste typy danych, cykle pętli i tablice. Poniższy przykład został napisany dla GW-BASIC, ale będzie działać w większości wersji BASIC z minimalnymi zmianami:
0
10 INPUT "Jak masz na imię: " ; 20 U$ DRUKUJ „Cześć” ; 30 U$ WEJŚCIE „Ile chcesz gwiazdek:” ; N 40 S$ = "" 50 FOR I = 1 TO N 60 S$ = S$ + "*" 70 NASTĘPNY I 80 DRUKUJ S$ 90 WEJŚCIE "Chcesz więcej gwiazdek?" ; A$ 100 IF LEN ( A$ ) = THEN GOTO 90 110 A$ = LEFT$ ( A$ , 1 ) 120 IF A$ = "Y" LUB A$ = "y" THEN GOTO 30 130 PRINT "Do widzenia" ; 140 USD KONIEC
Powstałe okno dialogowe może przypominać:
Jak masz na imię: Mike Cześć Mike Ile chcesz gwiazdek: 7 ******* Chcesz więcej gwiazdek? tak Ile chcesz gwiazdek: 3 *** Chcesz więcej gwiazdek? nie Żegnaj Mike
Oryginalny Dartmouth Basic był niezwykły, ponieważ miał macierzowe słowo kluczowe, MAT. Chociaż nie jest implementowany przez większość późniejszych pochodnych mikroprocesorów, jest używany w tym przykładzie z podręcznika z 1968 r., Który uśrednia wprowadzane liczby:
0
0
5 LET S = 10 MAT INPUT V 20 LET N = LICZBA 30 IF N = THEN 99 40 FOR I = 1 TO N 45 LET S = S + V ( I ) 50 NEXT I 60 PRINT S / N 70 GO TO 5 99 END
Ustrukturyzowany BASIC
Języki BASIC drugiej generacji (na przykład VAX Basic , SuperBASIC , True BASIC , QuickBASIC , BBC BASIC , Pick BASIC , PowerBASIC , Liberty BASIC i (prawdopodobnie) COMAL ) wprowadziły do języka szereg funkcji, głównie związanych z ustrukturyzowanymi i proceduralnymi programowanie zorientowane. Zwykle numeracja wierszy jest pomijana w języku i zastępowana etykietami (dla GOTO ) oraz procedurami zachęcającymi do łatwiejszego i bardziej elastycznego projektowania. Ponadto wprowadzono słowa kluczowe i struktury wspierające powtarzanie, selekcję i procedury ze zmiennymi lokalnymi.
Poniższy przykład jest w Microsoft QuickBASIC:
REM QuickBASIC przykład Deklaracja REM Forward - umożliwia głównemu kodowi wywołanie podprogramu REM, który jest zdefiniowany później w kodzie źródłowym DECLARE SUB PrintSomeStars ( StarCount! ) REM Główny program podąża za INPUT "Jak masz na imię: " , UserName$ PRINT "Hello " ; UserName$ DO INPUT "Ile gwiazdek chcesz: " , NumStars CALL PrintSomeStars ( NumStars ) DO INPUT "Czy chcesz więcej gwiazdek? " , Answer$ LOOP UNTIL Answer$ <> "" Answer$ = LEFT$ ( Answer$ , 1 ) LOOP WHILE UCASE$ ( Odpowiedź$ ) = "Y" PRINT "Do widzenia" ; UserName$ END REM definicja podprogramu SUB PrintSomeStars ( StarCount ) REM Ta procedura wykorzystuje lokalną zmienną o nazwie Stars$ Stars$ = STRING$ ( StarCount , "*" ) PRINT Stars $ END SUB
Zorientowany obiektowo język BASIC
Dialekty języka BASIC trzeciej generacji, takie jak Visual Basic , Xojo , Gambas , StarOffice Basic , BlitzMax i PureBasic , wprowadziły funkcje wspierające paradygmat programowania obiektowego i sterowanego zdarzeniami . Większość wbudowanych procedur i funkcji jest teraz reprezentowana jako metody obiektów standardowych, a nie operatory . Ponadto system operacyjny stawał się coraz bardziej dostępny dla języka BASIC.
Poniższy przykład dotyczy języka Visual Basic .NET :
Moduł publiczny StarsProgram Prywatna funkcja Zapytaj ( monit As String ) As String Console . Napisz ( monit ) Return Console . ReadLine () End Function Public Sub Main () Dim userName = Ask ( "Jak masz na imię: " ) Console . WriteLine ( "Witaj {0}" , userName ) Dim answer As String Do Dim numStars = CInt ( Ask ( "Ile gwiazdek chcesz: " )) Dim stars As New String ( "*"c , numStars ) Console . WriteLine ( gwiazdki ) Do answer = Ask ( "Chcesz więcej gwiazdek?" ) Pętla do czasu odpowiedzi <> "" Pętla podczas odpowiedzi . StartsWith ( "Y" , StringComparison . OrdinalIgnoreCase ) Konsola . WriteLine ( "Do widzenia {0}" , userName ) End Sub End Module
Normy
- Norma ANSI/ISO/IEC dla Minimal BASIC:
- ANSI X3.60-1978 „Dla minimalnego języka BASIC”
- ISO / IEC 6373: 1984 „Przetwarzanie danych — języki programowania — minimalny BASIC”
- ECMA -55 Minimal BASIC (wycofany, podobny do ANSI X3.60-1978)
- Norma ANSI/ISO/IEC dla pełnego języka BASIC:
- ANSI X3.113-1987 „Języki programowania Full BASIC”
- INCITS/ISO/IEC 10279-1991 (R2005) „Technologia informacyjna – języki programowania – pełny język BASIC”
- Moduły definiujące dodatek ANSI/ISO/IEC:
- ANSI X3.113 Interpretations-1992 „BASIC Technical Information Bulletin nr 1 Interpretacje ANSI 03.113-1987”
- ISO/IEC 10279:1991/ Amd 1:1994 „Moduły i usprawnienie wprowadzania pojedynczych znaków”
- ECMA -116 BASIC (wycofany, podobny do ANSI X3.113-1987)
Kompilatory i interpretery
Kompilator | Autor | Aktywny | Okna | Uniksopodobny | Inne systemy operacyjne | Rodzaj licencji |
---|---|---|---|---|---|---|
AppGameKit | Twórcy gry | Tak | Tak | Tak | NIE | Prawnie zastrzeżony |
B4X | Erel Uziel | Tak | Tak | Tak ( Android , iOS ) | Tak (JVM) | |
BlitzMax | Badania Blitza | Nie (2015) | Tak | Tak ( Linux , OS X ) | NIE | |
CiemnyBASIC | Twórcy gry | Nie (2016) | Tak | NIE | NIE | |
FreeBASIC | Zespół programistów FreeBASIC | Tak | Tak | Tak | DOS , FreeBSD | |
FutureBASIC | Oprogramowanie Brilora | Tak | NIE | OS X | Klasyczny MacOS | Prawnie zastrzeżony |
Gambas | Benoît Minisini | Tak | NIE | Tak | NIE | |
GFA PODSTAWOWE | Franka Ostrowskiego | Nie (2005) | Tak | NIE | Amiga , Atari ST , DOS | Prawnie zastrzeżony |
Rtęć | RemObjects | Tak | Tak | Tak ( Linux , OS X , Android , iOS ) | Tak ( zespół sieciowy ) | Prawnie zastrzeżony |
PowerBASIC (wcześniej Turbo Basic) | PowerBASIC, Inc. | Nie (2010) | Tak | NIE | DOS | Prawnie zastrzeżony |
PureBasic | Oprogramowanie Fantazja | Tak | Tak | Tak | Tak | Prawnie zastrzeżony |
QB64 | Galeon | Tak | Tak | Tak | Tak | |
QuickBASIC | Microsoftu | Nie (1990) | NIE | NIE | DOS | Prawnie zastrzeżony |
Prawdziwy PODSTAWOWY | Prawdziwy PODSTAWOWY | Tak | Tak | NIE | NIE | Prawnie zastrzeżony |
VSI BASIC dla OpenVMS | Oprogramowanie VMS, Inc. | Tak | NIE | NIE | OpenVMS | Prawnie zastrzeżony |
Xojo (dawniej REALbasic) | Xojo Inc. (dawniej Real Software) | Tak | Tak | Tak | Tak | Prawnie zastrzeżony |
Interpretator | Autor | Okna | Uniksopodobny | Inne systemy operacyjne | Rodzaj licencji |
---|---|---|---|---|---|
BASIC BBC (SDL 2.0) | Richarda T. Russella | Tak | Tak | Android , iOS , OS X , Raspberry Pi , przeglądarka internetowa | |
Bywater BASIC (bwBASIC) | Teda Campbella | NIE | Tak | ? | |
Wolność PODSTAWOWA | Systemy Shoptalk | Tak | NIE | NIE | Prawnie zastrzeżony |
GW-BASIC | Microsoftu | NIE | NIE | MS-DOS | Prawnie zastrzeżony |
QPodstawowy | Microsoftu | Tak | NIE | NIE | Prawnie zastrzeżony |
wiewiórka podstawowa | Ronald H. Nicholson Jr. | Tak | Tak | Tak | Darmowe |
TI Basic | Instrumenty z Teksasu | NIE | NIE | TI-99/4A | Prawnie zastrzeżony |
TI rozszerzony podstawowy | Instrumenty z Teksasu | NIE | NIE | TI-99/4A | Prawnie zastrzeżony |
Skalista Góra PODSTAWOWA | [Era transu] | Tak | NIE | HP 9000 | Prawnie zastrzeżony |
Bas | Michaela Haardta | NIE | Tak | NIE | |
Yabasic | Marc-Oliver Ihm | Tak | Tak | Haiku | |
MałyBASIC | MałyBASIC | Tak | Tak | Androida , OS X | |
SuperBASIC | Jana Jonesa | NIE | NIE | Sinclair QL | Prawnie zastrzeżony |
cienkiPodstawowy | cienkiPodstawowy | Tak | NIE | NIE | Prawnie zastrzeżony |
PC-BASIC | Roba Hagemansa | Tak | Tak | OS X |
Zobacz też
Notatki
Ogólne odniesienia
- Sammet, Jean E. (1969). Języki programowania: historia i podstawy . Englewood Cliffs, NJ: Prentice-Hall . OCLC 819683527 .
- Kurtz, Thomas E. (1981). „PODSTAWOWE” . W Wexelblat, Richard (red.). Historia języków programowania . Historia języków programowania I . Nowy Jork: ACM . s. 515–537 . doi : 10.1145/800025.1198404 . ISBN 978-0127450407 .
- Kemeny, John G.; Kurtz, Thomas E. (1985). Powrót do BASIC: historia, korupcja i przyszłość języka . Addison-Wesley. P. 141. ISBN 9780201134339 . OCLC 11399298 .
- Lien, David A. (1986). The Basic Handbook: Encyclopedia of the BASIC Computer Language (wyd. 3). Wydawnictwo Compusoft. ISBN 9780932760333 . OCLC 12548310 .
- „Pięćdziesiąt lat języka BASIC, języka programowania, który uczynił komputery osobistymi” . Czas . 29 kwietnia 2014 r.
Linki zewnętrzne
- BASIC w Curlie
- „BASIC — uniwersalny kod instrukcji symbolicznych dla początkujących” . Encyklopedia języków komputerowych . Uniwersytet Murdocha .
- na YouTubie