tcl | |
---|---|
Kieliluokka |
moniparadigma : oliosuuntautunut , toiminnallinen , menettelyllinen , tapahtumalähtöinen , pakottava |
Toteutustyyppi | tulkittu |
Esiintyi | 1988 |
Tekijä | John Outterhout |
Tiedostotunniste _ | .tcl |
Vapauta |
|
Tyyppijärjestelmä | dynaaminen |
Vaikutettu | Shell , Lisp |
vaikutti | Python , Ruby |
Lisenssi | BSD:n kaltainen |
Verkkosivusto | tcl.tk |
Mediatiedostot Wikimedia Commonsissa |
Tcl ( englannin kielestä Tool Command Language - "työkalujen komentokieli", lue "ticle" tai "ti-si-el") on korkean tason komentosarjakieli .
Tcl:tä käytetään usein yhdessä Tk (Tool Kit) -grafiikkakirjaston kanssa . Tcl / Tk -nippua venäjäksi kutsutaan joskus nimellä "Tak-tikl" (englanninkielinen versio on "tikl-tok").
Kielen sovellusalueita ovat nopea prototyyppien valmistus, graafisten käyttöliittymien luominen konsoliohjelmille (ohjelmistopaketit), upottaminen sovellusohjelmiin, testaus . Tcl:ää käytetään myös web-kehityksessä .
Tcl:ssä kaikentyyppisiä tietoja, mukaan lukien ohjelmakoodi, voidaan käsitellä merkkijonoina. Tämä tekee siitä kielen, jolla on luonnollinen tuki metaohjelmointia varten . Tämä ohjelmointiparadigma otettiin huomioon kielen kehittämisen ja evoluution aikana.
Tcl-ohjelma koostuu rivinvaihto- tai puolipisteillä erotetuista komennoista . Jokainen komento koostuu joukosta kenttiä, jotka on erotettu välilyönneillä. Ensimmäisen kentän on oltava komennon nimi, ja muut valinnaiset kentät ovat kyseiselle komennolle välitettyjä argumentteja. Komento palauttaa arvon, joskus tyhjän. Eli, kuten Lisp , Tcl käyttää etuliitemerkintää.
Varsinaisia avainsanoja ei ole - Tcl:n komennon käsite on samanlainen kuin yleisten ohjelmointikielien menettelyn tai funktion käsite. Tämä koskee myös kielenhallintarakenteita. Yhdessä perussyntaksin kanssa tämä tekee kielestä hyvin laajennettavan, mukaan lukien muilla kielillä kirjoitetut kirjastot, kuten C / C++ tai Java .
Tcl:ssä on myös hyvin toteutettu tapahtumapohjainen ohjelmanhallintamalli . Tapahtumia voidaan generoida ajastimella, kun dataa ilmestyy kanavalle, muuttujan arvon muuttuessa, ulkoisen ohjelman päättyessä tai yksinkertaisesti kun käyttäjä työskentelee Tk-rajapinnalla. Voit määrittää omia tapahtumia ja hallita niitä.
Kuten useimmat nykyaikaiset komentosarjakielet , Tcl sisältää edistyneitä työkaluja säännöllisten lausekkeiden käsittelyyn, toimii assosiatiivisten taulukoiden ja muiden dynaamisten tietorakenteiden kanssa.
Basic Tcl ei tukenut OOP :ta ennen versiota 8.6, mutta koska kielen syntaksia on helppo laajentaa, Tcl:stä on olemassa monia oliomekanismien laajennuksia, jotka on toteutettu linkkikirjastoina C :ssä tai itse Tcl:ssä. Ennen versiota 8.5 yleisimmät olivat: incr Tcl , XOTcl ja Snit [3] . Toinen itse Tcl:ää käyttävien OOP-mekanismien toteutus, joka sisältyy Tcl-standardikirjastoon [4] , on STOOOP- kirjasto [5] . Versiosta 8.5 lähtien OOP for Tcl on uusi toteutus, TclOO , joka on sisällytetty versiosta 8.6 lähtien kieliytimeen [6] [huomautus 1] :
laajennus | toteutettu | käytetyn mallin ominaisuudet |
---|---|---|
XOTcl | C | tehokas objektijärjestelmä dynaamisella luokkien ja menetelmien määrittelyllä, lähellä CLOSia |
incr Tcl | C | OOP C++- tyyliin , jota laajennettiin konfiguraattoreiden käyttöönotolla |
Snit | tcl | objektimallin toteutus perustuu delegointiin , ei perintöön |
SOOOP | tcl | OOP tyyliin mahdollisimman lähellä C ++, luokan vaihtomekanismi on myös otettu käyttöön |
TclOO [7] | C | Kompakti mutta tehokas oliojärjestelmä, jota voidaan käyttää sekä suoraan että kehikkona kehittyneiden OOP-mallien rakentamiseen. |
Nimiavaruuksia tuetaan kielen ydintasolla. Toteutettaessa OOP-mekanismeja Tcl:ssä käytetään nimiavaruuksien sisäkkäisten hierarkioiden tukea tällä kielellä [8] .
Tcl on helppo ohjelmoida funktionaaliseen tyyliin : se tarjoaa mekanismeja, kuten korkeamman asteen funktioita ja funktion abstraktioita [9] , vaikka Tcl:ää käytetään harvoin tällä tavalla. Tässä on esimerkki siitä, kuinka kaksi funktiota voidaan muodostaa :
proc o { f g x } { $f [ $g $x ]}Versiossa 8.5 Tcl esitteli myös Apply- komennon , joka tekee tästä ohjelmointityylistä paljon helpompaa.
Tässä on esimerkki sen käytöstä virallisesta dokumentaatiosta:
proc map { lambda list } { aseta tulos {} foreach item $list { lappend tulos [apply $lambda $item ] } return $result } kartta { x { paluu [ merkkijonon pituus $x ] : $x }} { a bb ccc dddd }tämän esimerkin tulos on
1:a 2:bb 3:cc 4:ddddJohn Outterhout kehitti kielen ollessaan Kalifornian yliopistossa Berkeleyssä. Alkuperäinen tavoite oli luoda universaali kieli konsolisovellusten upottamiseen . Tämän jälkeen Outterhout laajensi kieltään työkaluilla graafisten käyttöliittymien luomiseen - näin syntyi Tcl / Tk. [kymmenen]
Tikl-yhteisö on kasvanut useisiin satoihin tuhansiin ohjelmoijiin 4 vuoden ajan yliopiston seinien sisällä tapahtuneen kehityksen aikana. Vuonna 1993 kehitettiin ensimmäinen olio-laajennus, incr Tcl .
Vuonna 1994 Outterhoutista tuli SunScript-projektin johtava insinööri. Seuraavien 4 vuoden aikana Tiklistä tuli yksi Sun Corporationin projekteista, ja se ei vain pysynyt vapaasti hajautettuna järjestelmänä, vaan myös paransi merkittävästi, ja siitä tuli cross-platform .
Richard Stallman teki merkittävän iskun kielen suosioon julkaisessaan syyskuussa 1994 useissa uutisryhmissä suosituksen "Miksi sinun ei pitäisi käyttää Tcl:ää" [11] . Siinä hän perustuu väitteisiin, että "Tcl ei ole suunniteltu vakavaksi ohjelmointikieleksi" ja "Tcl:llä on erityinen syntaksi, joka houkuttelee hakkereita yksinkertaisuutensa vuoksi. Mutta Tcl-syntaksi näyttää oudolta useimmille käyttäjille." , ja myös Emacs Lispin edistämisen yhteydessä antoi tuomion: " GNU -projekti ei aio käyttää Tcl:ää GNU-ohjelmistossa" . Kielen muotoilua koskevien subjektiivisten väitteiden lisäksi Stallman toi esiin tuolloin objektiivisen epäkohdan - heikon suorituskyvyn.
Tiklia aktiivisesti käyttävien kehittäjien määrän kasvu oli kuitenkin tällä ajanjaksolla 600 %.
Vuonna 1998 Java - buumin ja siihen liittyvän kovan kilpailun vuoksi yhtiö ei voinut enää kiinnittää samaa huomiota tikliin. John Outterhout jättää Sunin muodostamaan (Sun-tuella) Scripticsiä jatkaen Tcl/Tk-teknologian kehitystä [12] [13] . Se oli yksi ensimmäisistä kaupallisista ohjelmistoyrityksistä, joka keskittyi vapaisiin ohjelmistoihin .
Maaliskuussa 1998 Ousterhout kirjoitti klassikkoartikkelin "Scripting: High-Level Programming for the 21st Century" [14] , jossa hän kutsui komentosarjakieliä järjestelmien integrointikieliksi, koska ne keskittyvät ensisijaisesti työskentelyyn käyttöjärjestelmän objektien kanssa. ympäristöön, ei perustietoihin. Tämä mahdollistaa tällaisten objektien "liimamisen" yhdeksi kahdella tai kolmella komennolla kirjoittamatta tuhansia koodirivejä .
Samana vuonna hän voitti kaksi suurta palkintoa Tcl-kielen kehittämisestä. Ensimmäinen on ACM Software System Award, joka tunnustaa "merkittävimmän ohjelmiston". Palkinnolla on aiemmin palkittu perusjärjestelmiä, kuten TCP/IP -protokollapino , ensimmäinen laskentataulukko , ensimmäinen relaatiotietokanta , World Wide Web , Unix , PostScript ja Smalltalk . Toinen on vuotuinen USENIX Software Tools User Group (STUG) -palkinto tunnustuksena erinomaisesta ohjelmistosta.
Vuonna 1999 julkaistiin Tcl 8.0 - tässä toteutuksessa ilmestyi ensimmäisen kerran käännös tavukoodiin , mikä mahdollisti nopeuden lisäämisen 6-kertaiseksi [15] . Tcl 8.1 : n seuraava versio sisältää täyden Unicode - tuen ja monisäikeisyyden ensimmäistä kertaa . Tämän julkaisun yhteydessä Outterhout totesi:
"Yleensä 8.1 siirtää Tcl:n uuteen kategoriaan, koska sitä voidaan nyt käyttää palvelinsovelluksissa. C:tä, C++:aa ja Javaa voidaan edelleen käyttää sovellusten suorituskyvyn kannalta kriittisten osien rakentamiseen, kun taas Tcl:llä voidaan integroida ja rakentaa käyttöliittymäkomponentteja. [16]
Vuonna 2000 Scriptics nimettiin uudelleen Ajuba Solutionsiksi, ja Interwoven osti sen, joka ei ollut kiinnostunut työskentelemään ilmaisten ohjelmistojen kanssa . Tässä suhteessa Tcl:n kehittäminen siirrettiin ohjelmointiyhteisölle. Näin muodostettiin Tcl Core Team .
Vancouverin 9. Tcl/Tk-konferenssissa esiteltiin StarKit- virtuaalinen tiedostojärjestelmä , joka tarjoaa uuden, käyttäjäystävällisen tavan jakaa Tcl-ohjelmia.
Ensimmäinen sana on komennon nimi, loput ovat sen argumentteja. Mikä tahansa argumentti voidaan korvata toisella komennolla hakasulkeissa. Kaikki aaltosulkeissa olevat argumentit välitetään komennolle sellaisenaan yhtenä argumenttina.
Syntaksi:
aseta muuttuva arvoEsimerkki:
aseta 2 _ sarja b 3Syntaksi:
# kommenttitekstiEsimerkki:
# on kommenttiSyntaksi:
laittaa ilmettäEsimerkki:
laittaa "Hei! Se olen minä." laittaa 123 laittaa $a laittaa "b = $b"Syntaksi:
while { Tcl_Expression_With_Boolean_Arvo } { TclCommand muuTclCommand ...... _ }Esimerkki:
kun { $x < 10 } { laittaa $x incr x }Syntaksi:
if { Lauseke_Tcl_Boolean_Arvolla } { Tcl-komento }Esimerkki:
jos { $x < 0 } { aseta x 0 }Esimerkki:
kytkin - glob -- $var { { katso } - { näki } - { nähnyt } { laittaa "Kaikki tarkoittaa samaa!" } }yksinkertaisesti palauttaa nykyisen työhakemiston. Ja joukkue
aseta wdir [ pwd ]tallennat nykyisen hakemiston nimen muuttujaan wdir .
palauttaa luettelon nykyisen hakemiston tiedostonimistä, jotka vastaavat kuviota Pattern .
Menettelyt määritellään seuraavasti
proc ProcedureName { Argumenttiluettelo } { …… _ }Seuraava koodinpätkä luo ja alustaa assosiatiivisen taulukon (jota kutsutaan myös kartaksi, sanakirjaksi tai hashiksi muilla kielillä).
pääkaupunki ( Ranska ) Pariisin pääkaupunki ( Italia ) Rooman pääkaupunki ( Saksa ) Berliinin pääkaupunki ( Puola ) Varsova pääkaupunki ( Venäjä ) Moskovan pääkaupunki ( Espanja ) Madrid _ _ _ _ _ _Käytä kyselyä ja näyttää jokin assosiatiivisen taulukon arvoista
laittaa $pääomaa ( Italia )Lista kaikista maista (taulukkonäppäimet) saadaan komennolla
taulukon nimet pääomaTulosta ei lajitella, koska Tcl-taulukot perustuvat hash-taulukoihin .
Puola Espanja Venäjä Saksa Italia RanskaLajittelu voidaan tehdä komennolla
lsort [array names capital ]Jos haluat viitata taulukkoon (välitä se viittauksena), käytä sen sisältävän muuttujan nimeä:
proc demo arrName { upvar 1 $arrName arr ; # sitoa viittaus paikalliseen nimeen #tee jotain arr:lla }Jos haluat käyttää taulukkoa arvon mukaan, käytä array get tai array set . Esimerkiksi taulukon kopioiminen toiseen:
array set Newarr [array get Oldarr ]Tcl 8.5 esitteli arvosanakirjojen ( dict ) välittämät taulukot.
Jos haluat muuntaa skalaarimuuttujan taulukoksi ja päinvastoin, poista olemassa oleva muuttuja unset-komennolla .
Oletusarvoisesti vain proseduurissa määritellyt muuttujat näkyvät proseduurissa. Proseduurin määritelmän ulkopuolella sen muuttujat eivät ole käytettävissä muuten kuin parametrien välitysmekanismin kautta. Proseduurissa voi olla muuttujia samalla nimellä kuin pääohjelmassa, kun taas näiden muuttujien arvot vaihtelevat, itse asiassa ne ovat erilaisia muuttujia. Tämän käyttäytymisen muuttamiseksi käytetään global- tai upvar- komentoja .
Hei, maailmanohjelma näyttää tältä
laittaa "Hei maailma!"tai niin
laittaa { Hei maailma ! _ }Näytetään matriisielementin OldArray(precision) arvo, jonka nimen (array) antaa uusi muuttuja NewArray
set NewArray OldArray asettaa [set $ { NewArray }( tarkkuus )] Numeroiden lisääminen taulukkoonMenetelmä (A) - Lisäys käyttämällä 'foreach' -silmukkaa
aseta numerot { 1 2 3 4 5 6 7 8 9 10 } aseta tulos 0 foreach numero $numerot { aseta tulos [lauseke { $tulos + $numero }] } asettaa $tuloksenMenetelmä (B) - Paljon tyylikkäämpi tapa käyttää "join" -komentoa
aseta numerot { 1 2 3 4 5 6 7 8 9 10 } laittaa [lause [ liitä $numerot + ]] Taulukon sisällön luettelointiTcl_platform - taulukko sisältää tietoja sen alustan ominaisuuksista, jolla Tcl toimii. Kiinteistöjen nimien luettelon voi saada
taulukoiden nimet tcl_platformSeuraava katkelma tulostaa ne arvoineen:
foreach i [array names tcl_platform ] { laittaa "$i = $tcl_platform($i)" }Jos ominaisuudet pitäisi lajitella
foreach i [ lsort [array names tcl_platform ] ] { laittaa "$i = $tcl_platform($i)" }Komentojen sisäkkäisyys on esitetty tässä. Ne voidaan upottaa mihin tahansa syvyyteen. Samanlainen tulos voidaan saavuttaa Tcl 8.5:ssä esitellyllä parray-komennolla [17] .
Suodatustoiminto palauttaa ne luettelon elementit, joille komentosarja arvioi TOSI:
proc filter { list script } { set res {} foreach e $list {if {[ylätason 1 $script $e ]} { lappend res $e }} return $res }Ylätason 1 komento arvioi lausekkeen kontekstissa, jossa sanasuodatinta kutsutaan .
In - menettely on lyhenne merkintäjoukkojen sisällyttämiselle:
proc in { list e } { expr {[ lsearch - tarkka $lista $e ] >= 0 } }Tutkimus:
% suodatin { a b c } { in { b c d }} b cTämä osoittaa, että komennon nimi voi olla mikä tahansa merkkijono sekä muista kielistä tunnettu ?:- operaattori .
Tcl on tulkittu kieli, eli Tcl- ohjelmat ovat valmiita toimimaan ilman kääntämistä ja linkittämistä .
Tcl-tulkki on siirretty yleisimmille alustoille [18] . Sitä jaetaan ilmaisella , ei-copyleft- lisenssillä , mikä mahdollistaa sen käytön rajoituksetta patentoitujen sovellusten kehittämisessä sekä omistusoikeudellisten johdannaisjärjestelmien luomisessa. Kehittäjät kutsuvat sitä BSD-kaltaiseksi , vaikka BSD-lisenssiin verrattuna Tcl-lisenssi asettaa vähemmän rajoituksia.
Tällä hetkellä Tcl-kielen ytimen parissa työskentelee ryhmä kehittäjiä [19] , nimeltään Tcl Core Team [20] . Tcl-kääntäjän ja ydinkirjastojen uusimmat versiot ovat saatavilla SourceForge.net - arkistosta , katso luettelo Tcl/Tk-pääjakelussa olevista sourceforge-projekteista [21] .
Tcl-kääntäjä kokoaa ohjelman väliesitykseen - tavukoodiin ja sitten tulkitsee sen. Toisin kuin esimerkiksi Python , tätä väliesitystä ei tallenneta levylle, vaan ohjelma voidaan tallentaa vain lähdekoodiin, mahdollisesti pakattuina StarKit- moduuliin tai käyttämällä jotakin muuta käärettä . Kääntämisasetuksista riippuen Tcl-tulkki voi tukea monisäikeistystä tai ei .
Vaikka useimmat aloittelevat Tcl-oppikirjat sanovat jotain "Tcl:ssä on vain yksi muuttujatyyppi, merkkijono", todellisuus on, että Tcl-kääntäjät ovat tehneet asioita eri tavalla jo pitkään. Sisäisesti Tcl käyttää dynaamista tyyppijärjestelmää, jossa on automaattinen läpinäkyvä merkkijonon muunnos.
Tcl sisältyy lähes kaikkiin Linux- jakeluihin . Microsoft Windows vaatii erillisen asennuspaketin.
Versio Tcl 8.4 eroaa edellisestä uusilla ominaisuuksilla (64-bittisen koodin optimointi, VFS, itsetutkiskelun lisäykset ) ja jonkin verran suorituskyvyn kasvua tavukoodin käytön optimoinnin vuoksi.
Versioon 8.1 lisätyt uudet ominaisuudet (kuten monisäikeinen tuki, kansainvälistymismahdollisuudet ja Unicode-merkkien käsittely) hidastivat Tcl:ää noin 19 % verrattuna versioon 8, mikä toi vauhtia. 8.4:n kehittäjät ovat tehneet kaikkensa maksimoidakseen ohjelman suoritusnopeuden varmistaakseen, että ne eivät toimi vain hitaammin, vaan jopa nopeammin kuin se oli, kun versio 8.0 ilmestyi. Tämä tavoite saavutettiin lähes kaikilla Tcl- ja Tk-työkaluilla - versio 8.4 on keskimäärin 8 kertaa nopeampi kuin versio 7.6 [15] .
TCL:n nykyinen versio on 8.6.
Vaihtoehtoiset toteutukset ja murteetOn olemassa vaihtoehtoisia Tcl-toteutuksia suosittuja yleiskäyttöisiä virtuaalikoneita varten. Tämä on Java -tulkki - Jacl [22] (uusin versio vuodelta 2008) ja Eagle-projekti [23] , joka toteuttaa suurimman osan Tcl 8.4 -komennoista CLR :lle (versiot .NET 4.0 ja 2.0 ovat saatavilla). Kokeilut ovat käynnissä Tcl-ohjelmien kääntämiseksi Parrot -virtuaalikoneen koodiksi , jota kehitetään Perlin kuudenteen versioon [24] .
Sulautettujen järjestelmien ohjelmointia ja sovelluksiin upottamista varten on kehitetty erityinen Tcl:n murre - Jim [25] [26] . Tämä on tulkki, joka toteuttaa suuren Tcl:n osajoukon, jota on laajennettu ylimääräisillä oliokeskeisillä ja toiminnallisilla ohjelmointimekanismilla, ja se vie alle 100 kilotavua käännetyssä muodossa.
Toinen Tcl:n murre on mobiili komentosarjakieli Hecl [27] , jonka on kehittänyt David Welton ja toteutettu Javalla ( J2ME ) [28] [29] . Mitä tulee Android -alustaan , Tcl-tuen siinä (muiden skriptikielien kanssa) tarjoaa: SL4A- skriptikerros [30] ; tälle käyttöjärjestelmälle on myös natiivi Tcl-toteutus nimeltä AndroWish [31] .
Kaikki alla luetellut jakelut levitetään vapaasti ja ne on koottu komponenteista, joilla on yksi tai toinen ilmainen lisenssi . Suurin osa niistä on monialustaisia (paitsi WinTclTk ja Tcl/Tk Aqua ), vaikka Unix-järjestelmissä Tcl/Tk on yleensä osa käyttöjärjestelmän jakelua .
Tcl:stä on Perlin ja Pythonin ohella tullut yksi kolmesta klassisesta yleiskäyttöisestä komentosarjakielestä. Tämä kolminaisuus ei esiinny vain ActiveStateen koottuna luettelona ilmaisista jakeluista , vaan myös esimerkiksi kielinä, joilla ( PL/pgSQL- murteen lisäksi ) voidaan kirjoittaa suositun PostgreSQL -tietokantapalvelimen triggereitä ja tallennettuja proseduureja .
Tcl sulautettavana kielenä on löytänyt sovelluksen CAD-alalla ( CAD | CAM | CAE ) [ 41] [42] . Sitä käytetään esimerkiksi tietokantavirittimenä Unigraphics -postiprosessorissa . Lisäksi se on de facto automaatio- ja integrointikieli kaikissa johtavissa sirusuunnitteluohjelmistopaketeissa ( FPGA :t ja ASIC :t ).
Web-ohjelmoinnissa Tcl:ää käytetään yleensä AOLServer -verkkopalvelimen tai jonkin "kevyen" FastCGI -verkkopalvelimen, kuten lighttpd :n, kanssa . Tcl:n integroimiseksi Apachen kanssa on Rivet-moduuli [43] .
Erityisesti AOLServerin hallinnassa oleva OpenACS [44] on verkkosivustojen sisällönhallintajärjestelmä, jossa on runsaasti laajennettavuutta Tcl-kielellä, laajennettu XOtcl tai project-open [45] - ryhmätyöjärjestelmä verkkoliittymällä .
On myös projekteja, kuten TclHttpd [46] ja sen seuraaja, Wub [ 47] , jotka ovat täydellisiä verkkokehyksiä . TclOO-kielen uuteen objektilaajennukseen perustuen kehitetään Woof-verkkokehystä (Web Oriented Object Framework) [48] . Esimerkki TclHttpd:n CMS:stä on Ucome [49] .
Sen lisäksi, että Tcl:ää käytetään verkkosovellusten toteutuskielenä, sitä voidaan käyttää komentosarjakielenä olemassa olevien sovellusten laajentamiseen. Esimerkiksi Eggdrop IRC -botin moduulit on kirjoitettu siihen [50] [51] .
Tcl/Tk:n varhaisten versioiden haittapuoli oli epäilemättä hidas suorituskyky. Alle 8 versiot käyttivät lähdekoodin suoraa tulkintaa, mutta tavukoodin käyttäminen ratkaisi tämän ongelman. Nyt nopeuden suhteen Tcl ei eroa paljon PHP :stä , vaikka se on huomattavasti huonompi kuin sellaiset komentosarjakielet, kuten esimerkiksi Python tai Lua . Monimutkaiset tai aikakriittiset koodin osat suositellaan suoritettavaksi ulkoisina moduuleina C / C++ :ssa .
Tcl/Tk:llä on tuntematon syntaksi "perinteisten" kielten ohjelmoijille. Se on lähempänä tavallista Unix -kuorisyntaksia . Tätä syntaksia voidaan muuttaa mielivaltaisesti (kuten muissa "ohjelmoitavissa ohjelmointikielissä", kuten Forth [huomautus 2] tai Common Lisp ). Tämä voi olla etu yksittäiselle ohjelmoijalle tai pienelle ohjelmoijaryhmälle, mutta tekee Tcl/Tk:stä tuskin sopivan yleiskäyttöiseksi kieleksi teolliseen kehitykseen. Vaikka standardoitujen laajennusten läsnäolo vähentää tämän ongelman vakavuutta. Tcl:ää voidaan käyttää myös suurissa projekteissa sen "ekologisen markkinaraon" puitteissa (sulautetut skriptit, "liimaus" komponentit, WEB-ohjelmointi).
Vaikka Tcl:llä on kaikki toiminnallisen kielen ominaisuudet , sen versiota 8.6 edeltävä tulkki ei suorittanut tail-rekursion optimointia , mikä vaikeutti puhtaasti toiminnallisen tyylin käyttöä ja heikensi sen tehokkuutta. Kielen joustavuus mahdollistaa kuitenkin tämän ongelman kiertämisen toteuttamalla näennäinen optimointi korkealla tasolla [52] . Lopuksi testiversiossa 8.6 ilmestynyt tailcall- komento mahdollistaa tail-rekursion käytön ilman ongelmia.
Tcl:n läheisin integrointi Tk - grafiikkakirjastoon , jota käytetään usein yhdessä muiden ohjelmointikielten kanssa, on Tcl:n kiistaton etu. Tcl voi olla paras valinta luodaksesi GUI -kääreitä konsoliohjelmille tai konsoliohjelmien paketeille.
Vaikka Tcl ei ole laajalti käytetty ohjelmointikieli, se on yhdessä (aiempien) kielten, kuten Lisp ja Smalltalk , kanssa vaikuttanut huomattavasti ohjelmointiin. Siitä tuli ensimmäinen kieli, joka keskittyi sovelluksiin upottamisen helppouteen [53] .
Tk -graafisen widget -kirjaston helppokäyttöisyys oli vertaansa vailla , ja siitä tuli suosittu muilla yleiskäyttöisillä komentosarjakielillä Tcl:n lisäksi . Tkinter on edelleen oletustyökalu GUI- sovellusten luomiseen Pythonissa . Perlille [ 54] (Tkx) ja Rubylle [53] on myös Tk- sidoskirjastoja .
SQLite , sulautettava kevyt SQL - tietokannan hallintajärjestelmä, kehitettiin alun perin Tcl:n laajennukseksi [53] .
Ohjelmointikielet | |
---|---|
|