Tcl
Paradigma | Multi-Paradigma: ereignisgesteuert, funktional, Imperativ, objektorientierter |
---|---|
Entworfen von | John outsterhout |
Entwickler | TCL CORE -Team[1] |
Erstmals erschienen | 1988 |
Stabile Version | |
Disziplin tippen | Dynamisches Typing, alles kann als als behandelt werden Saite |
Lizenz | BSD-Stil[4] |
Dateiname -Erweiterungen | .tcl, .tbc[5] |
Webseite | www www |
Haupt Implementierungen | |
Activetcl Androwish | |
Dialekte | |
Jim, Adler | |
Beeinflusst von | |
Awk, Lispeln | |
Beeinflusst | |
Php,[6] Power Shell,[7] Tee |
Tcl (ausgesprochen "kitzeln"oder als ein Initialismus[8]) ist ein hohes Level, allgemeiner Zweck, interpretiert, Dynamische Programmiersprache. Es wurde mit dem Ziel entwickelt, sehr einfach, aber mächtig zu sein.[9] TCL steckt alles in die Form von a BefehlSogar Programmierkonstrukte wie variable Zuordnung und Prozedurdefinition.[10] TCL unterstützt mehrere Programmierparadigmen, einschließlich objektorientierter, Imperativ und Funktionelle Programmierung oder prozedural Stile.
Es wird üblicherweise eingebettet in C Anwendungen,[11] zum Rapid-Prototyping, Skriptanwendungen, GUIs und Tests.[12] TCL -Dolmetscher sind für viele verfügbar Betriebssysteme, sodass TCL -Code auf einer Vielzahl von Systemen ausgeführt werden kann. Da TCL eine sehr kompakte Sprache ist, wird sie verwendet eingebettete Systeme Plattformen, sowohl in seiner vollständigen Form als auch in mehreren anderen Kleinfußabdruckversionen.[13]
Die beliebte Kombination von TCL mit dem Tk Erweiterung wird als bezeichnet als Tcl/tk, und ermöglicht den Bau a grafische Benutzeroberfläche (GUI) Nativ in TCL. TCL/TK ist im Standard enthalten Python Installation in Form von Tkinter.
Geschichte
Die TCL -Programmiersprache wurde im Frühjahr 1988 von erstellt John outsterhout während der Arbeit bei der Universität von Kalifornien, Berkeley.[14][15] Ursprünglich "aus Frustration geboren",[11] Nach Angaben des Autors, mit Programmierern, die ihre eigenen Sprachen entwickeln, die in eingebettet sein sollen Elektronische Designautomatisierung (EDA) Magie Bewerbung, bei der John professioneller Fokus hatte.[16] Später erlangte TCL selbst Akzeptanz. Outsterhout wurde mit dem ausgezeichnet ACM Software System Award 1997 für TCL/TK.[17]
Der Name stammt ursprünglich von TOol COmmand LAnguage, ist aber herkömmlich "tcl" als "tcl" geschrieben.[18]
Datum | Vorfall |
---|---|
Januar 1990 | TCL kündigte Beyond Berkeley (Winter Usenix). |
Juni 1990 | Erwarten von angekündigt (Sommer Usenix). |
Januar 1991 | Erste Ankündigung von Tk (Winter Usenix). |
Juni 1993 | Erste TCL/TK -Konferenz (Berkeley). [Tabelle] Geometriemanager (Vorläufer von [Grid]), [Incrib TCL], TCLDP und Groupkit, gab dort bekannt. |
August 1997 | TCL 8.0 führte einen Bytecode -Compiler ein.[19] |
April 1999 | TCL 8.1 führt voll ein Unicode Unterstützung[20] und fortgeschritten Reguläre Ausdrücke.[21] |
August 1999 | TCL 8.2 führt die TCL -Erweiterungsarchitektur (Tee) ein[22] |
August 2000 | Das TCL Core-Team bildete sich und bewegte TCL zu einem gemeinschaftsorientierten Entwicklungsmodell.[1] |
September 2002 | Neunte TCL/TK -Konferenz (Vancouver). Ankündigung des Starkit -Verpackungssystems. TCL 8.4.0 Veröffentlicht.[23] |
Dezember 2007 | TCL 8.5 hat neue DataTypes hinzugefügt, ein neues Erweiterungs -Repository, Bignums,[24] Lambdas.[25][26] |
Dezember 2012 | TCL 8.6 Integriertes dynamisches Objektsystem, TCLO und Stackless Evaluation hinzugefügt.[27] |
TCL -Konferenzen und Workshops finden sowohl in den USA als auch in Europa statt.[28]
Merkmale
Zu den Funktionen von TCL gehören
- Alle Operationen sind Befehle, einschließlich Sprachstrukturen. Sie sind geschrieben in Präfixnotation.
- Befehle akzeptieren üblicherweise eine variable Anzahl von Argumenten (sind variadisch).
- Alles kann dynamisch neu definiert und überschrieben werden. Tatsächlich gibt es keine Schlüsselwörter, daher können auch Kontrollstrukturen hinzugefügt oder geändert werden, obwohl dies nicht ratsam ist.
- Alle Datentypen kann als manipuliert werden wie Saiten, einschließlich Quellcode. Innen haben Variablen Typen wie Ganzzahl und Doppel, aber die Konvertierung ist rein automatisch.
- Variablen werden nicht deklariert, sondern zugewiesen. Die Verwendung einer nicht definierten Variablen führt zu einem Fehler.
- Volldynamisch, klassenbasierte Objektsystem, Tcloo, einschließlich fortschrittlicher Funktionen wie Metaklassen, Filter und Mischungen.[29]
- Ereignisgesteuerte Schnittstelle zu Steckdosen und Dateien. Zeitbasierte und benutzerdefinierte Ereignisse sind ebenfalls möglich.
- Variable Sichtbarkeit auf lexikalische (statische) beschränkt Umfang standardmäßig, aber
Uplevel
undupvar
Ermöglicht Procs, mit den Scopes der umschließenden Funktionen zu interagieren. - Alle von TCL selbst definierten Befehle generieren Fehlermeldungen bei falscher Verwendung.
- Erweiterbarkeit, via C, C ++, Java, Python und Tcl.
- Interpretierte Sprache Verwendung Bytecode
- Voll Unicode (3.1 Zu Beginn regelmäßig aktualisiert) Support, erstmals veröffentlicht 1999.
- Reguläre Ausdrücke[21]
- Plattformübergreifend: Windows -API; Unix, Linux, Macintosh usw.
- Schließe, plattformübergreifende Integration mit Fenster (GUI) Schnittstelle Tk.
- Es gibt mehrere Verteilungsmechanismen:
- Vollentwicklungsversion (für Windows, z. Aktivität TCL, sehen [1])
- Tclkits (Einzeldatei ausführbare Datei mit einer vollständigen Skriptlaufzeit, nur etwa 4 Megabyte mit Größe), Starkits (Verpackungsmechanismus zur Bereitstellung einer Anwendung auf in sich geschlossene, installationsfreie und hoch tragbare Weise) und) und Starpacks (Kombinieren Sie Starkit mit TCLKIT, um einen Starpack zu produzieren - eine einzelne plattformspezifische ausführbare Datei, die ideal für die einfache Bereitstellung ist.)
- Der Jim -Dolmetscher, eine kleine Fußabdruck -TCL -Implementierung
- Frei verteilbar Quellcode unter einem BSD -Lizenz.[30]
Safe-tcl
Safe-TCL ist eine Teilmenge von TCL mit eingeschränkten Funktionen, sodass TCL-Skripte ihren Hosting-Computer oder ihre Anwendung nicht schädigen können.[31] Der Zugriff auf Dateisysteme ist begrenzt und es werden willkürliche Systembefehle bei der Ausführung verhindert. Es verwendet ein Dual -Interpreter -Modell mit dem nicht vertrauenswürdigen Interpreter, der Code in einem nicht vertrauenswürdigen Skript ausführt. Es wurde von entworfen von Nathaniel Borenstein und Marshall Rose Aktive Nachrichten in E-Mail einbeziehen. Safe-TCL kann in E-Mail aufgenommen werden, wenn die Anwendung/Safe-TCL und Multipart/aktiviertem E-Mail sind unterstützt. Die Funktionalität von Safe-TCL wurde seitdem als Teil der Standard-TCL/TK-Releases eingebaut.[32][33]
Syntax und grundlegende Semantik
Die Syntax und die Semantik von TCL werden durch zwölf Regeln behandelt[34] bekannt als der Dodekalogue.[35]
Ein TCL -Skript besteht aus einer Reihe von Befehlsanfällen. Ein Befehlsaufruf ist eine Liste von Wörtern, die durch Whitespace getrennt und von a beendet wurden Neue Zeile oder Semikolon. Das erste Wort ist der Name eines Befehls, der in die Sprache eingebaut werden kann, die in einem verfügbaren verfügbar ist Bibliothek, oder im Skript selbst definiert. Die nachfolgenden Wörter dienen als Argumente für den Befehl:
Befehlsname Argument1 Argument2 ... Argumentn
Das folgende Beispiel verwendet das stellt (Kurz gesagt, für "String") Befehl zum Anzeigen einer Textzeichenfolge auf der Host -Konsole:
stellt "Hallo Welt!"
Dies sendet die Zeichenfolge "Hallo, Welt!" zum Standardausgabe Gerät zusammen mit einem angehängten Newline -Charakter.
Variablen und die Ergebnisse anderer Befehle können in Zeichenfolgen ersetzt werden, z. B. in diesem Beispiel, das das verwendet einstellen und Expr Befehle, um das Ergebnis einer Berechnung in einer Variablen zu speichern (beachten Sie, dass TCL nicht verwendet wird =
als Zuordnungsoperator) und dann verwendet stellt So drucken Sie das Ergebnis zusammen mit einem erklärenden Text:
# EXPR bewertet die Textzeichenfolge als Ausdruck einstellen Summe [Expr 1+2+3+4+5] stellt "Die Summe der Zahlen 1..5 ist $ sum."
Das #
Charakter führt a Kommentar. Kommentare können überall dort angezeigt werden, wo der Dolmetscher einen Befehlsnamen erwartet.
# Mit lockigen Zahnspangen wird eine variable Substitution durch EXPR durchgeführt einstellen x 1 einstellen Summe [Expr {$ x + 2 + 3 + 4 + 5}]; # $ x wird nicht ersetzt, bevor der Parameter an exprabgeht. # Ersetzt 1 für $ x, während der Ausdruck bewertet wird stellt "Die Summe der Zahlen 1..5 ist $ sum."; # sum ist 15
# ohne lockige Zahnspangen erfolgt eine variable Substitution an der Definitionsstelle (lexikalischer Scoping) einstellen x 2 einstellen op * einstellen y 3 einstellen res [Expr $ x $ op $ y]; # $ x, $ op und $ y werden ersetzt, und der Ausdruck wird bewertet stellt "2 * 3 ist $ res."; # 6 wird für $ res ersetzt
Wie in diesen Beispielen zu sehen ist, gibt es in der Sprache ein grundlegendes Konstrukt: den Befehl. Zitieren von Mechanismen und Substitutionsregeln bestimmen, wie die Argumente für jeden Befehl verarbeitet werden.
Eine besondere Substitution tritt auf Vor Das Parsen von Befehlen oder Argumenten. Wenn das endgültige Zeichen in einer Zeile (d. H. Unmittelbar vor einer neuen Linie) ein Backslash ist, werden die Kombination aus der Backslash-Newline (und alle Leerzeichen oder Registerkarten unmittelbar nach der neuen Linie) durch einen einzelnen Raum ersetzt. Dies liefert a Liniendauer Mechanismus, wobei lange Zeilen im Quellcode für die Bequemlichkeit der Leser an die nächste Zeile eingewickelt werden können.
Fortsetzung der normalen Argumentationsverarbeitung, ein Wort, das mit einem Doppel-Quenz-Charakter beginnt ("
) erstreckt sich bis zum nächsten Doppelquote-Charakter. Ein solches Wort kann somit Whitespace und Semikolonen enthalten, ohne dass die Charaktere als besondere Bedeutung interpretiert werden (d. H. Sie werden als normale Textzeichen behandelt). Ein Wort, das mit einem öffnenden Curly-Brace-Charakter beginnt ({
) erstreckt sich bis zum nächsten Schluss-Curly-Brace-Charakter (}
). Innerhalb von lockigen Zahnspangen werden alle Formen der Substitution unterdrückt, mit Ausnahme der zuvor erwähnten Eliminierung von Backslash-Newline. Wörter, die nicht in jedes Konstrukt eingeschlossen sind, werden als bloße Wörter bezeichnet.
In bloßen und doppelten Worten können drei Arten von Substitution auftreten:
- Befehlssubstitution Ersetzt den Inhalt ausgewogener Quadratklammern durch die Bewertung des im Inneren enthaltenen Skripts. Zum Beispiel,
[expr 1+2+3]
wird durch das Ergebnis der Bewertung des enthaltenen Ausdrucks ersetzt (in diesem Fall 6). - Variable Substitution Ersetzt den Namen einer variablen Variablen, die mit einem Dollarzeichen durch den Inhalt (oder Wert) der Variablen vorangestellt ist. Zum Beispiel,
$ foo
wird durch den Inhalt der Variablen als "Foo" ersetzt. Der variable Name kann von lockigen Zahnspangen umgeben sein, um ihn in ansonsten mehrdeutigen Fällen vom nachfolgenden Text zu trennen (z. B.,,,$ {foo}
). - Backslash -Substitution Ersetzt einen Backslash, gefolgt von einem Buchstaben mit einem anderen Charakter. Zum Beispiel,
\n
wird durch eine neue Linie ersetzt.
Die Substitution verläuft in einem einzelnen Scan durch jedes Wort links nach rechts. Jeglicher Ersatztext wird nicht erneut für mögliche weitere Substitutionen gescannt. Eine beliebige Anzahl von Substitutionen kann jedoch in einem einzigen Wort erscheinen.
Ab TCL 8.5 kann jedes Wort durch vorangestellt werden {*}
, was dazu führt, dass das Wort in seine konstituierenden Unterwörter aufgeteilt wird, um den Befehlsaufruf zu erstellen (ähnlich wie die @
eine Reihe von LispelnQuasiquote -Funktion).
Infolge dieser Regeln kann das Ergebnis eines Befehls als Argument für einen anderen Befehl verwendet werden. Beachten Sie, dass anders als in UNIX -Befehlsschalen, TCL repariert keine Zeichenfolge, es sei denn, dies ist ausdrücklich darauf gerichtet, was den interaktiven Gebrauch mehr umständlich macht, aber skriptierte Verwendung vorhersehbarer (z. B. das Vorhandensein von Räumen in Dateinamen verursacht keine Schwierigkeiten).
Das einzelne Gleichstellungszeichen (=
) dient überhaupt keine besondere Rolle in der Sprache. Das Doppelgleichheitszeichen (==
) ist der Test für Gleichheit, der in Expressionskontexten wie dem verwendet wird Expr
Befehl und im ersten Argument zu wenn
. (Beide Befehle sind Teil der Standardbibliothek; sie haben keinen besonderen Platz in der Bibliothek und können bei Wunsch ersetzt werden.)
Die Mehrheit der TCL -Befehle, insbesondere in der Standardbibliothek, sind variadisch, und die Proc
(Mit dem Konstruktor für Befehlsvorgänge des Skripts) kann man die Standardwerte für nicht spezifizierte Argumente und ein Catch-All-Argument definieren, damit der Code willkürliche Anzahl von Argumenten verarbeiten kann.
TCL wird nicht statisch getippt: Jede Variable kann Ganzzahlen, Schwimmer, Zeichenfolgen, Listen, Befehlsnamen, Wörterbücher oder einen anderen Wert enthalten. Die Werte werden als andere Typen bei Bedarf neu interpretiert (vorbehaltlich syntaktischer Einschränkungen). Werte sind jedoch unveränderlich und Operationen, die sie zu ändern scheinen, geben sie stattdessen nur einen neuen Wert zurück.
Grundbefehle
Die wichtigsten Befehle, die sich auf Programmausführung und Datenoperationen beziehen, sind:
-
einstellen
schreibt einen neuen Wert in eine Variable (erstellt eine Variable, wenn es nicht vorhanden ist). Wenn es nur mit einem Argument verwendet wird, gibt es den Wert der angegebenen Variablen zurück (es muss in diesem Fall existieren). -
Proc
Definiert einen neuen Befehl, dessen Ausführung dazu führt, dass ein bestimmtes TCL -Skript ausgeführt wird und als Set von Befehlen geschrieben wurde.Rückkehr
Kann verwendet werden, um die Kontrolle sofort an den Anrufer zurückzugeben.
Die üblichen Befehle zur Ausführungssteuerung sind:
-
wenn
Ausführend gegebener Skript Körper (zweites Argument), wenn die Bedingung (erstes Argument) erfüllt ist. Es kann von zusätzlichen Argumenten gefolgt werden, die von aus beginnenelseif
mit dem alternativen Zustand und Körper, oderanders
mit dem komplementären Block. -
während
Wiederholungen, die den gegebenen Skriptkörper ausführen, solange der Zustand (erstes Argument) erfüllt bleibt -
für jeden
Ausführend gegebener Körper, in dem der Kontrollvariablen Listenelemente einzeln zugewiesen werden. -
zum
Verknüpfung zur Initialisierung der Steuervariablen, Bedingung (wie inwährend
) und die zusätzliche Anweisung "Next Iteration" (Befehl, die nach der Ausführung des Körpers ausgeführt wurde)
Die obigen Befehle über Looping können zusätzlich durch die folgenden Befehle gesteuert werden:
-
Unterbrechung
unterbricht die Körperausführung und kehrt aus dem Schleifenbefehl zurück -
fortsetzen
unterbricht die Körperausführung, aber die Kontrolle wird dem Schleifenbefehl immer noch zurückgegeben. Zumwährend
es bedeutet wieder zu schleifen, fürzum
undfür jeden
Nehmen Sie die nächste Iteration auf. -
Rückkehr
Unterbricht die Ausführung des aktuellen Körpers egal wie tief in einem Verfahren, bis er die Verfahrensgrenze erreicht, und gibt dem Anrufer den gegebenen Wert zurück.
Erweiterte Befehle
-
Expr
Übergibt das Argument an einen separaten Ausdrucksinterpreter und gibt den bewerteten Wert zurück. Beachten Sie, dass der gleiche Dolmetscher auch für den "bedingten" Ausdruck für verwendet wirdwenn
und Schleifenbefehle. -
aufführen
erstellt a aufführen bestehend aus allen Argumenten oder einer leeren Zeichenfolge, wenn kein Argument angegeben ist. DasLindex
Der Befehl kann für das Ergebnis verwendet werden, um die ursprünglichen Argumente erneut zu extrahieren. -
Array
Manipuliert Array Variablen. -
DICT
Manipuliert Wörterbuch (Da 8.5), die Listen mit einer geraden Anzahl von Elementen sind, bei denen alle beiden Elemente als Schlüssel-/Wertpaar interpretiert werden. -
Regexp
entspricht einem regulären Ausdruck gegen eine Zeichenfolge. -
Regsub
Führt Substitutionen durch, die auf dem regulären Expressions -Musteranpassung basieren. -
Uplevel
ist ein Befehl Dadurch kann ein Befehlskript in a ausgeführt werden Umfang Außer dem aktuellen innersten Bereich auf dem Stapel. -
upvar
Erstellt einen Link zur Variablen in einem anderen Stapelrahmen. -
Namespace
Mit können Sie separate Kontexte für Befehle und Variablen erstellen, zugreifen und zerstören. -
anwenden
wendet eine anonyme Funktion an (seit 8.5). -
Coroutine
,Ertrag
, undRendite
Werte erstellen und produzieren von Coroutinen (seit 8,6). -
Versuchen
Ermöglicht es Ihnen, Fehler und Ausnahmen zu fangen und zu verarbeiten. -
Fang
Lassen Sie sich außergewöhnliche Renditen fangen. -
Zlib
Bietet Zugriff auf die Komprimierungs- und Überprüfungsanlagen der ZLIB -Bibliothek (seit 8.6).
Uplevel
Uplevel
Ermöglicht ein Befehlskript in a Umfang Außer dem aktuellen innersten Bereich auf dem Stapel. Weil das Befehlskript selbst Prozeduren aufrufen kann, die das verwenden Uplevel Befehl, dies hat den Nettoeffekt der Transformation der Transformation Rufen Sie Stack an in einen Anrufbaum.[36]
Es wurde ursprünglich implementiert, um TCL-Verfahren zu ermöglichen, um integrierte Befehle neu aufzunehmen (wie wie zum, wenn oder während) und haben immer noch die Fähigkeit, lokal zu manipulieren Variablen. Zum Beispiel ist das folgende TCL -Skript eine Neuauflagen der zum Befehl (weglassen Ausnahmebehandlung):
Proc zum {initcmd TESTEXPR advancecmd Bodyskript} { Uplevel 1 $ initcmd einstellen testcmd [aufführen Expr $ tstexpr] während {[Uplevel 1 $ testcmd]} { Uplevel 1 $ bodyscript Uplevel 1 $ Advancecmd } }
Upvar
upvar
arrangiert einen oder mehrere Lokale Variablen im aktuellen Verfahren, um sich auf Variablen in einem umschließenden Verfahrensanruf oder auf zu beziehen oder auf globale Variablen. Der Befehl upvar vereinfacht die Implementierung des Call-by-Namens-Prozeduranrufs und erleichtert das Erstellen neuer Steuerungskonstrukte als TCL-Verfahren.[37]
Ein DECR-Befehl, der wie das integrierte funktioniert Inkretierung
Der Befehl, außer dass er den Wert von der Variablen subtrahiert, anstatt ihn hinzuzufügen:
Proc abnehmen {varname {Abnahme 1}} { upvar 1 $ varname var Inkretierung var [Expr {-$ Decrement}] }
Objektorientierter
TCL 8.6 fügte 2012 ein integriertes dynamisches Objektsystem, TCLO, hinzu.[29] Es enthält Funktionen wie:
- Klassenbasierter Objektsystem. Das erwarten die meisten Programmierer von OO.
- Ermöglicht die Anpassung pro Objekt und dynamische Neudefinition von Klassen.
- Metaklassen
- Filter
- Mischungen
- Ein System zur Implementierung von Methoden auf benutzerdefinierte Weise, so dass Paketautoren, die erheblich unterschiedliche Methoden implementieren möchten, dies ziemlich einfach tun können.
oo::Klasse schaffen Obst { Methode Essen {} { stellt "lecker!" } } oo::Klasse schaffen Banane { Superklasse Obst Konstrukteur {} { mein Variable geschält einstellen geschält 0 } Methode schälen {} { mein Variable geschält einstellen geschält 1 stellt "Haut jetzt ab" } Methode essbar? {} { mein Variable geschält Rückkehr $ geschält } Methode Essen {} { wenn {![mein essbar?]} { mein schälen } nächste } } einstellen b [Banane Neu] $ b Essen → Drucke "Haut jetzt ab" und "lecker!" Obst zerstören$ b Essen → Error "unbekannter Befehl"
TCL hatte nicht objektorientierter (Oo) Syntax bis 2012,[29] So entstanden verschiedene Erweiterungspakete, um die objektorientierte Programmierung zu ermöglichen. Sie sind im vorhandenen TCL -Quellcode weit verbreitet. Beliebte Erweiterungen umfassen:
- Incher tcl
- Xotcl
- Itk
- Snit
- Stooop
TCLO wurde nicht nur hinzugefügt, um ein starkes, objektorientiertes System zu erstellen, sondern auch, um Erweiterungspakete zu erstellen, um objektorientierte Abstraktionen zu erstellen, die sie als Fundament verwenden. Nach der Veröffentlichung von TCLO, Incher tcl wurde aktualisiert, um TCLO als Fundament zu verwenden.[27]
Entwicklung von Webanwendungen
TCL -Webserver ist eine reine TCL-Implementierung eines HTTP-Protokollservers. Es läuft als Drehbuch über einem Vanille -TCL -Dolmetscher.
Apache Rivet ist ein Open -Source -Programmiersystem für Apache HTTP Server Dadurch können Entwickler TCL als Skriptsprache zum Erstellen dynamischer Webanwendungen verwenden. Rivet ist ähnlich wie Php, ASP, und JSP. Rivet wurde hauptsächlich von Damon Courtney, David Welton, Massimo Manghi, Harald Oehlmann und entwickelt Karl Lehenbauer. Rivet kann Tausende von öffentlich verfügbaren TCL -Paketen verwenden, die unzählige Funktionen wie Datenbankinteraktion (Oracle, PostgreSQL, MySQL, SQLite usw.) oder Schnittstellen zu beliebten Anwendungen wie dem anbieten GD Graphics Library.
Vernetzung mit anderen Sprachen
TCL -Schnittstellen nativ mit dem C Sprache.[38] Dies liegt daran Schlüsselwörter, wie zum Beispiel wenn
oder während
) werden auf diese Weise implementiert. Jede Befehlsimplementierung Funktion Es wird ein Array von Werten übergeben, die die (bereits ersetzten) Argumente an den Befehl beschreiben, und kann frei sind, diese Werte so zu interpretieren, wie sie anpasst.
Digital Logiksimulatoren Fügen Sie häufig eine TCL -Skriptoberfläche zum Simulieren ein Verilog, VHDL und Systemverilog Hardwaresprachen.
Tools existieren (z. SCHLUCK, Ffidl) automatisch den erforderlichen Code zur Verbindung von beliebigen C -Funktionen und der TCL -Laufzeit und und der TCL -Laufzeit und der Verbindung zu generieren, und Kritik Lustet das Gegenteil, das Einbetten von willkürlichem C -Code in ein TCL -Skript einbettet und es zur Laufzeit in a kompiliert DLL.
Erweiterungspakete
Die TCL-Sprache hat immer Erweiterungspakete ermöglicht, die zusätzliche Funktionen liefern, z. B. GUI, terminalbasierte Anwendungsautomatisierung, Datenbankzugriff usw. Zu den häufig verwendeten Erweiterungen gehören:
- Tk
- Die beliebteste TCL -Erweiterung ist die Tk Toolkit, das a liefert grafische Benutzeroberfläche Bibliothek für eine Vielzahl von Betriebssysteme. Jede GUI besteht aus einer oder mehreren Rahmen. Jeder Frame hat einen Layout -Manager.
- Erwarten von
- Eine der anderen sehr beliebten TCL -Erweiterungen ist Erwarten von Verlängerung. Die frühe enge Erwartungsbeziehung mit TCL ist weitgehend für die Beliebtheit von TCL in produktiven Gebrauchsbereichen wie bei Unix -Tests verantwortlich Viele sich wiederholende Aufgaben (d. H. Scripting früher interaktiver Anwendungen). TCL war der einzige Weg zu erwarten, daher wurde TCL in diesen Bereichen der Industrie sehr beliebt.
- Fliesen/TTK
- Fliesen/TTK[39] ist eine Stil- und Themen -Widget -Sammlung, die die meisten Widgets in TK durch Varianten ersetzen kann Betriebssystem's API. Auf diese Weise bedeckte Themen sind Windows XP, Windows Classic, Qt (Das haken sich in die X11 Kde Umgebungsbibliotheken) und Aqua (Mac OS X). Ein Thema kann auch ohne diese Aufrufe mit Widget -Definitionen konstruiert werden, die mit dem Bild ergänzt werden pixmaps. Zu den auf diese Weise geschaffenen Themen gehören klassischer TK, Step, Alt/Revitalized, Plastik und Keramik. Unter TCL 8.4 ist dieses Paket als Fliesen bekannt, während es in TCL 8.5 in die Kernverteilung von TK (als TTK) gefaltet wurde.
- Tix
- Tix, die TK -Schnittstellenerweiterung, ist ein Satz von Benutzeroberflächenkomponenten, die die Funktionen von TCL/TK- und Python -Anwendungen erweitern. Es handelt sich um ein Open-Source-Softwarepaket, das von Freiwilligen in der TIX-Projektgruppe verwaltet und unter einer Lizenz im BSD-Stil veröffentlicht wurde.[40]
- Itcl/incrtcl
- Itcl ist ein Objektsystem für TCL und wird normalerweise als [inkret tcl] bezeichnet (das ist der Weg, um in TCL zu exkrementieren, ähnlich wie der Name C ++).
- Tcllib
- Tcllib ist eine Reihe von Skriptpaketen für TCL, die ohne Zusammenstellungsschritte verwendet werden können.
- Tklib
- Tklib ist eine Sammlung von Versorgungsmodulen für TK und ein Begleiter von TCllib.
- tdom
- tdom ist eine TCL -Erweiterung für das Parsen von XML, basierend auf dem Expat Parser
- Tcltls
- Tcltls ist OpenSSL Erweiterung an TCL.
- Tcludp
- Das tcludp[41] Die Erweiterung bietet eine einfache Bibliothek zur Unterstützung User Datagram Protocol (UDP) Sockets in TCL.
- Datenbanken
- TCL Database Connectivity (TDBC), Teil von TCL 8.6, ist eine gemeinsame Datenbankzugriffsschnittstelle für TCL -Skripte. Es unterstützt derzeit Treiber für den Zugriff Mysql, ODBC, PostgreSQL und Sqlite Datenbanken. Weitere sind für die Zukunft geplant. Der Zugriff auf Datenbanken wird auch durch datenbankspezifische Erweiterungen unterstützt, von denen viele verfügbar sind.[42]
Siehe auch
- Eierdrop
- Erwarten von
- Tclx
- Tkdesk
- Vergleich der integrierten TCL -Entwicklungsumgebungen
- Vergleich der Programmiersprachen
- Liste der Programmiersprachen
- Umgebungsmodule
Verweise
- ^ a b "TCL/TK -Kernentwicklung". TCL -Entwickler Xchange. Abgerufen 2016-11-01.
- ^ "TCL / TK 8.6.12 veröffentlicht". 5. November 2021. Abgerufen 16. Dezember 2021.
- ^ https://www.tcl.tk/software/tcltk/8.6.html; Abgerufen: 16. Dezember 2021.
- ^ "TCL/TK -Lizenzbedingungen". TCL -Entwickler Xchange. Abgerufen 2016-11-02.
- ^ "TCL Dev Kit - Compiler". Aktivitätsdokumente. Abgerufen 2016-11-02.
- ^ Lerdorf, Rasmus (2007-04-26). "PHP über Hormone - Geschichte der PHP -Präsentation von Rasmus Lerdorf auf der MySQL -Konferenz in Santa Clara, Kalifornien, verabreicht.". Das Konversationsnetzwerk. Abgerufen 2009-12-11.
- ^ "Powershell und WPF: WTF". Windows PowerShell -Blog. Microsoft. Archiviert von das Original am 25. Dezember 2008. Abgerufen 3. April, 2019.
- ^ Kenny, Kevin (4. Juli 2005). "Re: TCL -Zertifizierung". Newsgroup:comp.lang.tcl.
- ^ "Sprache". TCL -Entwickler Xchange. Abgerufen 2016-11-02.
- ^ TCL -Grundlagen, Kapitel 1 in Praktische Programmierung in TCL und TK, ISBN0-13-038560-3
- ^ a b Aus der Innenklappe von TCL und das TK -Toolkit, ISBN0-201-63337-x
- ^ "Verwendet für TCL/TK". TCL -Entwickler Xchange. Abgerufen 2016-11-02.
- ^ "Cisco iOS Scripting mit TCL -Konfigurationshandbuch". Cisco -Unterstützung. Abgerufen 2016-11-02.
- ^ John outsterhout. "Geschichte von TCL". Persönliche Seiten. Universität in Stanford. Abgerufen 2011-08-09.
- ^ "Geschichte von TCL". TCL -Entwickler Xchange. Abgerufen 2016-11-02.
- ^ "Eda". Wiki.tcl-Lang.org. Abgerufen 2022-04-27.
- ^ "John K ounterhout - Preisträger". ACM Awards. Abgerufen 2016-11-04.
- ^ Aus dem Wiki des Tclers TCL vs. TCL
- ^ "TCL/TK 8.0 Release -Ankündigung". TCL -Entwickler Xchange. Abgerufen 2014-07-01.
- ^ "TCL/TK 8.1 Release -Ankündigung". TCL -Entwickler Xchange. Abgerufen 2014-07-01.
- ^ a b "Neue reguläre Ausdrucksfunktionen in TCL 8.1". TCL -Entwickler Xchange. Abgerufen 2016-11-02.
- ^ "TCL/TK 8.2 Release -Ankündigung". TCL -Entwickler Xchange. 1999-08-18. Abgerufen 2014-07-01.
- ^ "TCL/TK 8.4 Release -Ankündigung". TCL -Entwickler Xchange. 2013-06-01. Abgerufen 2014-07-01.
- ^ "Tipp Nr. 237: Schiedsrichter-Precision-Ganzzahlen für TCL". TCL -Entwickler Xchange. Abgerufen 2016-11-01.
- ^ "Tipp #194: Tipp #194: Verfahren als Werte über anwenden". TCL -Entwickler Xchange. Abgerufen 2016-11-01.
- ^ "TCL/TK 8.5 Release -Ankündigung". TCL -Entwickler Xchange. 2013-09-18. Abgerufen 2014-07-01.
- ^ a b "TCL/TK 8.6 Release -Ankündigung". TCL -Entwickler Xchange. 2013-09-20. Abgerufen 2014-07-01.
- ^ "TCL/TK -Konferenzen". TCL -Entwickler Xchange. Abgerufen 2016-11-01.
- ^ a b c "Tipp Nr. 257: Objektorientierung für TCL". TCL -Entwickler Xchange. Abgerufen 2016-11-01.
- ^ "Download TCL/TK -Quellen". TCL -Entwickler Xchange. Abgerufen 2016-11-01.
- ^ "Safe TCL". TCL -Entwickler Xchange. Abgerufen 2016-11-01.
- ^ Brown, Lawrie (18. bis 20. September 1996). "Sicherheit für mobile Code". In Bossomaier, Terry; Chubb, Lucy (Hrsg.). Proceedings, 2. Joint Conference, Auug '96 und asiatisch-pazifik www '96. Melbourne, Australien. p. 50. Abgerufen 2011-03-22.
- ^ Welch, Brent B.; Jones, Ken; Hobbs, Jeffrey (2003). Praktische Programmierung in TCL und TK. Vol. 1 (4. Aufl.). Prentice Hall PTR. p. 291. ISBN 0-13-038560-3.
- ^ "TCL Manual Page-TCL-integrierte Befehle". TCL -Entwickler Xchange. Abgerufen 2014-06-14.
- ^ "Dodekalogue". Tcler's Wiki. Abgerufen 2014-06-14. (Enthält auch eine kürzere "Octalogue" -Version der Regeln.)
- ^ "Upleevel Manual Page-integrierte Befehle". TCL -Entwickler Xchange. Abgerufen 2016-06-14.
- ^ "UPVAR Manual Page-integrierte Befehle". TCL -Entwickler Xchange. Abgerufen 2016-06-14.
- ^ "TCL C API". tcl.tk. Abgerufen 2016-11-02.
- ^ "Fliesen: Eine verbesserte Themenmotor für TK". SourceForge. Abgerufen 7. August, 2016.
- ^ "Tix -Lizenz". SourceForge. Abgerufen 7. August, 2012.
- ^ "Tcludp". Tcl'ers Wiki. Abgerufen 7. August, 2012.
- ^ "TDBC". Tcl'ers Wiki. Abgerufen 7. August, 2012.
Weitere Lektüre
- OUSTERHOUT, John K.; Jones, Ken (2009). TCL und das TK -Toolkit (2. Aufl.). Addison Wesley. ISBN 978-0-321-33633-0. Abgerufen 4. November 2012.
- Foster-Johnson, Eric (1997). Grafische Anwendungen mit TCL & TK (2. Aufl.). New York, NY: M & T Books. ISBN 1-55851-569-0. Abgerufen 4. November 2012.
- Brent B. Welch, Praktische Programmierung in TCL und TK, Prentice Hall, Upper Saddle River, NJ, USA, ISBN0-13-038560-3, 2003
- J Adrian Zimmer, TCL/TK für Programmierer, IEEE Computer Society, verteilt von John Wiley und Söhnen, ISBN0-8186-8515-8, 1998
- Mark Harrison und Michael McLennan, Effektive TCL/TK -Programmierung, Addison-Wesley, Reading, MA, USA, ISBN0-201-63474-0, 1998
- Bert Wheeler, TCL/TK 8.5 Programmierkochbuch, Packt Publishing, Birmingham, England, Großbritannien, ISBN1849512981, 2011
- Wojciech Kocjan, Piotr Beltowski TCL 8.5 -Netzwerkprogrammierung, Packt Publishing, ISBN1849510962, 2010
- Clif flynt TCL/TK, dritte Ausgabe: Ein Entwicklerhandbuch, ISBN0123847176, 2012
- Ashok P. Nadkarni Die TCL -Programmiersprache, ISBN154867964x, 2017
Externe Links
- Offizielle Website
- TCL -Quellen, Haupt -TCL- und TK -Quellcode -Download -Website
- Tcler's Wiki
- Tkdocs
- TCL/TK Koreanisches Lehrbuch