tcl | |
---|---|
Nyelvóra |
több paradigma : objektumorientált , funkcionális , procedurális , eseményvezérelt , kötelező |
A végrehajtás típusa | értelmezni |
Megjelent | 1988 |
Szerző | John Outterhout |
Fájlkiterjesztés _ | .tcl |
Kiadás |
|
Típusrendszer | dinamikus |
Befolyásolva | Shell , Lisp |
befolyásolta | Python , Ruby |
Engedély | BSD-szerű |
Weboldal | tcl.tk |
Médiafájlok a Wikimedia Commons oldalon |
A Tcl (az angol Tool Command Language szóból – „eszközök parancsnyelve”, olvassuk „ticle” vagy „ti-si-el”) egy magas szintű szkriptnyelv .
A Tcl-t gyakran használják a Tk (Tool Kit) grafikus könyvtárral együtt. Az orosz nyelvű Tcl / Tk csomagot néha „Tak-tikl”-nek hívják (az angol verzió „tikl-tok”).
A nyelv alkalmazási területei a gyors prototípuskészítés , grafikus felületek készítése konzolprogramokhoz (szoftvercsomagokhoz), beágyazás alkalmazási programokba, tesztelés . A Tcl-t a webfejlesztésben is használják .
A Tcl-ben minden típusú adat, beleértve a programkódot is, karakterláncként kezelhető. Ez a nyelv természetes módon támogatja a metaprogramozást . Ezt a programozási paradigmát figyelembe vették a nyelv fejlesztése és evolúciója során.
A Tcl program újsorral vagy pontosvesszővel elválasztott parancsokból áll . Minden parancs szóközökkel elválasztott mezőkből áll. Az első mezőnek a parancs nevének kell lennie, az opcionális fennmaradó mezők pedig a parancsnak átadott argumentumok. A parancs értéket ad vissza, néha üresen. Vagyis a Lisphez hasonlóan a Tcl is előtag jelölést használ.
Nincsenek kulcsszavak , mint olyanok – a parancs fogalma a Tcl-ben hasonló az eljárás vagy függvény fogalmához a közönséges programozási nyelvekben. Ez vonatkozik a nyelvi vezérlő konstrukciókra is. Az elemi szintaxissal kombinálva ez a nyelvet jól bővíthetővé teszi, beleértve a más nyelveken írt könyvtárakat is, például C / C++ vagy Java .
A Tcl-nek van egy jól megvalósított eseményalapú programvezérlési modellje is . Események generálhatók időzítővel, amikor egy csatornában adat jelenik meg, egy változó értéke megváltozik, amikor egy külső program véget ér, vagy egyszerűen csak akkor, amikor a felhasználó a Tk felülettel dolgozik. Beállíthatja saját eseményeit és kezelheti azokat.
A legtöbb modern szkriptnyelvhez hasonlóan a Tcl is tartalmaz fejlett eszközöket a reguláris kifejezésekkel való munkavégzéshez, együttműködik asszociatív tömbökkel és más dinamikus adatstruktúrákkal.
A Basic Tcl a 8.6-os verzióig nem támogatta az OOP -t, azonban a nyelv szintaxisának egyszerű kiterjesztése miatt a Tcl-nek számos objektum-orientált mechanizmusú kiterjesztése létezik, amelyeket linkkönyvtárakként valósítanak meg C -ben vagy magában a Tcl-ben. A 8.5-ös verzió előtt a leggyakoribbak a következők voltak: incr Tcl , XOTcl és Snit [3] . A magát Tcl-t használó OOP-mechanizmusok másik megvalósítása, amely a Tcl szabványkönyvtárban [4] található, a STOOOP könyvtár [5] . A 8.5-ös verzió óta létezik az OOP for Tcl új implementációja, a TclOO , amely a 8.6-os verzió óta szerepel a nyelvi magban [6] [1. megjegyzés] :
kiterjesztés | napon valósul meg | a használt modell jellemzői |
---|---|---|
XOTcl | C | erőteljes objektumrendszer az osztályok és metódusok dinamikus meghatározásával, közel a CLOS -hoz |
incr Tcl | C | OOP C++ stílusban , konfigurátorok bevezetésével bővítve |
Snit | tcl | objektummodell megvalósítása delegáláson , nem öröklődésen alapul |
SOOOP | tcl | Az OOP a C ++-hoz a lehető legközelebb álló stílusban, egy osztályváltó mechanizmust is bevezettek |
TclOO [7] | C | Kompakt, de nagy teljesítményű objektum-orientált rendszer, amely közvetlenül és keretrendszerként is használható fejlett OOP modellek készítéséhez. |
A névterek nyelvi alapszinten támogatottak. Az OOP mechanizmusok Tcl-ben való implementálásakor a névterek egymásba ágyazott hierarchiájának támogatását használják ezen a nyelven [8] .
A Tcl könnyen programozható funkcionális stílusban : olyan mechanizmusokat biztosít, mint a magasabb rendű függvények és függvényabsztrakciók [9] , bár a Tcl-t ritkán használják ilyen módon. Íme egy példa arra, hogyan lehet két függvényt összeállítani :
proc o { f g x } { $f [ $g $x ]}A 8.5-ös verzióban a Tcl bevezette az apply parancsot is , amely sokkal könnyebbé teszi ezt a programozási stílust.
Íme egy példa a használatára a hivatalos dokumentációból:
proc map { lambda lista } { eredmény beállítása {} foreach item $list { lappend result [apply $lambda $item ] } return $result } térkép { x { return [ karakterlánc hossza $x ] : $x }} { a bb ccc dddd }ennek a példának az eredménye lesz
1:a 2:bb 3:ccc 4:ddddA nyelvet John Ousterhout fejlesztette ki, miközben a Kaliforniai Egyetemen tanult Berkeleyben. Az eredeti cél egy univerzális nyelv létrehozása volt a konzolalkalmazásokba való beágyazáshoz . Ezt követően Outterhout grafikus felületek létrehozására szolgáló eszközökkel bővítette nyelvét – így született meg a Tcl / Tk. [tíz]
Az egyetem falain belüli 4 éves fejlesztés során a Tikl közösség több százezer programozóra nőtt. 1993-ban kifejlesztették az első objektum-orientált bővítményt, az incr Tcl -t .
1994-ben Outterhout a SunScript projekt vezető mérnöke lett. A következő 4 évben a Sun Corporation egyik projektjévé válva a Tikl nemcsak szabadon terjesztett rendszer maradt, hanem jelentősen fejlődött is, és platformok közötti vált .
Richard Stallman jelentős csapást mért a nyelv népszerűségére, amikor 1994 szeptemberében számos hírcsoportban közzétette a "Miért ne használd a Tcl-t" [11] című ajánlását . Ebben azokra az állításokra épít, miszerint "A Tcl-t nem úgy tervezték, mint egy komoly programozási nyelvet" , és "A Tcl-nek van egy sajátos szintaxisa, amely az egyszerűsége miatt vonzza a hackereket . De a Tcl szintaxis furcsának tűnik a legtöbb felhasználó számára." , és az Emacs Lisp promóciójával kapcsolatban is kiadott egy ítéletet: "a GNU projekt nem fogja használni a Tcl-t a GNU szoftverben" . A nyelv kialakításával kapcsolatos szubjektív állítások mellett Stallman egy objektív hátrányra is rámutatott abban az időben - az alacsony teljesítményre.
A tikl-t aktívan használó fejlesztők számának növekedése azonban elérte a 600%-ot ebben az időszakban.
1998-ban a Java fellendülése és az ehhez kapcsolódó kiélezett verseny miatt a vállalat már nem tudott ugyanolyan figyelmet fordítani a tiklre. John Ousterhout elhagyja a Sun-t, hogy (a Sun támogatásával) Scripticset alkosson, folytatva a Tcl/Tk technológia fejlesztését [12] [13] . Ez volt az egyik első kereskedelmi szoftvercég, amely a szabad szoftverekre összpontosított .
1998 márciusában Ousterhout megírta a ma már klasszikusnak számító "Scripting: High-Level Programming for the 21st Century" [14] című cikket , amelyben a szkriptnyelveket rendszerintegrációs nyelveknek nevezte, mivel ezek elsősorban az operációs rendszer objektumaival való munkára összpontosítanak. környezetben, és nem elemi adatokkal. Ez lehetővé teszi, hogy több ezer sornyi kód írása nélkül „ragasszon” ilyen objektumokat két vagy három paranccsal.
Ugyanebben az évben két jelentős díjat nyert a Tcl nyelv fejlesztéséért. Az első az ACM Software System Award, amely "a legjelentősebb szoftvert" ismeri el. A díjjal korábban olyan alaprendszereket díjaztak, mint a TCP/IP protokollverem , az első táblázat , az első relációs adatbázis , a World Wide Web , a Unix , a PostScript és a Smalltalk . A második a USENIX Software Tools User Group (STUG) éves díja a kiemelkedő szoftverek elismeréseként.
1999-ben megjelent a Tcl 8.0 - ebben a megvalósításban jelent meg először a bájtkódra fordítás , amely lehetővé tette a sebesség hatszoros növelését [15] . A Tcl 8.1 következő verziója teljes Unicode támogatást vezet be, és először vezeti be a többszálas megoldást . Ezzel a kiadással kapcsolatban Outterhout kijelentette:
„Általánosságban elmondható, hogy a 8.1 egy új kategóriába helyezi a Tcl-t, mivel mostantól szerveralkalmazásokhoz is használható. A C, C++ és Java továbbra is használható az alkalmazások teljesítménykritikus részeinek felépítésére, míg a Tcl használható front-end komponensek integrálására és építésére.” [16]
2000-ben a Scripticset átnevezték Ajuba Solutions-re, majd az Interwoven megvásárolta, amely nem volt érdekelt a szabad szoftverekkel való munkavégzésben . Ebben a tekintetben a Tcl fejlesztése átkerült a programozói közösséghez. Így jött létre a Tcl Core Team .
A 9. Tcl/Tk konferencián Vancouverben bemutatták a StarKit virtuális fájlrendszert , amely új, felhasználóbarát módot biztosít a Tcl programok terjesztésére.
Az első szó a parancs neve, a többi az argumentuma. Bármely argumentum helyettesíthető egy másik, szögletes zárójelbe tett paranccsal. A kapcsos zárójelben lévő argumentumok egyetlen argumentumként kerülnek átadásra a parancsnak.
Szintaxis:
változó érték beállításaPélda:
állíts be egy 2 -t készlet b 3Szintaxis:
# megjegyzés szövegePélda:
# egy megjegyzésSzintaxis:
tedd kifejezéstPélda:
" Szia ! Én vagyok az." 123 -at tesz $a helyez " b = $b"Szintaxis:
while { Tcl_Expression_With_Loolean_ Value } { TclCommand másik TclCommand ...... }Példa:
míg { $x < 10 } { $ x incr x }Szintaxis:
if { Expression_Tcl_With_Loolean_Value } { Tcl parancs }Példa:
if { $x < 0 } { x 0 } _Példa:
switch - glob -- $var { { lásd } - { látta } - { látott } { "Minden ugyanazt jelenti!" } }egyszerűen visszaadja az aktuális munkakönyvtárat. És a csapat
set wdir [ pwd ]az aktuális könyvtár nevét a wdir változóban tárolja .
visszaadja az aktuális könyvtárban található fájlnevek listáját, amelyek megfelelnek a mintának .
Az eljárások az alábbiak szerint vannak meghatározva
proc ProcedureName { Érvlista } { …… _ }A következő kódrészlet egy asszociatív tömböt hoz létre és inicializál (más nyelveken térképnek, szótárnak vagy hash-nek is nevezik).
alaptőke ( Franciaország ) Párizs szett fővárosa ( Olaszország ) Róma alaptőke ( Németország ) Berlin alaptőke ( Lengyelország ) Varsó fővárosa ( Oroszország ) Moszkva székhelye ( Spanyolország ) Madrid _ _ _ _ _Egy asszociatív tömb egyik értékének lekérdezéséhez és megjelenítéséhez használja a
$tőkét tesz ( Olaszország )Az összes ország listája (tömbkulcsok) elérhető a paranccsal
tömbnevek tőke _Az eredmény nem lesz rendezve, mert a Tcl tömbök hash táblákon alapulnak .
Lengyelország Spanyolország Oroszország Németország Olaszország FranciaországA rendezés a paranccsal végezhető el
lsort [ tömbnevek nagybetűs ]Tömbre való hivatkozáshoz (hivatkozásként adjuk át), használja a tömböt tartalmazó változó nevét:
proc demo arrName { upvar 1 $arrName arr ; # kösse a hivatkozást egy helyi névhez # csináljon valamit az arr-vel }Egy tömb érték szerinti eléréséhez használja az array get vagy az array set parancsot . Például egy tömb másolásához a másikba:
tömbkészlet Newarr [ array get Oldarr ]A Tcl 8.5 bevezette az értékszótárak ( dict ) által átadott tömböket.
Ha egy skalárváltozót tömbbé szeretne konvertálni, és fordítva, távolítsa el a meglévő változót az unset paranccsal .
Alapértelmezés szerint csak az eljárásban meghatározott változók láthatók az eljáráson belül. Az eljárás definícióján kívül a változói csak a paraméterátadási mechanizmuson keresztül érhetők el. Lehetséges, hogy egy eljárásban ugyanazzal a névvel legyenek változók, mint a főprogramban, miközben ezeknek a változóknak az értéke különbözik, valójában különböző változók lesznek. A viselkedés megváltoztatásához a global vagy az upvar parancsokat kell használni .
Hello, a világprogram így néz ki
"Hello world !"vagy úgy
tesz { Hello world ! _ }Az OldArray(precision) tömbelem értékének megjelenítése, melynek nevét (tömb) az új NewArray változó adja
set NewArray Az OldArray elhelyezi [set $ { NewArray }( precision )] Számok összeadása egy tömbben(A) módszer – Összeadás 'foreach' ciklus használatával
set numbers { 1 2 3 4 5 6 7 8 9 10 } set result 0 foreach number $számok { eredmény beállítása [kifejezés { $eredmény + $szám }] } az $eredményt adja meg(B) módszer – Sokkal elegánsabb módja a 'csatlakozás' paranccsal
számok beállítása { 1 2 3 4 5 6 7 8 9 10 } helyezi [kifejezés [ csatlakozzon $számokhoz + ]] Egy tömb tartalmának listázásaA tcl_platform tömb annak a platformnak a tulajdonságairól tartalmaz információkat, amelyen a Tcl fut. Az ingatlannevek listája a következővel érhető el
tömbnevek tcl_platform _A következő részlet kiírja őket az értékükkel együtt:
foreach i [ tömbnevek tcl_platform ] { "$i = $ tcl_platform ($i)" }Ha a tulajdonságokat rendezni kell
foreach i [ lsort [ tömbnevek tcl_platform ] ] { "$i = $ tcl_platform ($i)" }A parancsok egymásba ágyazását itt mutatjuk be. Bármilyen mélységig beágyazhatók. Hasonló eredmény érhető el a Tcl 8.5-ben bevezetett parray paranccsal [17] .
A szűrési eljárás a lista azon elemeit adja vissza, amelyekre a szkript IGAZ értéket ad:
proc filter { list script } { set res {} foreach e $list {if {[uplevel 1 $script $e ]} { lappend res $e }} return $res }A felső szintű 1 parancs kiértékeli a kifejezést abban a kontextusban, amelyben a szószűrőt hívják .
Az in eljárás egy rövidített jelölés a halmazok felvételére:
proc in { list e } { expr {[ lsearch - pontos $e lista $e ] >= 0 } }Vizsgálat:
% szűrő { a b c } { in { b c d }} b cEz azt mutatja, hogy a parancs neve tetszőleges karakterlánc lehet, valamint a más nyelvekből ismert ?: operátor .
A Tcl egy értelmezett nyelv, vagyis a Tcl programok fordítás és linkelés nélkül is futásra készek .
A Tcl értelmezőt a legtöbb általános platformra portolták [18] . Ingyenes , nem copyleft licenc alatt kerül terjesztésre , amely lehetővé teszi, hogy korlátlanul felhasználhassák szabadalmaztatott alkalmazások fejlesztésében , valamint szabadalmaztatott származékos rendszerek létrehozásában. A fejlesztők BSD-szerűnek nevezik , bár a BSD-licenchez képest a Tcl-licenc kevesebb korlátozást ír elő.
Jelenleg a Tcl nyelv magjával kapcsolatos munkát a fejlesztők [19] csoportja, a Tcl Core Team [20] végzi . A Tcl fordító és az alapkönyvtárak legújabb verziói a SourceForge.net tárolóban érhetők el , lásd a fő Tcl/Tk disztribúcióban szereplő sourceforge projektek listáját [21] .
A Tcl fordító a programot egy köztes reprezentációvá - bytecode - fordítja le, majd értelmezi. Ellentétben például a Pythonnal , ez a közbülső reprezentáció nem kerül lemezre, a program csak forráskódban tárolható, esetleg StarKit modulba csomagolva vagy valamilyen más wrapper használatával . A fordítási beállításoktól függően a Tcl értelmező támogatja vagy nem támogatja a többszálú feldolgozást .
Míg a legtöbb kezdő Tcl-tankönyv valami olyasmit mond, hogy "A Tcl-nek csak egy típusú változója van, a karakterlánc", a valóság az, hogy a Tcl-fordítók már régóta másképp csinálják a dolgokat. Belsőleg a Tcl dinamikus típusú rendszert használ automatikus transzparens karakterlánc-konverzióval.
A Tcl szinte minden Linux disztribúcióban megtalálható . A Microsoft Windowshoz külön telepítőcsomag szükséges .
A Tcl 8.4 verzió új funkciókkal (64 bites kód optimalizálása, VFS, introspekciós kiegészítések) és némi teljesítménynövekedéssel tér el az előzőtől a bájtkóddal végzett munka optimalizálása miatt.
A 8.1-es verzióban hozzáadott új funkciók (mint például a többszálú támogatás, a nemzetköziesítési lehetőségek és a Unicode karakterek kezelése) körülbelül 19%-kal lassították a Tcl-t a 8-as verzióhoz képest, ami ugrásszerűen megnövelte a sebességet. A 8.4 fejlesztői mindent megtettek a programvégrehajtás sebességének maximalizálása érdekében, hogy ne csak ne lassabban, de még gyorsabban is működjenek, mint a 8.0-s verzió megjelenésekor. Ezt a célt szinte minden Tcl és Tk eszköz esetében sikerült elérni – a 8.4-es verzió átlagosan 8-szor gyorsabb, mint a 7.6-os [15] .
A TCL jelenlegi verziója a 8.6.
Alternatív megvalósítások és dialektusokVannak alternatív Tcl-megvalósítások a népszerű általános célú virtuális gépekhez . Ez egy Java interpreter - Jacl [22] (legutóbbi verzió 2008-ból), és az Eagle projekt [23] , amely a legtöbb Tcl 8.4 parancsot valósítja meg a CLR -hez (a .NET 4.0 és 2.0 verziók is elérhetők). Kísérletek folynak a Tcl programok lefordítására a Parrot virtuális gép kódjára , amelyet a Perl hatodik verziójához fejlesztenek [24] .
A beágyazott rendszerek programozására és az alkalmazásokba való beágyazásra a Tcl egy speciális dialektusát fejlesztették ki - Jim [25] [26] . Ez egy olyan értelmező, amely a Tcl nagy részhalmazát valósítja meg, további objektum-orientált és funkcionális programozási mechanizmusokkal bővítve, és lefordított formában kevesebb mint 100 kilobájtot foglal el.
A Tcl másik dialektusa a Hecl [27] mobil szkriptnyelv , amelyet David Welton fejlesztett ki, és Java nyelven ( J2ME ) implementált [28] [29] . Ami az Android platformot illeti , rajta a Tcl támogatást (más szkriptnyelvekkel együtt) a következők biztosítják: SL4A scripting layer [30] ; ehhez az operációs rendszerhez létezik egy natív Tcl-megvalósítás, az AndroWish [31] .
Az összes alább felsorolt disztribúciót szabadon terjesztik, és olyan összetevőkből állították össze, amelyeknek egyik vagy másik szabad licence van . A legtöbbjük többplatformos (kivéve a WinTclTk és a Tcl/Tk Aqua ), bár Unix rendszereken a Tcl/Tk általában az operációs rendszer disztribúciójának része .
A Tcl a Perl és a Python mellett a három klasszikus általános célú szkriptnyelv egyikévé vált. Ez a hármasság nemcsak az ActiveState -ben összeállított ingyenes disztribúciók listájaként jelenik meg , hanem például olyan nyelvekként is, amelyeken (a PL/pgSQL dialektus mellett) a népszerű PostgreSQL adatbázis-kiszolgáló triggerei és tárolt eljárásai írhatók .
A Tcl mint beágyazható nyelv alkalmazásra talált a CAD területén ( CAD | CAM | CAE ) [41] [42] . Például adatbázis-tunerként használják az Unigraphics utófeldolgozó processzorában . Ezenkívül ez a de facto automatizálási és integrációs nyelv az összes vezető chiptervező szoftvercsomagban ( FPGA -k és ASIC -k ).
A webes programozásban a Tcl-t általában az AOLServer webszerverrel vagy a "könnyű" FastCGI webszerverek egyikével, például a lighttpd -vel együtt használják . A Tcl és az Apache integrálásához létezik a Rivet modul [43] .
Az AOLServer irányítása alatt különösen az OpenACS [44] egy Tcl nyelven gazdag bővíthetőségű, kiterjesztett XOtcl vagy project-open [45] tartalomkezelő rendszer weboldalak számára – webes felülettel rendelkező csoportmunka rendszer .
Vannak olyan projektek is, mint a TclHttpd [46] és utódja, a Wub [47] , amelyek komplett webes keretrendszerek . A TclOO nyelv új objektumbővítménye alapján készül a Woof (Web Oriented Object Framework) [48] webes keretrendszer . Egy példa a TclHttpd CMS-ére az Ucome [49] .
Amellett, hogy webalkalmazás-megvalósító nyelvként használják, a Tcl szkriptnyelvként is használható a meglévő alkalmazások kiterjesztésére. Például az Eggdrop IRC bot moduljai vannak ráírva [50] [51] .
A Tcl/Tk korai verzióinak hátránya kétségtelenül a lassú teljesítmény volt. A 8 alatti verziók a forráskód közvetlen értelmezését használták, azonban a bájtkód használata megoldotta ezt a problémát. A sebesség szempontjából a Tcl nem sokban különbözik a PHP -től , bár észrevehetően alacsonyabb az olyan szkriptnyelveknél, mint például a Python vagy a Lua . A kód összetett vagy időkritikus szakaszait javasoljuk külső modulként végrehajtani C / C++ nyelven .
A Tcl/Tk a "hagyományos" nyelvek programozói számára ismeretlen szintaxissal rendelkezik. Ez közelebb áll a szabványos Unix shell szintaxishoz . Ez a szintaxis tetszőlegesen módosítható (mint más "programozható programozási nyelveknél", mint például a Forth [2. megjegyzés] vagy a Common Lisp ). Ez előnyt jelenthet egy egyéni programozó vagy programozók egy kis csoportja számára, de a Tcl/Tk aligha alkalmas általános célú ipari fejlesztési nyelvként való használatra. Bár a szabványos kiterjesztések jelenléte csökkenti a probléma súlyosságát. A Tcl nagy projektekben is használható "ökológiai résein" belül (beágyazott szkriptek, "ragasztó" komponensek, WEB programozás).
Bár a Tcl rendelkezik a funkcionális nyelv összes tulajdonságával, a 8.6-os verzió előtti tolmácsa nem hajtott végre rekurziós optimalizálást , ami megnehezítette a tisztán funkcionális stílus használatát, és csökkentette annak hatékonyságát. A nyelv rugalmassága azonban lehetővé teszi ennek a problémának a megkerülését egy ilyen optimalizálás látszatának magas szintű megvalósításával [52] . Végül a 8.6-os tesztverzióban megjelent tailcall parancs lehetővé teszi a tail rekurzió problémamentes használatát.
A Tcl legszorosabb integrációja a Tk grafikus könyvtárral , amelyet gyakran más programozási nyelvekkel együtt használnak, a Tcl kétségtelen előnye. Konzolprogramok vagy konzolprogram- csomagok grafikus felhasználói felületének létrehozásához a Tcl lehet a legjobb választás.
Bár nem széles körben használt programozási nyelv, a Tcl, valamint a (korábbi) nyelvek, mint például a Lisp és a Smalltalk , jelentős hatással volt a programozásra. Ez lett az első olyan nyelv, amely az alkalmazásokba való könnyű beágyazásra összpontosított [53] .
A Tk grafikus widget -könyvtár egyszerű használhatósága páratlan volt , és a Tcl mellett más általános célú szkriptnyelveken is népszerűvé vált . A Tkinter továbbra is az alapértelmezett eszköz a grafikus felhasználói felületek Pythonban történő létrehozásához . A Perl [ 54] (Tkx) és a Ruby [53] számára is vannak Tk kötési könyvtárak .
Az SQLite , egy beágyazható, könnyű SQL adatbázis-kezelő rendszert eredetileg a Tcl kiterjesztéseként fejlesztették ki [53] .
Programozási nyelvek | |
---|---|
|