TCL
Wikipedia
TCL (Tool Command Language) on John Ousterhoutin luoma 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.
Sisällysluettelo |
[muokkaa] TCL:n ominaisuuksia ja ajatusmalleja
- 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, Javalla ja TCL:llä.
- 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.
[muokkaa] Esimerkkejä
”>>”-merkkijono kuvaa ohjelman antamaa tulostetta eikä kuulu TCL:ään.
"#"-merkki rivin alussa on kommenttirivin merkki eli tulkki jättää kyseisen rivin huomioimatta.
Hello word:
puts "Hei, maailma!" >> Hei, maailma!
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
[muokkaa] TCL ja olio-ohjelmointi
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.
[muokkaa] TCL:ää käyttäviä ohjelmistoja
TCL:ää käyttäviä ohjelmia ovat aMSN, eggdrop, x-chat, XiRCON ja BitchX.
[muokkaa] Aiheesta muualla
- 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
ALGOL| BASIC| Modula-3 | MUMPS | Plankalkül | PL/I | Simula
Tuotantokäytössä: |
|