previous next Title Contents Index

6. Esimerkkejä eri kielistä


Mitä tässä luvussa käsitellään?

* katsotaan mitä syntaktista eroa on eri ohjelmointikielillä

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.

6.1 Esimerkkiohjelmat

Jotta lukija ymmärtäisi, ettei eri kielten välillä ole kuin pieni ero, esitämme ohjelman useilla eri kielillä. Ohjelman lopun jälkeen olevan poikkiviivan alapuolella on mahdollisesti esitetty miten ohjelmaa voitaisiin kokeilla MS- DOS- koneessa:

6.1.1 Pascal

	{ 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]

6.1.2 C

	/* 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] 

6.1.3 C++

	// 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

6.1.4 Java

	// Java -kieli
	public class HelloWorld {
	   public static void main(String[] args) {
	      System.out.println("Terve, Olen Java-kielella kirjoitettu ohjelma.\n");
	   }
	}

6.1.5 Fortran

	C Fortran- kieli
	      PRINT*,'Terve! Olen Fortran- kielellä kirjoitettu ohjelma.'
	      STOP
	      END

6.1.6 ADA

	- -  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;

6.1.7 BASIC

	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] 

6.1.8 APL

	 APL- kieli
	  'Terve! Olen APL- kielellä kirjoitettu ohjelma.'

6.1.9 Modula- 2

	(* Modula- 2 - kieli *)
	MODULE olen;
	FROM InOut IMPORT WriteString, WriteLn;
	BEGIN
	  WriteString("Terve! Olen Modula- 2 - kielellä kirjoitettu ohjelma.");
	  WriteLn;
	END olen.

6.1.10 Lisp

	; AutoLisp
	(prin1 "Terve! Olen AutoLisp- kielellä kirjoitettu ohjelma.")
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
	-  Kirjoita rivi AutoCadissä (rivi tosin tulostuu 2x) 

6.1.11 FORTH

	 ( FORTH- kieli ) 
	: Olen 
	  " Terve! Olen FORTH- kielellä kirjoitettu ohjelma." TYPE CR
	;

6.1.12 Assembler

	; 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.

6.2 Käytettävän kielen valinta

Kullakin ohjelmointikielellä on omat etunsa. Pascal on hyvin tyypitetty kieli ja sillä ei ole aloittelijankaan niin helppo tehdä eräitä tyypillisiä ohjelmointivirheitä kuin muilla kielillä. Standardi Pascal on kuitenkin hyvin suppea ja siitä puuttuu esim. merkkijonojen käsittely.

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.


previous next Title Contents Index