**BASIC** (lyhenne sanoista **Beginner's All-purpose Symbolic Instruction Code**) on ohjelmointikieli, joka kehitettiin alkujaan Dartmouth Collegessa vuonna 1964 ohjelmoinnin alkeiden opetukseen. Siihen aikaan ohjelmat täytyi usein ohjelmoida itse, ja BASIC suunniteltiin sellaiseksi, että sen voisi oppia ilman matemaattis-luonnontieteellistä taustaa. Kieli oli epärakenteellinen, mutta myöhemmät yleisesti käytetyt murteet ovat tehneet kielestä rakenteellisen ja proseduraalisen sekä lisänneet olio-ohjelmoinnin ominaisuuksia.

BASIC on säilyttänyt suosionsa useiden eri murteiden muodossa ja vaikuttanut uudempiin ohjelmointikieliin kuten Microsoftin Visual Basiciin ja sen .NET-versioon. Vuonna 2006 59 % .NET:in käyttäjistä ohjelmoi vain Visual Basic.NETillä.

Historia
--------

BASIC oli suosittu kieli etenkin 1980-luvulla, kun lähes jokaisessa kotimikrossa oli BASIC-tulkki joko sisäänrakennettuna tai oheisohjelmana. BASICin suosio kotitietokoneissa on jäljitettävissä Stanfordin yliopiston lehtori Dennis Allisonin julkaisemaan *Tiny BASIC* -ohjelmointikielen määritelmään ja haasteeseen, joka julkaistiin 1975 *People's Computer Company* -uutiskirjeessä (myöhemmin Dr. Dobb’s Journal). Harrastajat toteuttivat Tiny BASICin useille eri suorittimille ja tietokoneille ja julkaisivat ne lähdekoodeineen.

Useimmat suositut BASIC-versiot niin 8-bittisissä kuin kehittyneemmissäkin koneissa ovat Microsoftin kehittämiä ja polveutuvat Paul Allenin ja Bill Gatesin Altair 8800:lle vuonna 1975 kirjoittamasta Altair BASIC -tulkista, joka oli ensimmäinen Microsoftin julkaisema tietokoneohjelma. Esimerkiksi Commodoren PET- ja Commodore 64 -koneissa käyttämä BASIC perustui Jack Tramielin 1970-luvulla Bill Gatesilta kertamaksulla ostamaan Microsoftin 6502-BASICiin. Microsoftin BASIC oli kehittynyt ja sisälsi ominaisuuksia, jotka eivät olleet itsestäänselvyys: se osasi käsitellä liukulukuja, vaikka tuon ajan suorittimet eivät niitä suoraan tukeneet. Rakenteiseen ohjelmointiin on `GOSUB`-käsky, joka hyppää aliohjelmaan ja palaa sieltä `RETURN`-käskyllä. Merkkijonot ovat objekteja, joiden muisti vapautetaan automaattisesti. Tämän vuoksi Apple lisensoi Microsoftin BASICin Apple II+ -koneeseensa aiemman vain kokonaislukujen käsittelyyn pystyneen tulkkinsa tilalle. MSX-kotitietokoneisiin tuli luonnollisesti Microsoftin BASIC-versio 4.5, joka sisälsi käskyt grafiikan ja musiikin tuottamiseen sekä alkeellisen poikkeusten hallinnan (`ON ERROR GOTO`).

Microsoft jatkoi BASIC:in kehittämistä. IBM PC -koneen mukana tuli Microsoftilta lisensoitu BASICA-tulkki, ja MS-DOSin mukana sen kanssa yhteensopiva GW-BASIC-versio.

Vuonna 1985 Microsoft julkaisi QuickBASIC-kääntäjän. Tässä vaiheessa rivinumeroiden pakollisesta käytöstä luovuttiin. Commodoren Amiga-koneiden AmigaOS-versioiden 1.1–1.3 mukana toimitettiin myös Microsoftin kehittämä AmigaBASIC. QuickBASICin riisuttu versio ilman kääntäjää tuli viimein MS-DOS 5.0:n mukana nimellä QBasic.

Nykyään muita suosittuja BASIC-ohjelmointikieliä Microsoftin Visual Basicin lisäksi ovat alustariippumattomissa ympäristöissä tunnettu REALbasic sekä pelikehitykseen suunnatut CoolBasic, DarkBASIC ja BlitzBasic, joista jälkimmäisin julkaistiin jo Amigalle ja jota käytettiin mm. ensimmäisen Worms-pelin kehittämiseen.

Esimerkki
---------

Esimerkki perinteisestä rivinumero-BASICista (toimii esimerkiksi useimpien 8-bittisten koneiden tulkeissa):

```
5 REM Tämä ohjelma arvuuttaa lukua
10 PRINT "Arvaa luku";
20 INPUT A
30 IF A=42 THEN GOTO 50
40 PRINT "Väärin" : GOTO 10
50 PRINT "Oikein!"
60 END

```

Vastaavan toiminnallisuuden saa useimmissa BASIC-tulkeissa myös yhdellä rivillä:

```
1INPUT"Arvaa luku";A:IFA=42THEN?"Oikein!"ELSE?"Väärin":GOTO1

```

Jälkimmäisen esimerkin kaltainen kompakti ohjelmointityyli, jossa välilyöntejä ei käytetä, oli jopa suositeltavaa 80-luvulla niissä BASIC-tulkeissa, joissa se oli mahdollista, sillä siten ohjelmat veivät vähemmän muistia.*lähde?* Myös kommentit (jotka alkoivat joko `REM` tai `'`) jätettiin yleensä pois samasta syystä.*lähde?* Perinteistä siistiä tyyliä välilyönteineen ja kommentteineen näki lähinnä aloittelijoiden ohjelmointioppaissa.

Kritiikki
---------

Etenkin perinteisiä rivinumero-BASICeja on kritisoitu siitä, että niiden puutteelliset rakenteelliset ominaisuudet totuttavat aloittelevan ohjelmoijan kirjoittamaan niin sanottua *spagettikoodia*, jossa mielivaltaisiin paikkoihin sijoitettujen ohjelmanpalasten välillä hypitään `GOTO`-käskyillä. Vaikka nykyiset BASICit ovatkin rakenteellisilta ominaisuuksiltaan monipuolisempia, ei kielen huono maine ole vieläkään täysin hävinnyt.

Katso myös
----------

* FreeBASIC
* PBASIC
* Gambas – avoimen koodin kilpailija Visual Basicille

Lähteet
-------

1. ↑  Harsu, Maarit: *Ohjelmointikielet – Periaatteet, käsitteet, valintaperusteet*, s. 20. Helsinki: Talentum, 2005. ISBN 952-14-0981-9.
2. ↑  Raymond, Eric: The Jargon File (WWW) *catb.org*. Viitattu 27.2.2013. englanniksi
3. ↑  Vaughan-Nichols, Steven: Mono brings Visual Basic programs to Linux (WWW) *linuxfordevices.com*.  20.2.2007. Viitattu 27.2.2013. englanniksi
4. ↑  Randy Alfred: April 4, 1975: Bill Gates, Paul Allen Form a Little Partnership  4.4.2008. Wired. Viitattu 235.2019. (englanniksi)

Aiheesta muualla
----------------

CommonsCommons
Wikimedia Commonsissa on kuvia tai muita tiedostoja aiheesta **BASIC**.
### Kääntäjiä

* CoolBasic
* REALbasic (Arkistoitu – Internet Archive)
* Blitz Basic (Arkistoitu – Internet Archive)
* DarkBASIC (Arkistoitu – Internet Archive)
* Microsoft Visual Basic (Arkistoitu – Internet Archive)
* Gambas

|  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * n
* k
* m
Yleisimmät ohjelmointikielet |
| --- |
|  |
| Tuotantokäytössä | 
* Ada
* APL
* Assembly
* AWK
* C
* C++
* C#
* COBOL
* Dart
* Delphi
* Eiffel
* Erlang
* Forth
* Fortran
* Go
* Java
* JavaScript
* Kotlin
* Lisp
* Lua
* Objective-C
* Pascal
* Perl
* PHP
* PostScript
* Python
* R
* Ruby
* Rust
* Smalltalk
* Swift
* Tcl
* TypeScript
* Visual Basic

 |
|  |
| Akateemiset | 
* CLU
* Haskell
* Logo
* ML
* OCaml
* Prolog
* Scheme

 |
|  |
| Historialliset | 
* ALGOL
* BASIC
* Modula-3
* MUMPS
* Plankalkül
* PL/I
* Simula

 |
|  |
| Luettelo yleisimmistä ohjelmointikielistä |

 |

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * n
* k
* m
Microsoft |
| --- |
|  |
| Tuotteet | 

|  |  |
| --- | --- |
| Laitteisto | 
* Kinect
* HoloLens
* LifeCam
* Surface
	+ Hub
	+ Go
	+ Laptop
	+ Laptop Go
	+ Pro
	+ Studio
	+ Duo
	+ Neo
* Xbox

 |
|  |
| Ohjelmisto | 
* 365
* Clipchamp
* Dynamics
* Havok
* Office
* Power Platform
* Servers
* Start
* Tay
* Visual Studio
* Visual Studio Code
* Windows

 |
|  |
| Ohjelmointikielet | 
* BASIC
	+ VB.NET
	+ VBA
	+ VBScript
	+ Visual Basic
* C#
* C/AL
* F#
* MVPL
* Power Fx
* PowerShell
* Transact-SQL
* TypeScript
* Q#
* *Visual J#*
* *Visual J++*

 |
|  |
| Web-ominaisuudet | 
* Azure
* Bing
* Learn
	+ Channel 9
	+ Developer Network
	+ TechNet
* GitHub
* LinkedIn
	+ LinkedIn Learning
* MSN
* Outlook.com
* Store
* Translator

 |

 |
|  |
| Yritys | 

|  |  |
| --- | --- |
| Tapahtumat | 
* Build
* Ignite
* Inspire
* MIX
* PDC
* WinHEC

 |
|  |
| Osastot | 
* Microsoftin tekniset ryhmät
	+ Microsoft Mobile
	+ Skype-yksikkö
* Digital Crimes Unit
* Garage
* Press
* Research
* Myymälät
* .NET Foundation
* Outercurve Foundation
* Gaming
	+ Xbox Game Studios
	+ ZeniMax Media
	+ Activision Blizzard

 |

 |
|  |
| Henkilöt | 
* Bill Gates
* Paul Allen
* Satya Nadella (CEO)

 |
|  |
| Oikeustapaukset | 
* *Komissio vs. Microsoft*
* *Yhdysvallat vs. Microsodt*

 |

 |

|  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 

| Auktoriteettitunnisteet Muokkaa Wikidatassa |
| --- |
|  |
| Kansalliset | 
* Ranska
* BnF data
* Saksa
* Israel
* Yhdysvallat
* Tšekki

 |
|  |
| Muut | 
* IdRef

 |

 |