Tcl (ohjelmointikieli)
Tähän artikkeliin tai sen osaan on merkitty lähteitä, mutta niihin ei viitata. Älä poista mallinetta ennen kuin viitteet on lisätty. Voit auttaa Wikipediaa lisäämällä artikkelille asianmukaisia viitteitä. Lähteettömät tiedot voidaan kyseenalaistaa tai poistaa. |
Tcl | |
---|---|
Tyypitys | dynaaminen tyypitys |
Yleinen suoritusmalli | tulkattava |
Kehittäjä | John Ousterhout |
Vakaa versio | 8.6.13 ()[1] |
Käyttöjärjestelmä | alustariippumaton |
Verkkosivu | https://www.tcl-lang.org/ |
Uutisryhmä | comp.lang.tcl |
Tcl (engl. Tool Command Language) on John Ousterhoutin kehittämä tulkattava ohjelmointikieli. Sen nimi voidaan lausua englanniksi ”tickle”. Tcl:ää pidetään helposti opittavana, mutta silti tehokkaana työvälineenä oikeissa käsissä. Tcl:ää käytetään yleensä nopeiden prototyyppien luomiseen, ohjelmien komentosarjakielenä, graafisissa käyttöliittymissä ja testauksessa. Tcl on vuoden nuorempi kuin Perl.
Historia[muokkaa | muokkaa wikitekstiä]
Kieli syntyi John Ousterhoutin työkaluista mikropiirien suunnitteluun Berkeleyn yliopistossa 1980-luvun alussa. Ousterhout ja hänen oppilaansa tekivät useita interaktiivisia työkaluja mikropiirien suunnitteluun, joissa jokaisessa tarvittiin komentokieli. Kehityksen kohteena olivat työkalut eikä niiden komentokieli, josta johtuen kielet olivat heikkoja.[2]
Syksyllä 1987 Ousterhout oli sapattivapaalla, jolloin syntyi ajatus sulautettavasta tulkattavasta kielestä, joka voitiin toteuttaa uudelleen käytettävänä ohjelmakirjastona. Tulkki tarjoaisi yleiset ominaisuudet kuten muuttujat, kontrollirakenteet ja proseduurit. Kieltä käyttävä sovellus lisäisi omat ominaisuutensa kieleen laajennuksina, jolloin kieltä voisi käyttää sovelluksen ohjaamiseen. Tcl syntyi tästä käyttötarkoituksesta.[2]
Ousterhout aloitti työn kielen parissa palattuaan sapattivapaalta alkuvuodesta 1988.[2]
Tcl:n ominaisuuksia ja ajatusmalleja[muokkaa | muokkaa wikitekstiä]
- Kielen rakenteet ovat komentoja kuten kaikki muutkin
- Kaiken voi dynaamisesti määritellä uudelleen tai korvata uudella
- Kaikkea voi käsitellä merkkijonona
- Erittäin yksinkertainen syntaksi — vain 11 sääntöä
- Helposti laajennettavissa C:llä, C++:lla, ja Javalla.
- Tulkattu kieli — koodia voidaan luoda ja muokata dynaamisesti
- Täysi Unicode-tuki
- Käyttöjärjestelmästä riippumaton
- Läheinen yhteys graafiseen käyttöliittymään Tk:n kautta.
Esimerkkejä[muokkaa | muokkaa wikitekstiä]
”>>”-merkkijono kuvaa ohjelman antamaa tulostetta eikä kuulu TCL:ään.
"#"-merkki rivin alussa on kommenttirivin merkki eli tulkki jättää kyseisen rivin huomioimatta.
Hello world:
puts "Hei, maailma!"
>> Hei, maailma!
Tätä artikkelia tai sen osaa on pyydetty parannettavaksi, koska se ei täytä Wikipedian laatuvaatimuksia. Voit auttaa Wikipediaa parantamalla artikkelia tai merkitsemällä ongelmat tarkemmin. Lisää tietoa saattaa olla keskustelusivulla. Tarkennus: ei pitkiä koodipätkiä esimerkkeinä |
Yksikkömuotoilija
#!/bin/sh # the next line restarts using -*-Tcl-*-sh \ exec tclsh "$0" ${1+"$@"} proc size {data {dec ""} {unit ""} {nobinary false}} { # numeroarvo pakollinen, muut saavat oletusarvot set i 0 # Tarkistetaan arvot if { $dec == "" } { set dec 2 } if { $unit == "" } { set unit B } if { $nobinary } { set ratio 1000 } else { set ratio 1024 } # Valitaan oikea etuliite if { !$nobinary } { # Binääriset set units [split "$unit Ki$unit Mi$unit Gi$unit Ti$unit Pi$unit Ei$unit Zi$unit Yi$unit" " "] } { # Kymmenkantaiset set units [split "$unit k$unit M$unit G$unit T$unit P$unit E$unit Z$unit Y$unit" " "] } # Etuliitteet pienille luvuille set small_units [split "m$unit µ$unit n$unit p$unit f$unit a$unit z$unit y$unit" " "] # Negatiivinen vai positiivinen if { [expr {$data != [set data [expr {abs($data)}]]}] } { set m - } { set m "" } # Jaetaan lukua kunnes se on pienempi kuin suhdeluku while { [expr { $data/pow($ratio,$i) }] >= $ratio } { incr i } # Jos lukua ei jaettu kertaakaan, niin kerrotaan lukua kunnes se if { $i == 0 } { while { ( $data*pow($ratio,-$i) ) < 1 } { incr i -1 } } # Muotoilu ja palautus if { $i >= 0 } { # Onko luku pienempi vai suurempi kuin 1 if { $i < 9 } { # Onko etuliitettä luvulle return $m[format "%.${dec}f" [expr $data/pow($ratio,$i)]]\ [lindex $units $i] } { return $m[format "%.${dec}f" [expr $data/pow($ratio,$i)]]·10^${i}\ [lindex $units 0] } } else { if { [expr { abs($i)-1 }] < 8 } { # Onko etuliitettä luvulle return $m[format "%.${dec}f" [expr $data/pow($ratio,$i)]]\ [lindex $small_units [expr { abs($i)-1 }] ] } { return $m[format "%.${dec}f" [expr $data/pow($ratio,$i)]]·10^(${i})\ [lindex $units 0] } } } puts [size 12341234] #>> 11.77 MiB puts [size 12341234 4] #>> 11.7695 MiB puts [size 1048576 1 b/s] #>> 1.0 Mib/s puts [size 439534 2 m true] #>> 439.53 km puts [size 0.00000000043981 2 m true] #>> 439.81 pm puts [size 2341234234938248233092330942309320942342342342342342323843423948230948203948029840293840923840238402384029348820.0 20 m 1000] #>> 2.34123423494000038048·10^37 m
TCL ja olio-ohjelmointi[muokkaa | muokkaa wikitekstiä]
Vaikka TCL:ssä itsessään ei ole olio-ohjelmointirajapintaa, sitä voi laajentaa tukemaan uusia ominaisuuksia tarpeen mukaan. Kieleen on tehty monia C-laajennuksia, jotka mahdollistavat olio-ohjelmoinnin, esimerkiksi XOTcl ja incr Tcl. Myös kokonaan TCL:llä tehtyjä olioperustaisia laajennuksia on. Tästä esimerkkinä Snit.
TCL:ää käyttäviä ohjelmistoja[muokkaa | muokkaa wikitekstiä]
TCL:ää käyttäviä ohjelmia ovat aMSN, eggdrop, x-chat ja BitchX.
Lähteet[muokkaa | muokkaa wikitekstiä]
- Flynt, Clif: TCL/TK : a developer’s guide. 3rd ed.. Amsterdam: Elsevier, 2012. ISBN 978-0-12-384717-1. (englanniksi)
Viitteet[muokkaa | muokkaa wikitekstiä]
- ↑ https://sourceforge.net/p/tcl/mailman/message/37738603/. Arvo on haettu Wikidatasta.
- ↑ a b c John Ousterhout: The birth of Tcl tcl.tk. Viitattu 8.11.2022. (englanniksi)
Aiheesta muualla[muokkaa | muokkaa wikitekstiä]
- http://www.tcl.tk/
- http://www.activestate.com/ — tarjoaa jakelupakettia
- http://wiki.tcl.tk/ Tcl-wiki
- http://www.tcl.tk/advocacy/tclHistory.html — historiaa
- http://www.tcl.tk/man/tcl8.4/TclCmd/Tcl.htm — 11 sääntöä englanniksi
- http://wiki.tcl.tk/17437 — 11 sääntöä suomeksi
|