Jossakin vaiheessa ohjelmoinnin opiskelua tullaan siihen, että ohjelma pitäisi toteuttaa jollakin olemassa olevalla ohjelmointikielellä (on tosin ohjelmointikursseja, joilla käytetään keksittyä ohjelmointikieltä).
Seuraavassa esitämme ohjelman jonka ainoa tehtävä on tulostaa teksti:
Terve! Olen ??- kielellä kirjoitettu ohjelma.
Itse ohjelman suunnittelu on tällä kertaa varsin triviaali ja tehtävä ei tarvitse varsinaista tarkennustakaan, kaikki on sanottu tehtävän määrityksessä. Siis valitaan vain käytetyn kielen tulostuslause.
{ Pascal- kieli } PROGRAM olen(OUTPUT); BEGIN WRITELN('Terve! Olen Pascal- kielellä kirjoitettu ohjelma.'); END. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - käynnistä vaikkapa Turbo Pascal TP OLEN.PAS - kirjoita ohjelma - paina [Ctrl- F9]
/* C- kieli */ #include <stdio.h> int main(void) { printf("Terve! Olen C- kielellä kirjoitettu ohjelma.\n"); return 0; } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - käynnistä vaikkapa Turbo C TC OLEN.C - kirjoita ohjelma - paina [Ctrl- F9]
// C++ - kieli #include <iostream.h> int main(void) { cout << "Terve! Olen C++ - kielellä kirjoitettu ohjelma.\n"; return 0; } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - käynnistä vaikkapa Turbo C++ TC OLEN.CPP - kirjoita ohjelma - paina [Ctrl- F9] - huomattakoon, että myös OLEN.C kelpaisi sellaisenaan C++ ohjelmaksi
// Java -kieli public class HelloWorld { public static void main(String[] args) { System.out.println("Terve, Olen Java-kielella kirjoitettu ohjelma.\n"); } }
C Fortran- kieli PRINT*,'Terve! Olen Fortran- kielellä kirjoitettu ohjelma.' STOP END
- - ADA- kieli with TEXT_IO; use TEXT_IO; procedure ADA_MALLI is pragma MAIN; begin PUT("Terve! Olen ADA- kielellä kirjoitettu ohjelma."); NEW_LINE; end ADA_MALLI;
REM BASIC- kieli PRINT "Terve! Olen BASIC- kielellä kirjoitettu ohjelma." END - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - käynnistä vaikkapa Quick Basic QBASIC OLEN.BAS - kirjoita ohjelma - paina [Alt- R][Return]
APL- kieli 'Terve! Olen APL- kielellä kirjoitettu ohjelma.'
(* Modula- 2 - kieli *) MODULE olen; FROM InOut IMPORT WriteString, WriteLn; BEGIN WriteString("Terve! Olen Modula- 2 - kielellä kirjoitettu ohjelma."); WriteLn; END olen.
; AutoLisp (prin1 "Terve! Olen AutoLisp- kielellä kirjoitettu ohjelma.") - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Kirjoita rivi AutoCadissä (rivi tosin tulostuu 2x)
( FORTH- kieli ) : Olen " Terve! Olen FORTH- kielellä kirjoitettu ohjelma." TYPE CR ;
; 8086 assembler DOSSEG .MODEL TINY .STACK .DATA viesti DB 'Terve! Olen 8086- assemblerilla kirjoitettu ohjelma.',0DH,0AH,'$' .code olen PROC NEAR MOV AX,@@DATA MOV DS,AX ; Viestin segmentti DS:ään MOV DX,OFFSET viesti ; Viestin offset osoite DX:ään MOV AH,09H ; Funktiokutsu 9 = tulosta merkkijono DS:DX INT 21H ; Käyttöjärjestelmän kutsu MOV AX,4C00H ; Funktiokutsu 4C = ohjelman lopetus INT 21H ; Käyttöjärjestelmän kutsu olen ENDP END olen - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - kirjoita ohjelma jollakin ASCII- editorilla nimelle OLEN.ASM - anna käyttöjärjestelmässä komennot (oletetaan että TASM on polussa): TASM OLEN TLINK OLEN OLEN
Siis erot eri kielten välillä ovat hyvin kosmeettisia (Pascalin BEGIN on C:ssä { jne.). Jollakin kielellä asia pystyttiin esittämään hyvin lyhyesti ja jossakin tarvitaan enemmän määrittelyjä. Ainoastaan assembler- versio on sellaisenaan epäselvä, suoritettavia lauseita on täytynyt kommentoida enemmän.
Turbo Pascalin laajennukset tekevät kielestä erinomaisen ja nopean kääntäjän jaUNIT- kirjastojen ansiosta se on todella miellyttävä käyttää. Nykyisin lisäksi Delphi- sovelluskehittimen kielenä on juuri Turbo Pascal (Borland Pascal). Delphi on eräs merkittävimmistä ja helppokäyttöisimmistä työkaluista Windows- ohjelmointiin. Ohjelmat toimivat kuitenkin vain Windows - mikroissa.
BASIC- kieli on yleensä suppea kieli ja siksi helppo oppia. Lukuisten eri murteiden takia ohjelmien siirtäminen ympäristöstä toiseen on lähes mahdotonta. Microsoftin Visual Basic on kuitenkin Windows- ympäristössä nostanut Basicin jopa ohjelmankehittäjien työkaluksi.
Fortran on luonnontieteellisissä sovelluksissa eniten käytetty kieli ja siihen on saatavissa laajat aliohjelmakirjastot useisiin numeriikan ongelmiin. Mikroissa kääntäjät ovat kuitenkin hitaita. Fortran- 77 standardi on eräs parhaista standardeista, jota seuraamalla ohjelma toimii lähes koneessa kuin koneessa.
ADA on Pascalin kaltainen vielä tarkemmin tyypitetty kieli, jossa on joitakin olio- ominaisuuksia. Se on Yhdysvaltain puolustusministeriön tukema kieli, joten se lienee tulevaisuuden kieliä kunhan kääntäjien hinnat laskevat ja mikrojen kääntäjät tulevat nopeammiksi ja pienemmiksi tai mikrot kasvavat. Sopii erityisesti raskaiden reaaliaikatoteutusten kirjoittamiseen (esim. ohjusjärjestelmät).
C- kieli on välimuoto Pascalista ja konekielestä. Ohjelmoijalle sallitaan hyvin suuria vapauksia, mutta toisaalta käytössä on hyvät tietotyypit ja rakenteet. Hyvä kieli osaavan ohjelmoijan käsissä, mutta aloittelija saattaa saada aikaan katastrofin. ANSI- C on suhteellisen hyvin standardoitu ja sitä seuraamalla on mahdollista saada ohjelma toimimaan pienin muutoksin myös toisessakin laiteympäristössä. Lisäksi ANSI- C:n tuoma funktioiden prototyypitys ja muutkin tyyppitarkistukset poistavat suuren osan ohjelmointivirheiden mahdollisuuksista, eivät kuitenkaan kaikkia. UNIX - käyttöjärjestelmän leviämisen myötä C on kohonnut erääksi kaikkein käytetyimmistä kielistä.
C++ on C- kielen päälle kehitetty olio- pohjainen ohjelmointikieli. Aikaisemmin C- kielellä oli niin suuri merkitys, että se kannatti ehkä opetella aluksi. Nykyisin jokainen merkittävä C- kääntäjä on myös C++- kääntäjä. Oliopohjaisen ohjelmoinnin kannalta on parempi mitä aikaisemmin olio- ohjelmointi opetellaan. Valitettavasti C++ ei ole hypridikielenä paras mahdollinen ohjelmoinnin opetteluun. Kuitenkin paremmin opetteluun soveltuvat kielet ovat usein "leikkikieliä", kuten alkuperäinen Pascalkin oli. Delphi olisi mahtavan graafisen kirjastonsa ja kehitysympäristönsä ansiosta loistava opettelutyökalu, valitettavasti vaan lehti- ilmoituksissa harvoin haetaan Delphi- osaajia! Kohtuullisena kompromissina C++:kin voidaan valita opettelukieleksi, kunhan ei heti yritetä opetella kaikkia kielen kommervenkkejä. Jokin työkalu olio- ohjelmoinnin opiskeluun tarvitaan, sillä erityisesti tapahtumaohjattujen järjestelmien (kuten graafiset käyttöliittymät) ohjelmoinnissa oliopohjaisilla kielillä on hyvin merkittävä asema.
Monisteen loppuosassa käytämme C++- kieltä esimerkkikielenä sen siirrettävyyden takia.
Java on verkkoympäristössä tapahtuvaan ohjelmointiin kehitetty välikielellä käännettävään tulkkaamiseen perustuva oliokieli. Javaa on sanottu C++:aa yksinkertaisemmaksi, mutta kuitenkin Java kirjat ovat yhtä paksuja kuin C++ kirjatkin. Nykyisin onkin monesti niin, ettei itse kieli ole ongelma, vaan sille kehitettyjen aliohjelmakirjastojen opettelu ja käyttö. Javan suurimpana etuna on sen lähes kaikissa koneissa toimiva graafinen kirjasto. Java työkalut kehittyvät kovaa vauhtia ja saattaakin olla että jo seuraava ohjelmointikurssi pidetäänkin Javan pohjalta. Tällä kertaa vielä emme Javaa valitse, koska emme halua olla juoksemassa pelkkien muotioikkujen perässä. Tosin C++ opiskelu ei mitenkään haittaa mahdollista myöhempää Javaan siirtyvää ohjelmoijaa, pikemminkin päinvastoin.
Vaikkei valittu ohjelmointikieli olekaan kurssin tärkein asia, lukijan on kuitenkin hyvin tarkkaan ymmärrettävä kielestä esitettävät seikat, koska liika omapäinen "harhailu" saattaa kielen puuttuvien tarkistusten takia käydä kohtalokkaaksi. Joudumme ottamaan käyttöön esimerkiksi osoittimet jo heti opiskelun alkuvaiheessa.