3.4 Komentokieli vai käännettävä ohjelmointikieli

Komentokielet (engl. scripting languages), kuten Tcl ja Perl, on suunniteltu aivan eri tarkoitusta varten ja edustavat erilaista ohjelmointityyliä kuin käännettävät ohjelmointikielet (engl. syst em programming languages) kuin C tai Java . Tämä johtaa kielien perusteelliseen erilaisuuteen. Käännettävät ohjelmointikielet on suunniteltu monimutkaisten rakenteiden ja algoritmien rakentamiseen, kun taas komentokielet on tehty helpottamaan yhteyksiä eri komponenttien välillä ja tukemaan nopeaa sovellusten kehitystä. Komentokielet ovatkin usein pienten ohjelmien yhteydessä tarkoituksenmukaisempia kuin käännettävien ohjelmointikiel ien käyttö. 

Joissakin tapauksissa voi kuitenkin yhdistää molempien lähestymistapojen parhaat puolet. Tällöin osan ohjelmasta, esimerkiksi vaativaa laskentaa sisältävät osat, voi kirjoittaa käännett& auml;vällä ohjelmointikielellä, mutta muihin osiin käyttää komentokieltä. Tietokoneiden resurssien rajoitukset eivät enää ole komentokielisten ohjelmien kehityksen esteenä ja monipuoliset sovellukset vaativat monien eri komponenttien yhdistämistä. Täten komentokielien käytettävyys korostuu entisestään ja niiden merkitys ohjelmoinnin tulevaisuudessa on tärkeä.

Komentokielen tavoitteena on lähestyä ns. "korkeamman tason" (engl. high level) ohjelmointia ja nopeampaa sovellusten kehitystä kuin käännettävien ohjelmointikielien. Termi "korkeampi taso" tarkoitta a ohjelmointikieltä, jossa monet yksityiskohdat tehdään automaattisesti. Tällöin ohjelmoija voi saada työn tehtyä vähemmällä itse kirjoitetun koodin määrällä (vrt. Delphi) ja nopeammin.

John K. Ousterhout vertailee artikkelissaan [OUS97A] perinteisiä käännettäviä ohjelmointikieliä (C, C++ ja/tai Java) komentokieliin (Tcl/Tk ja Perl). Artikkeliaan varten hän keräsi aineistoa uutis ryhmän comp.lang.tcl avulla sekä monen avustajan myötävaikutuksella. Vertailukohteena oli koodin pituus sekä ohjelmointiin käytetty aika.

Taulukon 3.1 ensimmäisessä sarakkeessa mainitaan, mikä sovellus on kyseessä ja kuka on Tcl-koodin tehnyt. Toisessa sarakkeessa kerrotaan käytetty ohjelmointikieli. Taulukon kolmannessa sarakkeessa on vertailtu k oodin pituutta ja tekoaikaa. Neljäs sarake on koodin pituuden vertausluku (kuinka monta kertaa enemmän C/C++-koodia on kirjoitettu Tcl:ään verrattuna) ja viides sarake on koodin tekoajan vertausluku (kuinka monta kertaa kauemmin C/C++- koodia on kirjoitettu Tcl-kieliseen koodiin verrattuna). Kuudennessa sarakkeessa on sovellukseen liittyviä kommentteja.

 

Sovellus (Tekijä)

Kieli

Vertailu

Pituus

Aika

Kommentit

Tietokantasovellus

(Ken Corey)

C++:

Tcl:

2 kuukautta

1 päivä

60

C++ -versio toteutettiin ensin.

Tietokonejärjestelmän testaaja ja asentaja

(Andy Belsey)

C:

 

C FIS:

Tcl/Perl:

272 000 riviä, 120 kuukautta

90 000 riviä, 60 kuukautta

7700 riviä, 8 kuukautta

47

8

C-versio toteutettiin ensin.

Tcl/Perl -versio korvasi molemmat C-sovellukset.

Tietokantasovellus

(Ken Corey)

C++:

Tcl:

2-3 kuukautta

1 viikko

8-12

C-versio toteutettiin ensin.

Turvatarkistaja

(Jim Graham)

C:

Tcl:

3000 riviä

300 riviä.

10

C-versio toteutettiin ensin.

Tcl-versiossa enemmän toimintoja.

Öljylähteen tuotekäyrien näyttö

(Dan Schenck)

C:

Tcl:

3 kuukautta

2 viikkoa

6

Tcl-versio toteutettiin ensin.

Kyselyn lähetysohjelma

(Paul Healy)

C:

Tcl:

1200 riviä, 4-8 viikkoa

500 riviä, 1 viikko

2.5

4-8

C-versio toteutettiin ensin, ei ole kommentoitu.

Tcl-versiossa enemmän toimintoja, kommentoitu.

Lomakkeen käsittely työkalu

C:

Tcl:

1460 riviä

380 riviä

4

Tcl-versio toteutettiin ensin.

Simulaattori ja GUI

(Randy Wang)

Java:

Tcl:

3400 riviä, 3-4 viikkoa

1600 riviä, alle 1 viikko

2

3-4

Tcl-versiossa 10-20% enemmän toimintoja.

Tcl-versio toteutettiin ensin.

Taulukko 2.1. C/C++ -koodin ja Tcl/Perl -koodin vertailua

 

Tässä vertailussa Tcl-kieliset sovellukset olivat monin kerroin nopeampia tehdä ja monessa tapauksessa sovellus on monipuolisempia kuin C/C++ -kielillä toteutettu sama sovellus.


previous gif next gif
Luk-tutkielma: Tcl/Tk -opiksi ja iloksi.