BASIC

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. Myös kommentit (jotka alkoivat joko `REM` tai `'`) jätettiin yleensä pois samasta syystä. 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 == == Aiheesta muualla == === Kääntäjiä === * CoolBasic * REALbasic * Blitz Basic * DarkBASIC * Microsoft Visual Basic * Gambas * Luokka:Seulonnan keskeiset artikkelit