Tcl

tcl
Jazyková třída multiparadigma :
objektově orientované ,
funkční ,
procedurální ,
událostmi řízené ,
imperativní
Typ provedení interpretován
Objevil se v 1988
Autor John Ousterhout
Přípona souboru .tcl
Uvolnění
Typový systém dynamický
Byl ovlivněn Shell , Lisp
ovlivnil Python , Ruby
Licence jako BSD
webová stránka tcl.tk
 Mediální soubory na Wikimedia Commons

Tcl (z anglického  Tool Command Language  - „příkazový jazyk nástrojů“, čti „ticle“ nebo „ti-si-el“) je skriptovací jazyk na vysoké úrovni .

Tcl se často používá ve spojení s grafickou knihovnou Tk (Tool Kit) . Svazek Tcl / Tk se v ruštině někdy nazývá „Tak-tikl“ (anglická verze je „tikl-tok“).

Oblasti použití jazyka jsou rapid prototyping , tvorba grafických rozhraní pro konzolové programy (softwarové balíčky), zabudování do aplikačních programů, testování . Tcl se také používá při vývoji webových aplikací .

Funkce

V Tcl lze s daty všech typů, včetně programového kódu, manipulovat jako s řetězci. To z něj dělá jazyk s přirozenou podporou metaprogramování . Toto programovací paradigma bylo vzato v úvahu při vývoji a vývoji jazyka.

Program Tcl se skládá z příkazů oddělených novými řádky nebo středníky. Každý příkaz se skládá ze sady polí oddělených mezerami. První pole musí být název příkazu a volitelná zbývající pole jsou argumenty předané tomuto příkazu. Příkaz vrací hodnotu, někdy prázdnou. To znamená, že stejně jako Lisp , Tcl používá předponový zápis.

Neexistují žádná klíčová slova jako taková - pojem příkazu v Tcl je podobný pojmu procedura nebo funkce v běžných programovacích jazycích. To platí také pro konstrukce ovládání jazyka. V kombinaci s elementární syntaxí to činí jazyk dobře rozšiřitelným, včetně knihoven napsaných v jiných jazycích, jako je C / C++ nebo Java .

Tcl má také dobře implementovaný model řízení programu založený na událostech . Události mohou být generovány časovačem, když se objeví data v kanálu, když se změní hodnota proměnné, když skončí externí program nebo prostě když uživatel pracuje s rozhraním Tk. Můžete nastavit své vlastní události a spravovat je.

Stejně jako většina moderních skriptovacích jazyků obsahuje Tcl pokročilé nástroje pro práci s regulárními výrazy, pracuje s asociativními poli a dalšími dynamickými datovými strukturami.

Basic Tcl nepodporoval OOP až do verze 8.6, nicméně kvůli snadnému rozšíření syntaxe jazyka existuje mnoho rozšíření Tcl s objektově orientovanými mechanismy, implementovaných jako odkazové knihovny v C nebo v Tcl samotném. Před verzí 8.5 byly nejběžnější tyto: incr Tcl , XOTcl a Snit [3] . Další implementací OOP mechanismů využívajících samotné Tcl, zahrnuté ve standardní knihovně Tcl [4] , je knihovna STOOOP [5] . Od verze 8.5 existuje nová implementace OOP pro Tcl, TclOO , která je od verze 8.6 součástí jazykového jádra [6] [poznámka 1] :

rozšíření implementováno dne vlastnosti použitého modelu
XOTcl C výkonný objektový systém s dynamickou definicí tříd a metod, blízký CLOS
incr Tcl C OOP ve stylu C++ , rozšířený o zavedení konfigurátorů
Snit tcl implementace objektového modelu založená na delegování , nikoli na dědičnosti
STOOOP tcl OOP ve stylu co nejblíže C++, byl také zaveden mechanismus přepínání tříd
TclOO [7] C Kompaktní, ale výkonný objektově orientovaný systém, který lze použít přímo i jako framework pro vytváření pokročilých OOP modelů.

Jmenné prostory jsou podporovány na úrovni jazykového jádra. Při implementaci OOP mechanismů v Tcl se využívá podpora vnořovací hierarchie jmenných prostorů v tomto jazyce [8] .

Tcl se snadno programuje ve funkčním stylu : poskytuje mechanismy, jako jsou funkce vyššího řádu a abstrakce funkcí [9] , i když Tcl se tímto způsobem používá jen zřídka. Zde je příklad toho, jak lze skládat dvě funkce :

proc o { f g x } { $f [ $g $x ]}

Ve verzi 8.5 zavedl Tcl také příkaz apply , který tento styl programování značně usnadňuje.

Zde je příklad jeho použití z oficiální dokumentace:

proc mapa { seznam lambda } { nastavit výsledek {} pro každou položku $list { výsledek lappend [použít $lambda $item ] } return $result } map { x { return [ délka řetězce $x ] : $x }} { a bb ccc dddd }

výsledkem tohoto příkladu bude

1:a 2:bb 3:ccc 4:dddd

Historie

Jazyk vyvinul John Ousterhout , když byl na University of California v Berkeley. Původním cílem bylo vytvořit univerzální jazyk pro vkládání do konzolových aplikací . V návaznosti na to Ousterhout rozšířil svůj jazyk o nástroje pro vytváření grafických rozhraní  - tak se zrodil Tcl / Tk. [deset]

Za 4 roky vývoje v univerzitních zdech se komunita Tikl rozrostla na několik set tisíc programátorů. V roce 1993 bylo vyvinuto první objektově orientované rozšíření, incr Tcl .

V roce 1994 se Ousterhout stal hlavním inženýrem projektu SunScript. Během následujících 4 let, kdy se Tikl stal jedním z projektů Sun Corporation , zůstal nejen volně distribuovaným systémem, ale také se výrazně zlepšil a stal se multiplatformním .

Richard Stallman zasadil značnou ránu popularitě jazyka , když v září 1994 publikoval v řadě diskusních skupin doporučení „Proč byste neměli používat Tcl“ [11] . V něm staví na tvrzeních, že „Tcl není navržen jako seriózní programovací jazyk“ a „Tcl má zvláštní syntaxi, která přitahuje hackery kvůli své jednoduchosti. Ale syntaxe Tcl se většině uživatelů zdá divná." , a také v souvislosti s propagací Emacs Lisp , vydal verdikt: " projekt GNU nebude používat Tcl v softwaru GNU" . Kromě subjektivních nároků na design jazyka Stallman upozornil na tehdejší objektivní nedostatek – nízký výkon.

Nárůst počtu vývojářů aktivně využívajících tikl však za toto období činil 600 %.

V roce 1998, kvůli rozmachu Javy a s tím spojené tvrdé konkurenci, již nemohla korporace věnovat stejnou pozornost tikl. John Ousterhout opouští Sun, aby vytvořil (s podporou Sun) Scriptics a pokračoval ve vývoji technologie Tcl/Tk [12] [13] . Byla to jedna z prvních komerčních softwarových firem, která se zaměřila na svobodný software .

V březnu 1998 napsal Ousterhout dnes již klasický článek „Scripting: High-Level Programming for the 21st Century“ [14] , ve kterém skriptovací jazyky nazval systémy systémové integrace jazyky, protože jsou zaměřeny především na práci s objekty operačního systému. prostředí, nikoli s elementárními daty. To umožňuje bez psaní tisíců řádků kódu „slepit“ takové objekty do jednoho pomocí dvou nebo tří příkazů.

Ve stejném roce získal dvě významná ocenění za rozvoj jazyka Tcl. První je cena ACM Software System Award, která oceňuje „nejvýznamnější software“. Ocenění již dříve ocenilo základní systémy, jako je zásobník protokolů TCP/IP , první tabulkový procesor , první relační databáze , World Wide Web , Unix , PostScript a Smalltalk . Druhým je každoroční ocenění USENIX Software Tools User Group (STUG) jako uznání vynikajícího softwaru.

V roce 1999 byl vydán Tcl 8.0 - v této implementaci se poprvé objevila kompilace do bytecode , což umožnilo zvýšit rychlost 6x [15] . Další verze Tcl 8.1 zavádí plnou podporu Unicode a poprvé zavádí multithreading . V souvislosti s tímto vydáním Ousterhout uvedl:

„Obecně platí, že 8.1 posouvá Tcl do nové kategorie, protože jej nyní lze použít pro serverové aplikace. C, C++ a Java lze stále používat k vytváření částí aplikací kritických pro výkon, zatímco Tcl lze použít k integraci a sestavování frontendových komponent. [16]

V roce 2000 byl Scriptics přejmenován na Ajuba Solutions a poté koupil Interwoven, který neměl zájem pracovat se svobodným softwarem . V tomto ohledu byl vývoj Tcl přenesen do programátorské komunity. Tak vznikl Tcl Core Team .

Na 9. konferenci Tcl/Tk ve Vancouveru byl představen virtuální souborový systém StarKit , který poskytuje nový, uživatelsky příjemný způsob distribuce programů Tcl.

Syntaxe Tcl

Skript příkazy oddělené novými řádky nebo středníky (;). tým slova oddělená mezerami. název příkazu argument1 argument2 argumentN

První slovo je název příkazu, zbytek jsou jeho argumenty. Jakýkoli argument lze nahradit jiným příkazem uzavřeným v hranatých závorkách. Všechny argumenty ve složených závorkách jsou předány příkazu tak, jak jsou, jako jeden argument.

Symboly zvláštního významu

  • $  - Způsobí substituci proměnné hodnoty.
  • []  - Způsobí nahrazení výsledku provedení příkazu v závorkách.
  • ""  - seskupuje argumenty do jednoho se substitucí hodnot proměnných.
  • {}  - seskupí argumenty do jednoho, aniž by byly nahrazeny hodnoty proměnných.
  • \  - escapuje další znak nebo způsobí nahrazení řídicího znaku.
  • #  - začátek jednořádkového komentáře, musí být za znakem nového řádku bez escapování nebo ";" (středníky).

Poznámky k procesu analýzy skriptu

  • Rozdělení do slov, substituce hodnot proměnných a výsledky provádění příkazů se provádějí v jednom průchodu příkazem.
  • Všechny znaky v závorkách {} a uvozovkách "" jsou považovány za jedno slovo.
  • První slovo příkazu je považováno za vestavěnou nebo definovanou proceduru.

Příklady příkazů

  • Přiřazení je označeno slovem set , nikoli rovnítkem.

Syntax:

nastavit hodnotu proměnné

Příklad:

nastavit 2 _ sada b 3
  • Komentář je označen #

Syntax:

# text komentáře

Příklad:

# je komentář
  • Výstup (tisk) je realizován příkazem puts

Syntax:

dát výraz

Příklad:

položí "Ahoj! To jsem já." vloží 123 vloží $a vloží "b = $b"
  • Cyklus while je implementován pomocí příkazu while , který má dva argumenty. První je výraz Tcl (výrazy jsou ve skutečnosti psány v miniaturizovaném jazyce matematiky a srovnání ve stylu C ). Druhým argumentem je skript, který se má provést při každé iteraci souboru . Obvykle je umístěn ve složených závorkách, aby se zabránilo okamžitému provedení.

Syntax:

while { Tcl_Expression_With_Boolean_Value } { TclCommand jinýTclCommand ... ... }

Příklad:

zatímco { $x < 10 } { vloží $x incr x }
  • Podmíněný příkaz

Syntax:

if { Expression_Tcl_With_Boolean_Value } { příkaz Tcl }

Příklad:

if { $x < 0 } { nastavit x 0 }
  • Příkaz větve

Příklad:

switch - glob -- $var { { vidět } - { viděl } - { viděl } { vloží "Všechno to znamená totéž!" } }
  • Příkaz například nemusí mít žádné argumenty
pwd

jednoduše vrátí aktuální pracovní adresář. A tým

nastavit wdir [ pwd ]

do proměnné wdir uložíte název aktuálního adresáře .

  • Příkaz může vrátit například seznam
glob vzor

vrátí seznam názvů souborů v aktuálním adresáři, které odpovídají vzoru Vzor .

Postupy

Postupy jsou definovány následovně

název procedury { seznam argumentů } { }

Asociativní pole

Následující fragment kódu vytvoří a inicializuje asociativní pole (v jiných jazycích nazývané také mapa, slovník nebo hash).

základní kapitál ( Francie ) Paříž základní kapitál ( Itálie ) Řím základní kapitál ( Německo ) Berlín základní kapitál ( Polsko ) Varšava základní kapitál ( Rusko ) Moskva základní kapitál ( Španělsko ) Madrid

K dotazu a zobrazení jedné z hodnot asociativního pole použijte

vkládá $capital ( Itálie )

Pomocí příkazu lze získat seznam všech zemí (klíče pole).

názvy polí velká

Výsledek nebude seřazen, protože Tcl pole jsou založena na hashovacích tabulkách .

Polsko Španělsko Rusko Německo Itálie Francie

Řazení lze provést příkazem

lsort [ názvy polí velká ]

Chcete-li odkazovat na pole (předat jej jako odkaz), použijte název proměnné obsahující:

proc demo arrName { upvar 1 $arrName arr ; # spojte odkaz s místním názvem # udělejte něco s arr }

Chcete-li přistupovat k poli podle hodnoty, použijte pole get nebo array set . Chcete-li například zkopírovat jedno pole do druhého:

sada polí Newarr [ array get Oldarr ]

Tcl 8.5 zavedl pole předávaná hodnotou - slovníky ( dict ).

Chcete-li převést skalární proměnnou na pole a naopak, odstraňte existující proměnnou pomocí příkazu unset .

Variabilní rozsah

Ve výchozím nastavení jsou uvnitř procedury viditelné pouze proměnné definované v proceduře. Mimo definici procedury nejsou její proměnné přístupné jinak než prostřednictvím mechanismu předávání parametrů. V proceduře je možné mít proměnné se stejným názvem jako v hlavním programu, přičemž hodnoty těchto proměnných se budou lišit, ve skutečnosti se bude jednat o různé proměnné. Ke změně tohoto chování se používají příkazy global nebo upvar .

Příklady

Ahoj světe!

Dobrý den, světový program vypadá takto

říká "Ahoj světe!"

nebo tak

klade { Ahoj světe ! _ }

Pole

Přístup k prvkům pole

Zobrazení hodnoty prvku pole OldArray(precision), jehož název (pole) je dán novou proměnnou NewArray

set NewArray OldArray vloží [set $ { NewArray }( přesnost )] Sčítání čísel v poli

Metoda (A) – Sčítání pomocí smyčky „foreach“.

nastavit čísla { 1 2 3 4 5 6 7 8 9 10 } nastavit výsledek 0 pro každé číslo $čísla { set result [výraz { $výsledek + $číslo }] } vloží $výsledek

Metoda (B) – Mnohem elegantnější způsob pomocí příkazu 'join'

nastavit čísla { 1 2 3 4 5 6 7 8 9 10 } klade [výraz [ spojit $čísla + ]] Výpis obsahu pole

Pole tcl_platform obsahuje informace o vlastnostech platformy, na které Tcl běží. Seznam názvů vlastností lze získat pomocí

názvy polí tcl_platform

Následující úryvek je vypíše spolu s jejich hodnotami:

foreach i [ názvy pole tcl_platform ] { vloží "$i = $tcl_platform($i)" }

Pokud mají být vlastnosti seřazeny

foreach i [ lsort [ názvy polí tcl_platform ] ] { vloží "$i = $tcl_platform($i)" }

Zde je ukázáno vnoření příkazů. Mohou být vnořeny do libovolné hloubky. Podobného výsledku lze dosáhnout pomocí příkazu parray [17] zavedeného v Tcl 8.5.

Průnik množin

Procedura filtru vrátí ty prvky seznamu, pro které skript vyhodnotí jako PRAVDA:

proc filter { skript seznamu } { set res {} foreach e $list {if {[vyšší úroveň 1 $script $e ]} { lappend res $e }} return $res }

Příkaz vyšší úrovně 1 vyhodnocuje výraz v kontextu, ve kterém se nazývá filtr slov .

Procedura in  je zkrácený zápis pro zahrnutí množin:

proc v { seznamu e } { výraz {[ lsearch - přesný $list $e ] >= 0 } }

Zkouška:

% filtr { a b c } { v { b c d }} b c

Faktorial

proc ! x {výraz { $x < 2 ? 1 : $x * [ ! [ incr x - 1 ]]}}

To ukazuje, že název příkazu může být libovolný řetězec, stejně jako operátor ?: známý z jiných jazyků .

Implementace, distribuce, nástroje

Tcl je interpretovaný jazyk, to znamená , že programy Tcl jsou připraveny ke spuštění bez kompilace a spojování .

Tcl interpret byl portován na většinu běžných platforem [18] . Je šířen pod bezplatnou licencí bez copyleftu , která umožňuje jeho použití bez omezení při vývoji proprietárních aplikací a také k vytváření proprietárních odvozených systémů. Vývojáři ji označují jako BSD-like , ačkoli ve srovnání s licencí BSD ukládá licence Tcl méně omezení.

Implementace

V současné době na jádru jazyka Tcl pracuje skupina vývojářů [19] s názvem Tcl Core Team [20] . Nejnovější verze překladače Tcl a základních knihoven jsou k dispozici v repozitáři SourceForge.net , viz seznam projektů sourceforge zahrnutých v hlavní distribuci Tcl/Tk [21] .

Překladač Tcl zkompiluje program do přechodné reprezentace - bajtkódu a poté jej interpretuje. Na rozdíl například od Pythonu se tato prostřední reprezentace neukládá na disk, program lze uložit pouze ve zdrojovém kódu, případně zabalený v modulu StarKit nebo pomocí nějakého jiného wrapperu . V závislosti na možnostech kompilace může nebo nemusí Tcl interpret podporovat multithreading .

Zatímco většina učebnic Tcl pro začátečníky říká něco ve smyslu „Tcl má pouze jeden typ proměnné, řetězec“, realita je taková, že překladatelé Tcl dělají věci již dlouhou dobu jinak. Interně Tcl používá dynamický typový systém s automatickou transparentní konverzí řetězců.

Tcl je součástí téměř všech distribucí Linuxu . Microsoft Windows vyžaduje samostatný instalační balíček.

Verze Tcl 8.4 se od předchozí liší novými funkcemi (optimalizace 64bitového kódu, VFS, doplňky z hlediska introspekce ) a určitým zvýšením výkonu díky optimalizaci práce s bajtkódem.

Nové funkce přidané ve verzi 8.1 (jako je podpora více vláken, možnosti internacionalizace a zpracování znaků Unicode) zpomalily Tcl o přibližně 19 % ve srovnání s verzí 8, která přinesla skok v rychlosti. Vývojáři 8.4 vynaložili veškeré úsilí, aby maximalizovali rychlost provádění programů, aby zajistili, že nebudou pracovat nejen pomaleji, ale dokonce rychleji, než když se objevila verze 8.0. Tohoto cíle bylo dosaženo téměř u všech nástrojů Tcl a Tk - verze 8.4 je v průměru 8x rychlejší než verze 7.6 [15] .

Aktuální verze TCL je 8.6.

Alternativní implementace a dialekty

Pro populární univerzální virtuální stroje existují alternativní implementace Tcl. Jedná se o Java interpret - Jacl [22] (poslední verze z roku 2008) a projekt Eagle [23] , který implementuje většinu příkazů Tcl 8.4 pro CLR (k dispozici jsou sestavení pro .NET 4.0 a 2.0). Probíhají experimenty s překladem programů Tcl do kódu virtuálního stroje Parrot , který je vyvíjen pro šestou verzi Perlu [24] .

Pro programování vestavěných systémů a vkládání do aplikací byl vyvinut speciální dialekt Tcl - Jim [25] [26] . Jedná se o interpret, který implementuje velkou podmnožinu Tcl, rozšířenou o další objektově orientované a funkční programovací mechanismy a zabírá méně než 100 kilobajtů v kompilované formě.

Dalším dialektem Tcl je mobilní skriptovací jazyk Hecl [27] , vyvinutý Davidem Weltonem a implementovaný v Javě ( J2ME ) [28] [29] . Pokud jde o platformu Android , podporu Tcl na ní (spolu s dalšími skriptovacími jazyky) zajišťuje: skriptovací vrstva SL4A [30] ; existuje také nativní implementace Tcl pro tento OS s názvem AndroWish [31] .

Distribuce

Všechny níže uvedené distribuce jsou distribuovány volně a jsou sestaveny z komponent, které mají tu či onu bezplatnou licenci . Většina z nich je multiplatformních (kromě WinTclTk a Tcl/Tk Aqua ), i když na unixových systémech je Tcl/Tk obvykle součástí distribuce OS .

  • Aktivní Tcl [32] Nejpoužívanější distribuce Tcl. Stejně jako ostatní produkty společnosti obsahuje ActiveState velkou sadu knihoven a rozšíření. Ve verzích Windows obsahuje nástroje pro integraci WSH . Neexistují žádné nástroje , které by usnadnily život programátora. Společnost prodává balíček TclDevKit, který obsahuje nástroje pro ladění a vytváření samostatných programů (druhé založené na technologii StarKit ) a Komodo  , univerzální IDE pro skriptovací jazyky, které obsahuje vizuální programovací nástroje pro formuláře Tk .
  • WinTclTk [33] Kompaktnější než ActiveTcl, distribuce zaměřená na práci s XOTcl  , objektově orientovaným rozšířením Tcl. Seznam knihoven v něm obsažených je poněkud užší než v ActiveTcl, ale základní sada je zde přítomna. Tato distribuce zahrnuje Tloona IDE [34]  , tradiční vývojové prostředí, a XOTclIde [35] ,  objektově orientované programovací prostředí ve stylu Smalltalku , obě s debuggery. Na stránkách vývojáře je také volně dostupný balíček pro vytvoření jednoho spustitelného souboru TkWrapper založený na FreeWrap [36]  , alternativní technologii ke StarKitu založené na jednoduché kompresi ZIP . Nejnovější verze je k dnešnímu dni 8.5.6 (3. prosince 2009, Tcl 8.5.6).
  • TclKit [37] Je to Tcl/Tk se základní sadou knihoven v jednom kompaktním spustitelném souboru. Distribuce byla vytvořena pomocí technologie StarKit . Obsahuje knihovnu MetaKit , která vám umožňuje manipulovat s obsahem tohoto souboru. Další populární distribucí Tcl v jednom souboru je eTcl [38] . Na podobných principech je postavena distribuce dqkit [39]  - alternativní sestava známá jako „TclKit on steroids“, existuje několik možností, které se liší složením knihoven, podporou multithreadingu atd.
  • MyTcl [40] Kompletní integrované vývojové prostředí (IDE) v Tcl, včetně distribuce jazykového prostředí. Má schopnost generovat samostatné aplikace ve formátu StarKit . Aktuální verze je 1.0 Build 8 (18. června 2012) pro Win32 a Win64 s Tcl 8.5.11 integrovaným do systému. V současné době to není open source .
  • AndroWish [31] Prostředí pro spouštění skriptů Tcl/Tk a propojení aplikace tcl/tk do souboru apk pro spuštění pod Androidem

Aplikace

Tcl se spolu s Perlem a Pythonem stal jedním ze tří klasických univerzálních skriptovacích jazyků. Tato trojice se objevuje nejen jako seznam bezplatných distribucí sestavených v ActiveState , ale také například jako jazyky, ve kterých lze (kromě dialektu PL/pgSQL ) psát triggery a uložené procedury oblíbeného databázového serveru PostgreSQL .

Tcl jako embeddable jazyk našel uplatnění v oblasti CAD ( CAD | CAM | CAE ) [41] [42] . Používá se například jako databázový tuner v postprocesoru Unigraphics . Navíc je to de facto automatizační a integrační jazyk ve všech předních softwarových balíčcích pro návrh čipů ( FPGA a ASIC ).

Použití při vývoji webu

Ve webovém programování se Tcl obvykle používá ve spojení s webovým serverem AOLServer nebo jedním z „odlehčených“ webových serverů FastCGI , jako je lighttpd . Pro integraci Tcl s Apache existuje modul Rivet [43] .

 Pod kontrolou AOLServeru je zejména OpenACS [44] redakční systém pro webové stránky s bohatou rozšiřitelností v jazyce Tcl, rozšířeném XOtcl nebo project-open [45]  - systém pro skupinovou práci s webovým rozhraním .

Existují také projekty jako TclHttpd [46] a jeho nástupce Wub [47] , což jsou kompletní webové rámce . Na základě nového objektového rozšíření jazyka TclOO je vyvíjen webový rámec Woof (Web Oriented Object Framework) [48] . Příkladem CMS pro TclHttpd je Ucome [49] .

Kromě toho, že se Tcl používá jako implementační jazyk webových aplikací, lze jej použít jako skriptovací jazyk pro rozšíření stávajících aplikací. Jsou na něm napsány například moduly pro bota Eggdrop IRC [50] [51] .

Výhody a nevýhody

Nevýhodou raných verzí Tcl/Tk byl nepochybně pomalý výkon. Verze pod 8 používaly přímou interpretaci zdrojového kódu, ale použití bajtkódu tento problém vyřešilo. Nyní se Tcl z hlediska rychlosti příliš neliší od PHP , i když je výrazně horší než takové skriptovací jazyky, jako je například Python nebo Lua . Složité nebo časově kritické části kódu se doporučuje provádět jako externí moduly v C / C++ .

Tcl/Tk má pro programátory v "tradičních" jazycích neznámou syntaxi. Je blíže standardní syntaxi unixového shellu . Tato syntaxe může být libovolně upravena (jako v jiných „programovatelných programovacích jazycích“ jako Forth [pozn. 2] nebo Common Lisp ). To může být výhoda pro jednotlivého programátora nebo malou skupinu programátorů, ale Tcl/Tk je stěží vhodný pro použití jako obecný jazyk pro průmyslový vývoj. Ačkoli přítomnost standardizovaných rozšíření snižuje závažnost tohoto problému. Tcl lze využít i ve velkých projektech v rámci své „ekologické niky“ (embedded skripty, „lepící“ komponenty, WEB programování).

Ačkoli Tcl má všechny vlastnosti funkcionálního jazyka , jeho interpret před verzí 8.6 neprováděl optimalizaci rekurze ocasu , což ztěžovalo použití čistě funkčního stylu a snižovalo jeho efektivitu. Flexibilita jazyka však umožňuje tento problém obejít implementací zdání takové optimalizace na vysoké úrovni [52] . Konečně příkaz tailcall , který se objevil v testovací verzi 8.6, umožňuje bez problémů používat tail rekurzi.

Nepochybnou výhodou Tcl je nejbližší integrace Tcl s grafickou knihovnou Tk , která se často používá v kombinaci s jinými programovacími jazyky. Chcete-li vytvořit obaly GUI pro konzolové programy nebo balíčky konzolových programů, může být Tcl nejlepší volbou.

Vliv

I když to není široce používaný programovací jazyk, Tcl, spolu s (dřívějšími) jazyky, jako je Lisp a Smalltalk , měl významný vliv na programování. Stal se prvním jazykem zaměřeným na snadné vkládání do aplikací [53] .

Snadné použití knihovny grafických widgetů Tk nemělo obdoby a stalo se populární i v jiných univerzálních skriptovacích jazycích kromě Tcl . Tkinter zůstává výchozím nástrojem pro vytváření GUI aplikací v Pythonu . Existují také knihovny vazeb Tk pro Perl [ 54] (Tkx) a Ruby [53] .

SQLite  , zabudovatelný odlehčený systém pro správu databází SQL , byl původně vyvinut jako rozšíření Tcl [53] .

Viz také

Odkazy

V ruštině

Články a recenze Blogy věnované TCL

Knihy

V ruštině

originál: Brent Welch, Ken Jones, Jeffrey Hobbs "Practical Programming in Tcl and Tk (4th Edition)", ISBN 0-13-038560-3 , 2003 ( elektronická verze [55] )
  • Moskvin P. V. "ABC TCL", ISBN 5-93517-130-9
  • Alexey Petrovsky, TCL (Tool Command Language), ISBN 5-901321-16-2

V angličtině

  • Clif Flynt. Tcl/Tk: Příručka pro vývojáře . - 3. - Morgan Kaufmann, 2012. - 817 s. - (Série Morgana Kaufmanna v softwarovém inženýrství a programování). — ISBN 9780123847171 .
2. vydání: "Tcl/Tk, Second Edition : A Developer's Guide", ISBN 1-55860-802-8 , 2003 1. vydání: Tcl/Tk pro skutečné programátory, ISBN 0-12-261205-1
  • John K. Ousterhout, Ken Jones "Tcl and the DTk Toolkit (2nd Edition)", ISBN 0-321-33633-X , 2009
  • Bert Wheeler " Tcl/Tk 8.5 Programming Cookbook ", ISBN 1-84951-298-1 , 2011
  • Wojciech Kocjan, Piotr Beltowski. Tcl 8.5 Síťové programování . - Packt Publishing, Limited, 2010. - 588 s. — ISBN 9781849510967 .
  • Mark Harrison, Michael McLennan, efektivní programování Tcl/Tk. Psaní lepších programů v Tcl a Tk, ISBN 0-201-63474-0
  • J. Adrian Zimmer "Tcl/Tk For Programmers", ISBN 0-8186-8515-8
  • Salvatore Sanfillipo "Tcl Wise. Průvodce programovacím jazykem Tcl" ( Prvních 9 kapitol online Archivováno 29. srpna 2013 na Wayback Machine )
  • Paul Raines, Jeff Tranter „Tcl/Tk v kostce: Rychlý přehled pro stolní počítače“, ISBN 1-56592-433-9
  • David Maggiano "Programování CGI s Tcl", ISBN 0-201-60629-1
  • JM Ivler, Kamran Husain, "Cgi Developer's Resource: Web Programming in Tcl and Perl", ISBN 0-13-727751-2

Poznámky

  1. . Pokud vám žádná z implementací objektového modelu nevyhovuje, nebo vás zajímá, jak funguje, můžete si přečíst článek Vytváření objektových příkazů archivovaných 13. května 2007 na Wayback Machine  od tvůrců SNIT
  2. Zajímavá symbióza Forth a Tcl v rámci projektu HolonT Archivováno 2. dubna 2012 na Wayback Machine , kde je Forth přeložen do Tcl kódu.
Prameny
  1. Vydáno Tcl / Tk 8.6.12  (anglicky) – 2021.
  2. https://www.tcl.tk/software/tcltk/8.6.html
  3. Kocjan, Beltowski, 2010 , pp. 62-63.
  4. Standardní knihovna Tcl (tcllib) . www.tcl.tk. Získáno 26. června 2016. Archivováno z originálu 6. října 2014.
  5. Sriram Srinivasan. 7.5 Srovnání s jinými OO jazyky // Pokročilé programování v Perlu . — 1. vydání. - O'Reilly , 1997. - ISBN 1-56592-220-4 .
  6. Kocjan, Beltowski, 2010 .
  7. TclOO Archivováno 15. září 2018 na Wayback Machine v TclWiki
  8. Clyf Flynt. 8.1.7. Vnoření jmenného prostoru // Tcl/Tk: Průvodce pro vývojáře. — 3. vydání. - Waltham, MA : Morgan Kaufmann, 2012. - S. 215. - 792 s. — ISBN 0-12-384717-6 .
  9. viz také Kroky k funkčnímu programování Archivováno 10. února 2007 na Wayback Machine
  10. Viz Historie Tcl archivovaná 10. června 2016 na Wayback Machine
  11. Proč byste neměli používat Tcl . Datum přístupu: 14. května 2007. Archivováno z originálu 4. února 2012.
  12. Cameron Laird, Katherine Sorez, SunWorld, USA. Zakladatel Tcl odchází ze slunce do nového podniku  // Computerworld. - Otevřené systémy , 1998. - č. 07 .
  13. Robert McMillan, SunWorld. Tcl: cesta k novému životu  // Počítačový svět. - Otevřené systémy , 1998. - č. 36 .
  14. John K. Ousterhout Scripting: Programování na vyšší úrovni pro 21. století Archivováno 1. února 2010 na Wayback Machine  .
    Překlad tohoto článku Archivováno 30. září 2007 na Wayback Machine  (rusky) v časopise Open Systems, č. 3, 1998
  15. 1 2 viz Tcl Benchmarks Archived 21. května 2007 na Wayback Machine
  16. Ted Smalley Bowen. Tcl: Enterprise Variant  // Počítačový svět. - Otevřené systémy , 1999. - č. 21 .
  17. Dokumentace Tcl | odrazit . Získáno 26. března 2014. Archivováno z originálu 11. května 2014.
  18. TCL Wiki | Na jakých platformách Tcl běží . Získáno 26. března 2014. Archivováno z originálu 2. září 2013.
  19. Seznam členů Tcl Core Team . Získáno 14. května 2007. Archivováno z originálu 2. května 2007.
  20. Tcl Core Team . Získáno 14. května 2007. Archivováno z originálu dne 30. dubna 2007.
  21. Tcl na SourceForge . Získáno 14. května 2007. Archivováno z originálu 16. května 2007.
  22. Projekt Tcl/Java, Jacl . Získáno 14. května 2007. Archivováno z originálu 29. dubna 2007.
  23. The Eagle Project, (Extensible Adaptable Generalized Logic Engine) . Získáno 11. června 2011. Archivováno z originálu 2. října 2011.
  24. část. Implementace tcl zaměřená na papouščí VM Archivováno 22. května 2011 na Wayback Machine ( archivováno 24. srpna 2011 blog projektu na Wayback Machine
  25. Steve Bennett. Jim Tcl. Malá stopa Implementace Tcl // Tisk Asociace Tcl 18. výroční Asociace Tcl Sborník z konference Tcl/Tk. - Lulu.com, 2011. - S. 94-105 . — ISBN 0578098016 .
  26. Tlumočník Jim. Malá implementace programovacího jazyka Tcl
  27. hecl.org Archivováno 15. prosince 2010 na Wayback Machine : Hecl - The Mobile Scripting Language
  28. David Welton. Vytvořte jednoduchou aplikaci pomocí Hecl  // Free Software Magazine. — St, 31. 10. 2007. - Problém. 20 . Archivováno z originálu 30. června 2013.
  29. Implementace programovacího jazyka Hecl archivována 10. srpna 2013 na Wayback Machine 
  30. O automatizaci a skriptování pro Android . "Hacker" (18. února 2014). Získáno 26. června 2016. Archivováno z originálu 15. srpna 2016.
  31. 12 AndroWish . Tcl/Tk pro Android . Datum přístupu: 3. prosince 2014. Archivováno z originálu 20. prosince 2014.
  32. ActiveTcl. Průmyslově standardní distribuce Tcl (nedostupný odkaz) . Získáno 1. září 2013. Archivováno z originálu 21. srpna 2009. 
  33. WinTclTk. Distribuce Tcl/Tk pro Microsoft Windows . Získáno 5. června 2007. Archivováno z originálu 22. června 2007.
  34. Tloona Tcl/Tk IDE . Datum přístupu: 21. října 2008. Archivováno z originálu 22. března 2009.
  35. XOTclIDE. Integrované vývojové prostředí pro XOTcl a Tcl . Získáno 15. května 2007. Archivováno z originálu 21. června 2007.
  36. FreeWrap. Vytváří samostatné spustitelné soubory TCL/TK. Není potřeba žádný kompilátor! . Získáno 15. května 2007. Archivováno z originálu 29. června 2014.
  37. Runtime aplikace Tclkit . Získáno 14. května 2007. Archivováno z originálu 23. května 2007.
  38. ETcl. Evolaneova distribuce Tcl/Tk (nedostupný odkaz) . Získáno 1. září 2013. Archivováno z originálu 1. září 2013. 
  39. dqkit . Získáno 14. května 2007. Archivováno z originálu 21. května 2007.
  40. MyTcl. Výkonné Tcl/Tk IDE . Získáno 25. března 2013. Archivováno z originálu 15. května 2013.
  41. Historie CAD softwaru Archivováno 13. ledna 2010 na Wayback Machine v TclWiki Archivováno 19. prosince 2006 na Wayback Machine
  42. Moderní výpočetní technika ve službách Nike, Inc. Archivováno 15. října 2011 na Wayback Machine v CAD a Graphics Magazine Archivováno 25. března 2010 na Wayback Machine , č. 10'2000
  43. Rivet - Webscripting pro Tcl'ers . Získáno 22. září 2010. Archivováno z originálu 27. září 2011.
  44. OpenACS. Sada nástrojů pro online komunity byla archivována 31. srpna 2009 na Wayback Machine 
  45. projekt otevřen. Open-Source Enterprise Project Management Archivováno 14. ledna 2010 na Wayback Machine 
  46. Webový server tclhttpd-Tcl . Získáno 30. ledna 2010. Archivováno z originálu 25. ledna 2010.
  47. Wub pure tcl HTTP1.1 server, klient a sada nástrojů . Datum přístupu: 5. ledna 2010. Archivováno z originálu 28. dubna 2010.
  48. Uf. Web Oriented Object Framework . Datum přístupu: 30. ledna 2010. Archivováno z originálu 14. srpna 2009.
  49. Ucome. Vaše správa obsahu v Tcl Archivováno 10. února 2014 na Wayback Machine 
  50. Darryl K. Taft. Programovací jazyk Tcl: 20 věcí, které nevíte . eWeek (31. ledna 2011). Staženo: 25. června 2016.
  51. Instalace eggdropu na IRC – „Hacker“ (21. srpna 2000). Získáno 25. června 2016. Archivováno z originálu 13. srpna 2016.
  52. Optimalizace Tail call Archivováno 11. března 2007 na Wayback Machine popisuje tento problém a nastiňuje možná řešení.
  53. ↑ 1 2 3 Andrew Binstock. Čtvrt století Tcl . Dr. Dobb's (21. ledna 2014). Získáno 25. června 2016. Archivováno z originálu 7. července 2016.
  54. Nancy Walsh. Učení Perl/Tk . - O'Reilly, 1999. - 392 s. — ISBN 9781565923140 .
  55. první vydání plně dostupné, selektivně, novější