Tcl

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 .

Jellemző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:dddd

Történelem

A 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.

Tcl szintaxis

Forgatókönyv újsorral vagy pontosvesszővel (;) elválasztott parancsok. Csapat szóközzel elválasztott szavak. parancsNév argumentum1 argumentum2 argumentumN

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.

Különleges jelentőségű szimbólumok

  • $  - Változóérték helyettesítést okoz.
  • []  - A parancsvégrehajtás eredményének behelyettesítését okozza a zárójelben.
  • ""  - az argumentumokat egybe csoportosítja a változóértékek helyettesítésével.
  • {}  - az argumentumokat egybe csoportosítja a változók értékeinek helyettesítése nélkül.
  • \  - kihagyja a következő karaktert, vagy vezérlőkarakter helyettesítést okoz.
  • #  - egysoros megjegyzés eleje, egy nem megtisztított újsor karakter vagy ";" után kell lennie. (pontosvessző).

Megjegyzések a szkriptelemzési folyamathoz

  • A szavakra bontás, a változóértékek helyettesítése és a parancsvégrehajtás eredményei egy parancsmenetben valósulnak meg.
  • A zárójelben ({}) és a "" idézőjelben lévő összes karaktert egy szóként kezeli a rendszer.
  • A parancs első szavát a rendszer beépített vagy meghatározott eljárásként kezeli.

Parancspéldák

  • A hozzárendelést a halmaz szó jelöli , nem az egyenlőségjel.

Szintaxis:

változó érték beállítása

Példa:

állíts be egy 2 -t készlet b 3
  • A megjegyzést # jelzi

Szintaxis:

# megjegyzés szövege

Példa:

# egy megjegyzés
  • A kimenetet (nyomtatást) a puts parancs valósítja meg

Szintaxis:

tedd kifejezést

Példa:

" Szia ! Én vagyok az." 123 -at tesz $a helyez " b = $b"
  • A while ciklus a while paranccsal valósul meg , amely két argumentumból áll. Az első egy Tcl kifejezés (a kifejezések valójában a matematikai és a C -stílusú összehasonlítások miniatürizált nyelvén vannak írva ). A második argumentum a parancsfájl minden egyes iterációja során végrehajtandó parancsfájl . Általában göndör fogszabályzóba helyezik, hogy elkerüljék az azonnali végrehajtást.

Szintaxis:

while { Tcl_Expression_With_Loolean_ Value } { TclCommand másik TclCommand ...... }

Példa:

míg { $x < 10 } { $ x incr x }
  • Feltételes parancs

Szintaxis:

if { Expression_Tcl_With_Loolean_Value } { Tcl parancs }

Példa:

if { $x < 0 } { x 0 } _
  • Elágazás parancs

Példa:

switch - glob -- $var { { lásd } - { látta } - { látott } { "Minden ugyanazt jelenti!" } }
  • A parancsnak például nem lehetnek argumentumai
pwd

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 .

  • A parancs visszaadhat például egy listát
glob Pattern

visszaadja az aktuális könyvtárban található fájlnevek listáját, amelyek megfelelnek a mintának .

Eljárások

Az eljárások az alábbiak szerint vannak meghatározva

proc ProcedureName { Érvlista } { …… _ }

Asszociatív tömbök

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ág

A 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 .

Változó hatókör

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 .

Példák

Helló Világ!

Hello, a világprogram így néz ki

"Hello world !"

vagy úgy

tesz { Hello world ! _ }

Tömbök

Tömbelemek elérése

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ása

A 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] .

Halmazok metszéspontja

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 c

Faktoriális

proc ! x {kifejezés { $x < 2 ? 1 : $x * [ ! [ inkr x - 1 ]]}}

Ez azt mutatja, hogy a parancs neve tetszőleges karakterlánc lehet, valamint a más nyelvekből ismert ?: operátor .

Megvalósítás, disztribúciók, eszközök

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ő.

Megvalósítás

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 dialektusok

Vannak 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] .

Elosztások

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 .

  • Aktív Tcl [32] A Tcl legszélesebb körben használt terjesztése. A többi vállalati termékhez hasonlóan az ActiveState is számos könyvtárat és bővítményt tartalmaz. A Windows verziókban WSH -integrációs eszközöket is tartalmaz . Nincsenek olyan eszközök , amelyek megkönnyítenék a programozó életét. A cég értékesíti a TclDevKit csomagot, amely eszközöket tartalmaz a hibakereséshez és az önálló programok létrehozásához (ez utóbbi a StarKit technológián alapul ), valamint a Komodo  -t, egy univerzális IDE -t a szkriptnyelvekhez, amely vizuális programozási eszközöket is tartalmaz a Tk űrlapokhoz.
  • WinTclTk [33]  Kompaktabb, mint az ActiveTcl , egy olyan disztribúció, amely a Tcl objektumorientált kiterjesztésével, az XOTcl -lel dolgozik . A benne található könyvtárak listája valamivel szűkebb, mint az ActiveTcl-ben, de az alapkészlet itt található. Ez a disztribúció tartalmazza a Tloona IDE -t [34]  , egy hagyományos fejlesztői környezetet, és az XOTclIde -et [35] , egy Smalltalk  stílusú objektum-orientált programozási környezetet , mindkettő hibakeresővel. Szintén ingyenesen elérhető a fejlesztő webhelyén egy csomag egyetlen végrehajtható TkWrapper fájl létrehozására a FreeWrap [36] alapján, amely a StarKit  alternatív technológiája, amely egyszerű ZIP - tömörítésen alapul. Az eddigi legújabb verzió a 8.5.6 (2009. december 3., Tcl 8.5.6).
  • TclKit [37] Ez egy Tcl/Tk könyvtárak magkészletével egyetlen kompakt végrehajtható fájlban. A disztribúció StarKit technológiával készült . Tartalmazza a MetaKit könyvtárat , amely lehetővé teszi a fájl tartalmának kezelését. A Tcl egy másik népszerű terjesztése egy fájlban az eTcl [38] . A dqkit disztribúció [39] hasonló elvekre épül  – a „TclKit on steroids” néven ismert alternatív összeállítás, számos lehetőség van, amelyek különböznek a könyvtárak összetételében, a többszálú támogatásban stb.
  • MyTcl [40] Teljes integrált fejlesztői környezet (IDE) Tcl-ben, beleértve a nyelvi környezet disztribúcióját. Lehetővé teszi önálló alkalmazások létrehozását StarKit formátumban. A jelenlegi verzió az 1.0 Build 8 (2012. június 18.) Win32-hez és Win64-hez, a rendszerbe integrált Tcl 8.5.11-el. Jelenleg nem nyílt forráskódú .
  • AndroWish [31] Környezet a Tcl/Tk szkriptek futtatásához és a tcl/tk alkalmazások apk fájlba kapcsolásához Android alatt

Alkalmazás

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 ).

Felhasználás webfejlesztésben

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] .

Előnyök és hátrányok

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.

Befolyá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] .

Lásd még

Linkek

Oroszul

Cikkek és ismertetők A TCL-nek szentelt blogok

Könyvek

Oroszul

eredeti: Brent Welch, Ken Jones, Jeffrey Hobbs "Practical Programming in Tcl and Tk (4th Edition)", ISBN 0-13-038560-3 , 2003 ( elektronikus verzió [55] )
  • Moskvin P. V. "ABC TCL", ISBN 5-93517-130-9
  • Alekszej Petrovszkij, TCL (Tool Command Language), ISBN 5-901321-16-2

Angolul

  • Clif Flynt. Tcl/Tk: Fejlesztői útmutató . - 3. - Morgan Kaufmann, 2012. - 817 p. - (A Morgan Kaufmann sorozat a szoftverfejlesztésben és programozásban). — ISBN 9780123847171 .
2. kiadás: "Tcl/Tk, Second Edition : A Developer's Guide", ISBN 1-55860-802-8 , 2003 1. kiadás: Tcl/Tk valódi programozóknak, ISBN 0-12-261205-1
  • John K. Ousterhout, Ken Jones "Tcl and the DTk Toolkit (2. kiadás)", ISBN 0-321-33633-X , 2009
  • Bert Wheeler " Tcl/Tk 8.5 programozási szakácskönyv ", ISBN 1-84951-298-1 , 2011
  • Wojciech Kocjan, Piotr Beltowski. Tcl 8.5 Hálózati programozás . - Packt Publishing, Limited, 2010. - 588 p. — ISBN 9781849510967 .
  • Mark Harrison, Michael McLennan, Hatékony Tcl/Tk programozás. Jobb programok írása Tcl és Tk nyelven, ISBN 0-201-63474-0
  • J. Adrian Zimmer "Tcl/Tk programozóknak", ISBN 0-8186-8515-8
  • Salvatore Sanfillipo "Tcl Wise. Útmutató a Tcl programozási nyelvhez" ( Az első 9 fejezet on-line archiválva : 2013. augusztus 29. a Wayback Machine -nél )
  • Paul Raines, Jeff Tranter "Tcl/Tk dióhéjban: Asztali gyorsreferencia", ISBN 1-56592-433-9
  • David Maggiano "CGI programozás Tcl-lel", ISBN 0-201-60629-1
  • JM Ivler, Kamran Husain, "Cgi fejlesztői erőforrás: webprogramozás Tcl-ben és Perlben", ISBN 0-13-727751-2

Jegyzetek

  1. . Ha az objektummodell egyik implementációja sem felel meg Önnek, vagy érdekli a működése, akkor elolvashatja az SNIT alkotóitól az Objektumparancsok létrehozása , 2007. május 13-án archiválva a Wayback Machine -n című cikket. 
  2. A Forth és a Tcl érdekes szimbiózisa a HolonT projekten belül Archiválva 2012. április 2-án a Wayback Machine -nél , ahol a Forth Tcl kódra van fordítva.
Források
  1. Tcl / Tk 8.6.12 KIADVA  (angolul) – 2021.
  2. https://www.tcl.tk/software/tcltk/8.6.html
  3. Kocjan, Beltowski, 2010 , pp. 62-63.
  4. Standard Tcl Library (tcllib) . www.tcl.tk. Letöltve: 2016. június 26. Az eredetiből archiválva : 2014. október 6..
  5. Sriram Srinivasan. 7.5 Összehasonlítás más OO nyelvekkel // Speciális Perl programozás . — 1. kiadás. - O'Reilly , 1997. - ISBN 1-56592-220-4 .
  6. Kocjan, Beltowski, 2010 .
  7. TclOO archiválva : 2018. szeptember 15. a Wayback Machine -nél a TclWikiben
  8. Clyf Flynt. 8.1.7. Névtér beágyazása // Tcl/Tk: Fejlesztői útmutató. — 3. kiadás. - Waltham, MA: Morgan Kaufmann, 2012. - P. 215. - 792 p. — ISBN 0-12-384717-6 .
  9. lásd még Lépések a funkcionális programozás felé Archiválva : 2007. február 10. a Wayback Machine -nél
  10. Lásd: A Tcl története archiválva : 2016. június 10. a Wayback Machine -nél
  11. Miért ne használja a Tcl . Hozzáférés dátuma: 2007. május 14. Az eredetiből archiválva : 2012. február 4.
  12. Cameron Laird, Katherine Sorez, SunWorld, USA. A Tcl alapítója új vállalkozásra hagyja a Sunt  // Computerworld. - Open Systems , 1998. - 07. sz .
  13. Robert McMillan, SunWorld. Tcl: az út egy új élethez  // Computerworld. - Open Systems , 1998. - 36. sz .
  14. John K. Ousterhout Scripting: Higher Level Programming for the 21st Century Archiválva : 2010. február 1. a Wayback Machine -nél  .
    A cikk fordítása archiválva 2007. szeptember 30-án a Wayback Machine -nél  (orosz nyelven) az Open Systems folyóiratban, 1998. évi 3. szám
  15. 1 2 lásd: Tcl Benchmarks archiválva 2007. május 21. a Wayback Machine -nél
  16. Ted Smalley Bowen. Tcl: Egy vállalati változat  // Computerworld. - Open Systems , 1999. - 21. sz .
  17. Tcl dokumentáció | parray . Letöltve: 2014. március 26. Az eredetiből archiválva : 2014. május 11..
  18. TCL Wiki | Milyen platformokon fut a Tcl . Letöltve: 2014. március 26. Az eredetiből archiválva : 2013. szeptember 2..
  19. Tcl Core Team - tagok listája . Letöltve: 2007. május 14. Az eredetiből archiválva : 2007. május 2..
  20. Tcl Core Team . Letöltve: 2007. május 14. Az eredetiből archiválva : 2007. április 30.
  21. Tcl a SourceForge-nál . Letöltve: 2007. május 14. Az eredetiből archiválva : 2007. május 16..
  22. A Tcl/Java projekt, Jacl . Letöltve: 2007. május 14. Az eredetiből archiválva : 2007. április 29..
  23. The Eagle Project, (Extensible Adaptable Generalized Logic Engine) . Letöltve: 2011. június 11. Az eredetiből archiválva : 2011. október 2..
  24. részcl. A papagáj virtuális gépet célzó tcl megvalósítása Archivált 2011. május 22. a Wayback Machine -nél ( archiválva 2011. augusztus 24. projektblog a Wayback Machine -nél ) 
  25. Steve Bennett. Jim Tcl. A Small Footprint Tcl megvalósítása // Tcl Association Press 18'th Annual Tcl Association Tcl/Tk Conference Proceedings. - Lulu.com, 2011. - S. 94-105 . — ISBN 0578098016 .
  26. A Jim tolmács. A Tcl programozási nyelv kis helyigényű megvalósítása
  27. hecl.org Archiválva : 2010. december 15., a Wayback Machine : Hecl - The Mobile Scripting Language
  28. David Welton. Hozzon létre egy egyszerű alkalmazást a Hecl  // Free Software Magazine segítségével. — szerda, 2007-10-31. - Probléma. 20 . Az eredetiből archiválva : 2013. június 30.
  29. A Hecl programozási nyelv implementációja archiválva 2013. augusztus 10. a Wayback Machine -nél 
  30. Az Android automatizálásáról és szkriptezéséről . "Hacker" (2014. február 18.). Letöltve: 2016. június 26. Archiválva az eredetiből: 2016. augusztus 15.
  31. 12 AndroWish . Tcl/Tk Androidhoz . Hozzáférés dátuma: 2014. december 3. Az eredetiből archiválva : 2014. december 20.
  32. ActiveTcl. Az iparági szabványos Tcl disztribúció (nem elérhető link) . Letöltve: 2013. szeptember 1. Az eredetiből archiválva : 2009. augusztus 21.. 
  33. WinTclTk. Tcl/Tk disztribúció Microsoft Windowshoz . Letöltve: 2007. június 5. Az eredetiből archiválva : 2007. június 22..
  34. Tloona Tcl/Tk IDE . Hozzáférés dátuma: 2008. október 21. Az eredetiből archiválva : 2009. március 22.
  35. XOTclIDE. Integrált fejlesztési környezet XOTcl és Tcl számára . Letöltve: 2007. május 15. Az eredetiből archiválva : 2007. június 21..
  36. FreeWrap. Önálló TCL/TK végrehajtható fájlokat hoz létre. Nem szükséges fordító! . Letöltve: 2007. május 15. Az eredetiből archiválva : 2014. június 29.
  37. Tclkit alkalmazás futási ideje . Letöltve: 2007. május 14. Az eredetiből archiválva : 2007. május 23..
  38. ETcl. Az Evolane Tcl/Tk eloszlása ​​(nem elérhető link) . Letöltve: 2013. szeptember 1. Az eredetiből archiválva : 2013. szeptember 1.. 
  39. dqkit . Letöltve: 2007. május 14. Az eredetiből archiválva : 2007. május 21..
  40. MyTcl. Erőteljes Tcl/Tk IDE . Letöltve: 2013. március 25. Az eredetiből archiválva : 2013. május 15.
  41. CAD szoftvertörténet Archiválva 2010. január 13-án a Wayback Machine -nél a TclWikiben Archiválva 2006. december 19-én a Wayback Machine -nél
  42. Modern számítástechnika a Nike, Inc. szolgálatában. Archiválva : 2011. október 15. a Wayback Machine -nél a CAD-ban és a Graphics Magazine-ban. Archiválva : 2010. március 25., a Wayback Machine , No. 10'2000
  43. Rivet - Webscripting for Tcl'ers . Letöltve: 2010. szeptember 22. Az eredetiből archiválva : 2011. szeptember 27..
  44. OpenACS. The Toolkit for Online Communities archiválva : 2009. augusztus 31. a Wayback Machine -nél 
  45. projekt nyitva. Nyílt forráskódú vállalati projektmenedzsment archiválva : 2010. január 14. a Wayback Machine -nél 
  46. tclhttpd - Tcl webszerver . Letöltve: 2010. január 30. Az eredetiből archiválva : 2010. január 25..
  47. Wub pure tcl HTTP1.1 szerver, kliens és eszközcsomag . Hozzáférés dátuma: 2010. január 5. Az eredetiből archiválva : 2010. április 28..
  48. Jaj. Web-orientált objektum-keretrendszer . Hozzáférés dátuma: 2010. január 30. Az eredetiből archiválva : 2009. augusztus 14..
  49. Ucome. Az Ön tartalomkezelése a Tcl -ben archiválva : 2014. február 10. a Wayback Machine -nél 
  50. Darryl K. Taft. Tcl programozási nyelv: 20 dolog, amit nem tudsz . eWeek (2011. január 31.). Letöltve: 2016. június 25.
  51. Eggedrop telepítése IRC-re - "Hacker" (2000. augusztus 21.). Letöltve: 2016. június 25. Az eredetiből archiválva : 2016. augusztus 13..
  52. Tail call optimization Archivált : 2007. március 11. a Wayback Machine -en leírja ezt a problémát, és felvázolja a lehetséges megoldásokat.
  53. ↑ 1 2 3 Andrew Binstock. A Tcl negyed évszázada . Dr. Dobb's (2014. január 21.). Letöltve: 2016. június 25. Az eredetiből archiválva : 2016. július 7.
  54. Nancy Walsh. Perl/Tk tanulása . - O'Reilly, 1999. - 392 p. — ISBN 9781565923140 .
  55. első kiadás teljesen elérhető, szelektíven, újabb