CINXE.COM
Tcl – Wikipedia
<!DOCTYPE html> <html class="client-nojs" lang="de" dir="ltr"> <head> <meta charset="UTF-8"> <title>Tcl – Wikipedia</title> <script>(function(){var className="client-js";var cookie=document.cookie.match(/(?:^|; )dewikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":[",\t.",".\t,"],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"wgRequestId":"e407bedd-f30d-4f45-ae08-84fef5999d80","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Tcl","wgTitle":"Tcl","wgCurRevisionId":249409830,"wgRevisionId":249409830,"wgArticleId":5114,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Tcl","Skriptsprache", "Imperative Programmiersprache","Funktionale Programmiersprache","Objektorientierte Programmiersprache"],"wgPageViewLanguage":"de","wgPageContentLanguage":"de","wgPageContentModel":"wikitext","wgRelevantPageName":"Tcl","wgRelevantArticleId":5114,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":true,"wgFlaggedRevsParams":{"tags":{"accuracy":{"levels":1}}},"wgStableRevisionId":249409830,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"de","pageLanguageDir":"ltr","pageVariantFallbacks":"de"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":true,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":20000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage", "wgULSisCompactLinksEnabled":true,"wgVector2022LanguageInHeader":false,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q5288","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.gadget.citeRef":"ready","ext.gadget.defaultPlainlinks":"ready","ext.gadget.dewikiCommonHide":"ready","ext.gadget.dewikiCommonLayout":"ready","ext.gadget.dewikiCommonStyle":"ready","ext.gadget.NavFrame":"ready","ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","ext.pygments":"ready","skins.vector.styles.legacy":"ready","ext.flaggedRevs.basic":"ready","mediawiki.codex.messagebox.styles":"ready", "ext.visualEditor.desktopArticleTarget.noscript":"ready","codex-search-styles":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","ext.pygments.view","site","mediawiki.page.ready","mediawiki.toc","skins.vector.legacy.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.flaggedRevs.advanced","ext.gadget.createNewSection","ext.gadget.WikiMiniAtlas","ext.gadget.OpenStreetMap","ext.gadget.CommonsDirekt","ext.gadget.donateLink","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.compactlinks","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=de&modules=codex-search-styles%7Cext.cite.styles%7Cext.flaggedRevs.basic%7Cext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cmediawiki.codex.messagebox.styles%7Cskins.vector.styles.legacy%7Cwikibase.client.init&only=styles&skin=vector"> <script async="" src="/w/load.php?lang=de&modules=startup&only=scripts&raw=1&skin=vector"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=de&modules=ext.gadget.NavFrame%2CciteRef%2CdefaultPlainlinks%2CdewikiCommonHide%2CdewikiCommonLayout%2CdewikiCommonStyle&only=styles&skin=vector"> <link rel="stylesheet" href="/w/load.php?lang=de&modules=site.styles&only=styles&skin=vector"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Tcl – Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//de.m.wikipedia.org/wiki/Tcl"> <link rel="alternate" type="application/x-wiki" title="Seite bearbeiten" href="/w/index.php?title=Tcl&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (de)"> <link rel="EditURI" type="application/rsd+xml" href="//de.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://de.wikipedia.org/wiki/Tcl"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de"> <link rel="alternate" type="application/atom+xml" title="Atom-Feed für „Wikipedia“" href="/w/index.php?title=Spezial:Letzte_%C3%84nderungen&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin-vector-legacy mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Tcl rootpage-Tcl skin-vector action-view"><div id="mw-page-base" class="noprint"></div> <div id="mw-head-base" class="noprint"></div> <div id="content" class="mw-body" role="main"> <a id="top"></a> <div id="siteNotice"><!-- CentralNotice --></div> <div class="mw-indicators"> </div> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Tcl</span></h1> <div id="bodyContent" class="vector-body"> <div id="siteSub" class="noprint">aus Wikipedia, der freien Enzyklopädie</div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="contentSub2"></div> <div id="jump-to-nav"></div> <a class="mw-jump-link" href="#mw-head">Zur Navigation springen</a> <a class="mw-jump-link" href="#searchInput">Zur Suche springen</a> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><div class="hintergrundfarbe1 rahmenfarbe1 navigation-not-searchable noprint hatnote navigation-not-searchable" style="border-bottom-style: solid; border-bottom-width: 1px; font-size:95%; margin-bottom:1em; padding: 0.25em; overflow: hidden; word-break: break-word; word-wrap: break-word;" id="Vorlage_Dieser_Artikel"><div class="noviewer noresize" style="display: table-cell; padding-bottom: 0.2em; padding-left: 0.25em; padding-right: 1em; padding-top: 0.2em; vertical-align: middle;" id="bksicon" aria-hidden="true" role="presentation"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Disambig-dark.svg/25px-Disambig-dark.svg.png" decoding="async" width="25" height="19" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Disambig-dark.svg/38px-Disambig-dark.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Disambig-dark.svg/50px-Disambig-dark.svg.png 2x" data-file-width="444" data-file-height="340" /></span></span></div> <div style="display: table-cell; vertical-align: middle; width: 100%;"> <div role="navigation"> Dieser Artikel behandelt die Programmiersprache. Zu weiteren Bedeutungen siehe <a href="/wiki/TCL" class="mw-disambig" title="TCL">TCL</a>.</div> </div></div> <table class="float-right infobox toccolours toptextcells" style="font-size:90%; margin-top:0; width:21em;"> <tbody><tr> <th colspan="2" class="hintergrundfarbe6" style="font-size:larger;">Tcl </th></tr> <tr> <td colspan="2" class="center"><figure class="mw-halign-center" typeof="mw:File"><a href="/wiki/Datei:Tcl.svg" class="mw-file-description" title="Logo"><img alt="Logo" src="//upload.wikimedia.org/wikipedia/commons/thumb/4/41/Tcl.svg/100px-Tcl.svg.png" decoding="async" width="100" height="212" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/41/Tcl.svg/150px-Tcl.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/41/Tcl.svg/200px-Tcl.svg.png 2x" data-file-width="125" data-file-height="265" /></a><figcaption>Logo</figcaption></figure> <p><a href="/wiki/Skriptsprache" title="Skriptsprache">Skriptsprache</a> mit Bytecode-Interpreter </p> </td></tr> <tr> <th colspan="2" class="hintergrundfarbe5">Basisdaten </th></tr> <tr> <td><b><a href="/wiki/Programmierparadigma" title="Programmierparadigma">Paradigmen</a>:</b> </td> <td><a href="/wiki/Imperative_Programmierung" title="Imperative Programmierung">imperativ</a>, <a href="/wiki/Funktionale_Programmierung" title="Funktionale Programmierung">funktional</a>, <a href="/wiki/Objektorientierung" title="Objektorientierung">objektorientiert</a> </td></tr> <tr> <td><b>Erscheinungsjahr:</b> </td> <td>1988 </td></tr> <tr> <td><b>Designer:</b> </td> <td><span class="wikidata-content"><a href="/wiki/John_Ousterhout" title="John Ousterhout">John Ousterhout</a></span> </td></tr> <tr> <td><b>Entwickler:</b> </td> <td><a href="/wiki/John_Ousterhout" title="John Ousterhout">John Ousterhout</a> </td></tr> <tr> <td><b>Aktuelle <a href="/wiki/Version_(Software)" title="Version (Software)">Version</a></b> </td> <td class="wikidata-content" style="white-space:nowrap;">9.0.0RC0<sup id="cite_ref-_4dd562ffb8a35d59_1-0" class="reference"><a href="#cite_note-_4dd562ffb8a35d59-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> <small>(10. September 2024)</small> </td></tr> <tr> <td><b><a href="/wiki/Typisierung_(Informatik)" title="Typisierung (Informatik)">Typisierung</a>:</b> </td> <td><a href="/wiki/Schwache_Typisierung" class="mw-redirect" title="Schwache Typisierung">schwach</a>, <a href="/wiki/Dynamische_Typisierung" title="Dynamische Typisierung">dynamisch</a> </td></tr> <tr> <td><b>Beeinflusst von:</b> </td> <td><a href="/wiki/Lisp" title="Lisp">Lisp</a>, <a href="/wiki/Unix-Shell" title="Unix-Shell">Unix-Shell</a>, <a href="/wiki/C_(Programmiersprache)" title="C (Programmiersprache)">C</a> </td></tr> <tr> <td><b><a href="/wiki/Betriebssystem" title="Betriebssystem">Betriebssystem</a>:</b> </td> <td><a href="/wiki/Microsoft_Windows" title="Microsoft Windows">Windows</a>, <a href="/wiki/Linux" title="Linux">Linux</a>, <a href="/wiki/MacOS" title="MacOS">macOS</a>, <a href="/wiki/Mac_OS_Classic" class="mw-redirect" title="Mac OS Classic">Mac OS Classic</a>, <a href="/wiki/Solaris_(Betriebssystem)" title="Solaris (Betriebssystem)">Solaris</a>, weitere Unix-Varianten und Klone </td></tr> <tr> <td><b><a href="/wiki/Lizenz" title="Lizenz">Lizenz</a>:</b> </td> <td><a href="/wiki/BSD-Lizenz" title="BSD-Lizenz">BSD</a> </td></tr> <tr> <td colspan="2" class="hintergrundfarbe5" style="text-align:center;"><a rel="nofollow" class="external text" href="https://www.tcl.tk/">Tcl Developer Site</a> </td></tr></tbody></table> <p><b>Tcl</b> (Aussprache <span style="font-style:normal;font-weight:normal"><a href="/wiki/Englische_Sprache" title="Englische Sprache">englisch</a></span> <span lang="en-Latn" style="font-style:italic">tickle</span> oder auch als Abkürzung für <i>Tool command language</i>) ist eine <a href="/wiki/Open_Source" title="Open Source">Open-Source</a>-<a href="/wiki/Skriptsprache" title="Skriptsprache">Skriptsprache</a>. </p><p>Tcl wurde ursprünglich ab 1988 von <a href="/wiki/John_Ousterhout" title="John Ousterhout">John Ousterhout</a> an der <a href="/wiki/University_of_California,_Berkeley" title="University of California, Berkeley">University of California, Berkeley</a> als Makrosprache für ein experimentelles <a href="/wiki/CAD" title="CAD">CAD</a>-System entwickelt. Aus dieser Zeit stammt das Konzept, den Tcl-Interpreter als Bibliothek in z. B. ein <a href="/wiki/C_(Programmiersprache)" title="C (Programmiersprache)">C</a>-Programm einzubinden, was auch heute noch möglich ist. </p><p>Die Wahlsprüche von Tcl lauten: <i>„radically simple“</i>, also „radikal einfach“, was sich insbesondere auf die Syntax der Sprache bezieht, und „everything is a string“, „Alles ist Text“, was sich auf den Umgang mit Befehlen und Daten in Tcl bezieht. </p><p>Die verbreitete Kombination aus Tcl und dem <a href="/wiki/GUI-Toolkit" title="GUI-Toolkit">GUI-Toolkit</a> <a href="/wiki/Tk_(Toolkit)" title="Tk (Toolkit)">Tk</a> wird als <b>Tcl/Tk</b> bezeichnet. </p> <div id="toc" class="toc" role="navigation" aria-labelledby="mw-toc-heading"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none" /><div class="toctitle" lang="de" dir="ltr"><h2 id="mw-toc-heading">Inhaltsverzeichnis</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div> <ul> <li class="toclevel-1 tocsection-1"><a href="#Grundkonzepte"><span class="tocnumber">1</span> <span class="toctext">Grundkonzepte</span></a> <ul> <li class="toclevel-2 tocsection-2"><a href="#Einfache_Syntax_und_Grammatik"><span class="tocnumber">1.1</span> <span class="toctext">Einfache Syntax und Grammatik</span></a></li> <li class="toclevel-2 tocsection-3"><a href="#Datentypen"><span class="tocnumber">1.2</span> <span class="toctext">Datentypen</span></a></li> <li class="toclevel-2 tocsection-4"><a href="#Zeichenketten"><span class="tocnumber">1.3</span> <span class="toctext">Zeichenketten</span></a></li> <li class="toclevel-2 tocsection-5"><a href="#Erweiterbarkeit"><span class="tocnumber">1.4</span> <span class="toctext">Erweiterbarkeit</span></a></li> <li class="toclevel-2 tocsection-6"><a href="#Selbstmodifizierender_Code"><span class="tocnumber">1.5</span> <span class="toctext">Selbstmodifizierender Code</span></a></li> <li class="toclevel-2 tocsection-7"><a href="#Objektorientierung"><span class="tocnumber">1.6</span> <span class="toctext">Objektorientierung</span></a></li> <li class="toclevel-2 tocsection-8"><a href="#Nebenläufigkeit"><span class="tocnumber">1.7</span> <span class="toctext">Nebenläufigkeit</span></a></li> <li class="toclevel-2 tocsection-9"><a href="#Bytecode-Interpreter"><span class="tocnumber">1.8</span> <span class="toctext">Bytecode-Interpreter</span></a></li> <li class="toclevel-2 tocsection-10"><a href="#GUI-Schnittstellen"><span class="tocnumber">1.9</span> <span class="toctext">GUI-Schnittstellen</span></a></li> <li class="toclevel-2 tocsection-11"><a href="#Weitere_Eigenschaften_und_Besonderheiten"><span class="tocnumber">1.10</span> <span class="toctext">Weitere Eigenschaften und Besonderheiten</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-12"><a href="#Syntax"><span class="tocnumber">2</span> <span class="toctext">Syntax</span></a></li> <li class="toclevel-1 tocsection-13"><a href="#Einsatzbereiche"><span class="tocnumber">3</span> <span class="toctext">Einsatzbereiche</span></a></li> <li class="toclevel-1 tocsection-14"><a href="#Beispielprogramme"><span class="tocnumber">4</span> <span class="toctext">Beispielprogramme</span></a> <ul> <li class="toclevel-2 tocsection-15"><a href="#Ein_„Hello_World!“_Programm"><span class="tocnumber">4.1</span> <span class="toctext">Ein „Hello World!“ Programm</span></a></li> <li class="toclevel-2 tocsection-16"><a href="#Mittelwert_einer_Liste_von_Zahlen"><span class="tocnumber">4.2</span> <span class="toctext">Mittelwert einer Liste von Zahlen</span></a></li> <li class="toclevel-2 tocsection-17"><a href="#Grafische_Anwendungsprogrammierung_mit_Tk"><span class="tocnumber">4.3</span> <span class="toctext">Grafische Anwendungsprogrammierung mit Tk</span></a></li> <li class="toclevel-2 tocsection-18"><a href="#Datenbankanbindung_mit_Tcl"><span class="tocnumber">4.4</span> <span class="toctext">Datenbankanbindung mit Tcl</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-19"><a href="#Erweiterungen"><span class="tocnumber">5</span> <span class="toctext">Erweiterungen</span></a></li> <li class="toclevel-1 tocsection-20"><a href="#Implementierungen"><span class="tocnumber">6</span> <span class="toctext">Implementierungen</span></a></li> <li class="toclevel-1 tocsection-21"><a href="#Siehe_auch"><span class="tocnumber">7</span> <span class="toctext">Siehe auch</span></a></li> <li class="toclevel-1 tocsection-22"><a href="#Weblinks"><span class="tocnumber">8</span> <span class="toctext">Weblinks</span></a></li> <li class="toclevel-1 tocsection-23"><a href="#Einzelnachweise"><span class="tocnumber">9</span> <span class="toctext">Einzelnachweise</span></a></li> </ul> </div> <div class="mw-heading mw-heading2"><h2 id="Grundkonzepte">Grundkonzepte</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=1" title="Abschnitt bearbeiten: Grundkonzepte" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=1" title="Quellcode des Abschnitts bearbeiten: Grundkonzepte"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Einfache_Syntax_und_Grammatik">Einfache Syntax und Grammatik</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=2" title="Abschnitt bearbeiten: Einfache Syntax und Grammatik" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=2" title="Quellcode des Abschnitts bearbeiten: Einfache Syntax und Grammatik"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Die Tcl-Syntax folgt der <a href="/wiki/Polnische_Notation" title="Polnische Notation">polnischen Notation</a>. Sie verzichtet auf <a href="/wiki/Schl%C3%BCsselwort_(Programmierung)" title="Schlüsselwort (Programmierung)">reservierte Wörter</a>, ordnet jedoch einigen Zeichen eine feste Bedeutung zu: </p> <ul><li>die geschweiften Klammern zur Festlegung von Blöcken</li> <li>die eckigen Klammern zur Evaluierung von Ausdrücken</li> <li>die Anführungszeichen zur Abgrenzung von Zeichenketten</li> <li>der <a href="/wiki/Backslash" title="Backslash">Backslash</a></li> <li>das <a href="/wiki/Rautezeichen" title="Rautezeichen">Rautezeichen</a> für Kommentare</li> <li>das Semikolon zum Trennen von Kommandos</li> <li>das Zeilenende</li></ul> <p>Alle anderen Bestandteile der Sprache können umdefiniert werden. Zwischen eingebauten und von Programmen oder Tcl-Bibliotheken hinzugefügten Funktionen besteht kein Unterschied. </p> <div class="mw-heading mw-heading3"><h3 id="Datentypen">Datentypen</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=3" title="Abschnitt bearbeiten: Datentypen" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=3" title="Quellcode des Abschnitts bearbeiten: Datentypen"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Tcl ist eine (nach außen hin) typlose Sprache. Jede Variable hat eine <a href="/wiki/Zeichenkette" title="Zeichenkette">Zeichenkette</a> als Wert. Dazu kann eine interne Repräsentation z. B. einer <a href="/wiki/Integer_(Datentyp)" title="Integer (Datentyp)">Ganzzahl</a>, <a href="/wiki/Gleitkommazahl" title="Gleitkommazahl">Gleitkommazahl</a>, <a href="/wiki/Liste_(Datenstruktur)" title="Liste (Datenstruktur)">Liste (Datenstruktur)</a> oder <a href="/wiki/Assoziatives_Datenfeld" class="mw-redirect" title="Assoziatives Datenfeld">Dict</a> treten. Die Verwendung einer nicht definierten Variablen führt zu einem Fehler – im Gegensatz zur Programmierung mit dem Unix-<a href="/wiki/Kommandozeileninterpreter" title="Kommandozeileninterpreter">Kommandozeileninterpreter</a> (<a href="/wiki/Unix-Shell" title="Unix-Shell">Shell</a>) oder <a href="/wiki/Awk" title="Awk">awk</a>. Konstrukte wie <a href="/wiki/Assoziatives_Array" class="mw-redirect" title="Assoziatives Array">assoziative Arrays</a> (<a href="/wiki/Hashtabelle" title="Hashtabelle">Hashtabelle</a>), Listen und Dicts werden in Tcl oft angewendet. Dicts sind vergleichbar mit <a href="/wiki/JSON" class="mw-redirect" title="JSON">JSON</a>, jedoch außer den geschweiften Klammern ohne zusätzliche Sonderzeichen wie Anführungsstriche und Doppelpunkte. Darüber hinaus gibt es Objekte mit Klassen, Mehrfachvererbung und <a href="/wiki/Mixin" title="Mixin">Mixins</a>. Letztere sind genauso wie die <a href="/wiki/Steuerelement" title="Steuerelement">Steuerelemente</a> der grafischen Oberfläche Tk Kommandos innerhalb von Tcl. </p> <div class="mw-heading mw-heading3"><h3 id="Zeichenketten">Zeichenketten</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=4" title="Abschnitt bearbeiten: Zeichenketten" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=4" title="Quellcode des Abschnitts bearbeiten: Zeichenketten"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Tcl kennt sehr leistungsfähige Kommandos zur Bearbeitung von (auch langen) Zeichenketten, ebenso <a href="/wiki/Datei" title="Datei">Dateibearbeitung</a>, <a href="/wiki/Internetprotokollfamilie" title="Internetprotokollfamilie">TCP/IP</a>-Netzkommunikation und über <a href="/wiki/Tk_(Toolkit)" title="Tk (Toolkit)">Tk</a> grafische Programmierung und ist in all diesem völlig plattformunabhängig. Tcl hat einen Mechanismus eingebaut, um mit <a href="/wiki/Regul%C3%A4rer_Ausdruck" title="Regulärer Ausdruck">regulären Ausdrücken</a> zu arbeiten, wobei auch komplexere Ausdrücke als die von <a href="/wiki/Grep" title="Grep">grep</a> unterstützt werden, vergleichbar mit denen von <a href="/wiki/Perl_(Programmiersprache)" title="Perl (Programmiersprache)">Perl</a>. </p> <div class="mw-heading mw-heading3"><h3 id="Erweiterbarkeit">Erweiterbarkeit</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=5" title="Abschnitt bearbeiten: Erweiterbarkeit" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=5" title="Quellcode des Abschnitts bearbeiten: Erweiterbarkeit"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Zur Einbindung externer Bibliotheken besitzt Tcl ein eigenes Paketsystem, das diese auch bei Bedarf automatisch nachladen kann. Weiterhin ist es möglich, Tcl-Programme um Bibliotheken zu erweitern, die in C oder einer anderen kompilierten Sprache geschrieben sind; hierfür existiert in Form der TclStubs eine standardisierte Schnittstelle. Außerdem können mithilfe der CriTcl-Erweiterung zeitkritische Programmteile in C-Quellcode innerhalb des Tcl-Quellcodes notiert werden. Diese werden automatisch kompiliert und eingebunden. </p> <div class="mw-heading mw-heading3"><h3 id="Selbstmodifizierender_Code">Selbstmodifizierender Code</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=6" title="Abschnitt bearbeiten: Selbstmodifizierender Code" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=6" title="Quellcode des Abschnitts bearbeiten: Selbstmodifizierender Code"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Tcl-Programme können sich sehr einfach zur Laufzeit selbst modifizieren. Da es ohne weiteres möglich ist, eigene Kontrollstrukturen in reinem Tcl zu implementieren, ist es möglich, verschiedene <a href="/wiki/Programmierparadigma" title="Programmierparadigma">Programmierparadigmen</a> direkt in Tcl umzusetzen, zum Beispiel <a href="/wiki/Funktionale_Programmierung" title="Funktionale Programmierung">funktionale</a> oder <a href="/wiki/Objektorientierte_Programmierung" title="Objektorientierte Programmierung">objektorientierte Programmierung</a>. </p><p>Außerdem kann durch die Selbstmodifizierbarkeit Code aus Konfigurationsdateien oder über das Netzwerk gelesen und ausgeführt werden. Um dies in einer sicheren Form zu ermöglichen, stellt Tcl eine beliebige Zahl von <a href="/wiki/Sandbox" title="Sandbox">Sandboxen</a> in Form eigens gestarteter <a href="/wiki/Interpreter" title="Interpreter">Interpreter</a> mit beschränkter Funktionalität zur Verfügung. Diese <i>Kind-Interpreter</i> können jeweils mit eigenen Funktionen erweitert werden, die über definierte Schnittstellen mit ihrem <i>Mutter-Interpreter</i> kommunizieren. </p> <div class="mw-heading mw-heading3"><h3 id="Objektorientierung">Objektorientierung</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=7" title="Abschnitt bearbeiten: Objektorientierung" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=7" title="Quellcode des Abschnitts bearbeiten: Objektorientierung"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Tcl enthält im Kern (ab Version 8.6) die bisherige Erweiterung <b>TclOO</b> mit Einfach- und Mehrfach<a href="/wiki/Vererbung_(Programmierung)" title="Vererbung (Programmierung)">vererbung</a> sowie <a href="/wiki/Mixin" title="Mixin">Mixins</a>, sodass vollständig objektorientierte Anwendungen geschrieben werden können – aber nicht müssen. <a href="/wiki/Klasse_(Objektorientierung)" title="Klasse (Objektorientierung)">Klassen</a> enthalten <a href="/wiki/Konstruktoren_und_Destruktoren" title="Konstruktoren und Destruktoren">Konstruktoren und Destruktoren</a> sowie <a href="/wiki/Methode_(Programmierung)" title="Methode (Programmierung)">Methoden</a>. Im Gegensatz zu anderen Programmiersprachen sind Klassen und Objekte als Kommandos implementiert und müssen explizit mittels „destroy“ zerstört werden, was durch Überwachung von Variablen mittels „trace“ automatisiert werden kann, wenn die Variable ihren Gültigkeitsbereich verlässt. </p><p>Da es keine <a href="/wiki/Zeiger_(Informatik)" title="Zeiger (Informatik)">Zeiger</a> gibt, wird stattdessen mittels des Objektnamens auf andere Objekte verwiesen. </p> <div class="mw-heading mw-heading3"><h3 id="Nebenläufigkeit"><span id="Nebenl.C3.A4ufigkeit"></span>Nebenläufigkeit</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=8" title="Abschnitt bearbeiten: Nebenläufigkeit" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=8" title="Quellcode des Abschnitts bearbeiten: Nebenläufigkeit"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Tcl implementiert nach Wunsch auch <a href="/wiki/Nebenl%C3%A4ufigkeit" title="Nebenläufigkeit">Nebenläufigkeit</a>. Jeder <a href="/wiki/Thread_(Informatik)" title="Thread (Informatik)">Thread</a> besitzt einen eigenen Interpreter und damit auch eigene Variablen. Ein Thread kann einen anderen Thread beauftragen, Kommandos auszuführen. Threads stehen zueinander in Eltern-Kind-Beziehung. Die Synchronisation erfolgt über <a href="/wiki/Mutex" title="Mutex">Mutexes</a> oder über „join“. Eine alternative Implementierung von Nebenläufigkeit über <a href="/wiki/Coroutine" class="mw-redirect" title="Coroutine">Coroutinen</a> steht ab Version 8.6 ebenfalls zur Verfügung. </p> <div class="mw-heading mw-heading3"><h3 id="Bytecode-Interpreter">Bytecode-Interpreter <span id="Bytecode-Compiler"></span></h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=9" title="Abschnitt bearbeiten: Bytecode-Interpreter" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=9" title="Quellcode des Abschnitts bearbeiten: Bytecode-Interpreter"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Tcl-Routinen werden vom Interpreter jeweils beim ersten Ausführen in <a href="/wiki/Bytecode" title="Bytecode">Bytecode</a> übersetzt. Beim zweiten Ausführen einer Routine steht dann bereits der Bytecode zur Verfügung, und der Programmteil läuft schneller. Es gibt auch Erweiterungen, die den gesamten Quelltext zur Ladezeit des Programms in Bytecode übersetzen. </p> <div class="mw-heading mw-heading3"><h3 id="GUI-Schnittstellen">GUI-Schnittstellen</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=10" title="Abschnitt bearbeiten: GUI-Schnittstellen" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=10" title="Quellcode des Abschnitts bearbeiten: GUI-Schnittstellen"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Bekannt ist Tcl auch durch das Toolkit <a href="/wiki/Tk_(Toolkit)" title="Tk (Toolkit)">Tk</a>, mit dem sich plattformunabhängige <a href="/wiki/Grafische_Benutzeroberfl%C3%A4che" title="Grafische Benutzeroberfläche">grafische Benutzeroberflächen</a> leicht programmieren lassen. Der grafische Werkzeugkasten „Tk“ steht für eine Vielzahl von <a href="/wiki/Betriebssystem" title="Betriebssystem">Betriebssystemen</a> mit dem für das jeweilige System üblichen Aussehen („native look and feel“) zur Verfügung. Diese <a href="/wiki/Programmierschnittstelle" title="Programmierschnittstelle">Programmierschnittstelle</a> wird auch für viele weitere Programmiersprachen angeboten, wie z. B. <a href="/wiki/Common_Lisp" title="Common Lisp">Common Lisp</a>, <a href="/wiki/Perl_(Programmiersprache)" title="Perl (Programmiersprache)">Perl</a>, <a href="/wiki/PHP" title="PHP">PHP</a>, <a href="/wiki/Ruby_(Programmiersprache)" title="Ruby (Programmiersprache)">Ruby</a>, <a href="/wiki/Python_(Programmiersprache)" title="Python (Programmiersprache)">Python</a> oder <a href="/wiki/R_(Programmiersprache)" title="R (Programmiersprache)">R</a>. Neben der Standard-Schnittstelle zum Tk Toolkit existieren unter anderem auch Schnittstellen zu den Toolkits <a href="/wiki/Fast_Light_Toolkit" title="Fast Light Toolkit">FLTK</a> und <a href="/wiki/GTK%2B" class="mw-redirect" title="GTK+">GTK+</a>. </p> <div class="mw-heading mw-heading3"><h3 id="Weitere_Eigenschaften_und_Besonderheiten">Weitere Eigenschaften und Besonderheiten</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=11" title="Abschnitt bearbeiten: Weitere Eigenschaften und Besonderheiten" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=11" title="Quellcode des Abschnitts bearbeiten: Weitere Eigenschaften und Besonderheiten"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>„Everything is a string“-Grundsatz (Alles ist eine Zeichenkette): Auch wenn intern – vor allem aus Leistungsgründen – zwischen Zeichenketten, Ganzzahlen, Fließkommazahlen, Listen und Dicts (die Übersetzung „Wörterbücher“ ist unpassend) unterschieden wird, können all diese jederzeit als Zeichenkette angesprochen werden bzw. können Zeichenketten entsprechenden Inhalts als die spezialisierten Typen angesprochen werden. Allerdings kostet die dann implizit durchgeführte Konversion Rechenleistung, weshalb man darauf achten sollte, dieses „shimmering“ zu vermeiden.</li> <li><a href="/wiki/Ereignis_(Programmierung)" title="Ereignis (Programmierung)">Ereignisgesteuerte</a> Schnittstellen zu <a href="/wiki/Socket_(Software)" title="Socket (Software)">Sockets</a> und <a href="/wiki/Datei" title="Datei">Dateien</a>, so dass auch ohne Threads mit Netzwerkverbindungen und mit der GUI gearbeitet werden kann. Zeit- und Benutzer-definierte Ereignisse sind ebenfalls möglich.</li> <li><a href="/wiki/Variable_(Programmierung)#Sichtbarkeitsbereich_von_Variablen_(Scope)" title="Variable (Programmierung)">Variablen-Sichtbarkeitsbereich</a> ist auf lokale Variablen begrenzt, kann aber mit <b>uplevel</b> und <b>upvar</b> gezielt auf den Sichtbarkeitsbereich der aufrufenden Funktion erweitert werden.</li> <li>Einfache <a href="/wiki/Ausnahmebehandlung" title="Ausnahmebehandlung">Ausnahmebehandlung</a> durch Ausnahme-Rückgabewerte aller Befehle.</li> <li>Einfache Erweiterbarkeit in <a href="/wiki/C_(Programmiersprache)" title="C (Programmiersprache)">C</a>, <a href="/wiki/C%2B%2B" title="C++">C++</a>, <a href="/wiki/Java_(Programmiersprache)" title="Java (Programmiersprache)">Java</a> und Tcl.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Syntax">Syntax</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=12" title="Abschnitt bearbeiten: Syntax" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=12" title="Quellcode des Abschnitts bearbeiten: Syntax"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Tcl ist im Grundsatz sehr einfach aufgebaut und grenzt sich gegen Sprachen wie <a href="/wiki/Perl_(Programmiersprache)" title="Perl (Programmiersprache)">Perl</a>, <a href="/wiki/APL_(Programmiersprache)" title="APL (Programmiersprache)">APL</a> und <a href="/wiki/C_(Programmiersprache)" title="C (Programmiersprache)">C</a> durch absolut konsequenten Einsatz einer einheitlichen <a href="/wiki/Syntax" title="Syntax">Syntax</a> ab. Wer mit <a href="/wiki/Kommandozeileninterpreter" title="Kommandozeileninterpreter">Kommandozeileninterpretern</a> (<a href="/wiki/Kommandozeileninterpreter" title="Kommandozeileninterpreter">Shell</a>, <a href="/wiki/MS-DOS" title="MS-DOS">MS-DOS</a>) vertraut ist, kennt auch die Grundstruktur von Tcl-Kommandos. Ein Tcl-Skript besteht aus mehreren Kommandos. Ein Kommando besteht aus einem Kommandowort, gefolgt von Argumenten (<a href="/wiki/Parameter_(Informatik)" title="Parameter (Informatik)">Parameter</a>). Ein Kommando wird von einem Zeilenende oder <a href="/wiki/Semikolon" title="Semikolon">Semikolon</a> begrenzt. </p> <pre><i>Kommandowort</i> param<sub>1</sub> param<sub>2</sub> … param<sub>N</sub> </pre> <p>Anders als bei einfachen Kommandozeileninterpretern kann man in Tcl Kommandos ineinander verschachteln. Statt eines Arguments in einem Kommando kann in eckigen Klammern ein weiteres Kommando angegeben werden. Die Unterkommandos werden zuerst ausgeführt. Ihr Resultat wird dann jeweils als Argument im übergeordneten Kommando eingesetzt. Der Mechanismus entspricht dem der <a href="/wiki/Gravis_(Typografie)#Informatik" title="Gravis (Typografie)">Backquotes</a> bei der <a href="/wiki/Unix-Shell" title="Unix-Shell">Unix-Shell</a>. </p> <pre><i>Kommandowort</i> [<i>Unterkommando</i> <i>param</i> …] … </pre> <p>Auch Konstrukte wie <i>if</i> und <i>while</i> oder Zuweisungen sind Kommandos. Die Kommandos folgen der Polnischen Notation, wie bei <a href="/wiki/Lisp" title="Lisp">Lisp</a>, und werden ebenfalls als <a href="/wiki/Liste_(Datenstruktur)" title="Liste (Datenstruktur)">Liste</a> verarbeitet. </p> <div class="mw-heading mw-heading2"><h2 id="Einsatzbereiche">Einsatzbereiche</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=13" title="Abschnitt bearbeiten: Einsatzbereiche" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=13" title="Quellcode des Abschnitts bearbeiten: Einsatzbereiche"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Tcl ist in den meisten Unix-Installationen bereits vorinstalliert oder lässt sich über die <a href="/wiki/Paketverwaltung" title="Paketverwaltung">Paketverwaltung</a> nachinstallieren, auch bei <a href="/wiki/Apple" title="Apple">Apple</a> <a href="/wiki/MacOS" title="MacOS">macOS</a>; nicht jedoch bei <a href="/wiki/Microsoft_Windows" title="Microsoft Windows">Microsoft Windows</a>. Für andere Betriebssysteme einschließlich Windows bestehen auch verschiedene Installationspakete. Tcl ist plattformunabhängig und verhält sich auf allen Systemen, für welche es vorhanden ist, gleich. Üblicherweise wird ein Tcl-Programm (Skript) über die Tcl-Shell <i>tclsh</i> für Programme mit nicht-grafischer Ein-/Ausgabe oder die Tcl-Windowing-Shell <i>wish</i> für Programme mit grafischer Benutzeroberfläche gestartet. </p><p>Tcl wird auf der <a href="/wiki/Kommandozeile" title="Kommandozeile">Kommandozeile</a>, als eingebettete Sprache, als <a href="/wiki/Common_Gateway_Interface" title="Common Gateway Interface">CGI</a>-Sprache (wie sonst oft <a href="/wiki/Perl_(Programmiersprache)" title="Perl (Programmiersprache)">Perl</a>), als Modul im <a href="/wiki/Apache_HTTP_Server" title="Apache HTTP Server">Apache</a>-<a href="/wiki/Webserver" title="Webserver">Webserver</a> (wie sonst oft <a href="/wiki/PHP" title="PHP">PHP</a>) und als Sprache für Prozeduren in der Datenbank <a href="/wiki/PostgreSQL" title="PostgreSQL">PostgreSQL</a> eingesetzt. Sie ist über eine einfache Schnittstelle zu <a href="/wiki/C_(Programmiersprache)" title="C (Programmiersprache)">C</a> leicht erweiterbar. </p> <div class="mw-heading mw-heading2"><h2 id="Beispielprogramme">Beispielprogramme</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=14" title="Abschnitt bearbeiten: Beispielprogramme" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=14" title="Quellcode des Abschnitts bearbeiten: Beispielprogramme"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Ein_„Hello_World!“_Programm"><span id="Ein_.E2.80.9EHello_World.21.E2.80.9C_Programm"></span>Ein „Hello World!“ Programm</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=15" title="Abschnitt bearbeiten: Ein „Hello World!“ Programm" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=15" title="Quellcode des Abschnitts bearbeiten: Ein „Hello World!“ Programm"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-highlight mw-highlight-lang-tcl mw-content-ltr" dir="ltr"><pre><span></span><span class="nb">puts</span><span class="w"> </span><span class="s2">"Hello World!"</span> </pre></div> <p><code> Hello World! </code> </p><p>Der Befehl <i>puts</i> erwartet eine Zeichenkette als Eingabe und gibt diese direkt aus, gefolgt von einem Zeilenumbruch. Hier die gleiche Ausgabe unter Verwendung des Befehls zum Setzen eines Variablenwertes: </p> <div class="mw-highlight mw-highlight-lang-tcl mw-content-ltr" dir="ltr"><pre><span></span><span class="k">set</span><span class="w"> </span>hw<span class="w"> </span><span class="s2">"Hello World!"</span> <span class="nb">puts</span><span class="w"> </span><span class="nv">$hw</span> </pre></div> <p><code> Hello World! </code> </p> <div class="mw-heading mw-heading3"><h3 id="Mittelwert_einer_Liste_von_Zahlen">Mittelwert einer Liste von Zahlen</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=16" title="Abschnitt bearbeiten: Mittelwert einer Liste von Zahlen" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=16" title="Quellcode des Abschnitts bearbeiten: Mittelwert einer Liste von Zahlen"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-highlight mw-highlight-lang-tcl mw-content-ltr" dir="ltr"><pre><span></span><span class="k">proc</span><span class="w"> </span>mean<span class="w"> </span>data<span class="w"> </span><span class="k">{</span> <span class="w"> </span><span class="k">expr</span><span class="w"> </span><span class="k">([</span><span class="nb">join</span><span class="w"> </span><span class="nv">$data</span><span class="w"> </span><span class="o">+</span><span class="k">])</span><span class="w"> </span><span class="o">/</span><span class="w"> </span>double<span class="k">([</span><span class="nb">llength</span><span class="w"> </span><span class="nv">$data</span><span class="k">])</span> <span class="k">}</span> </pre></div> <p>Dies definiert einen neuen Befehl <i>mean</i>, der wie folgt aufgerufen werden kann </p> <div class="mw-highlight mw-highlight-lang-tcl mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">mean</span><span class="w"> </span><span class="k">{</span><span class="nv">5</span><span class="w"> </span><span class="mf">4.2</span><span class="w"> </span><span class="mf">1.2</span><span class="w"> </span><span class="mf">6.7</span><span class="w"> </span><span class="mi">9</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="mi">0</span><span class="k">}</span> </pre></div> <p><i>data</i> ist also eine Liste von Zahlen. Der Befehl <i>join</i> formt aus seinem ersten Parameter <i>$data</i> (Inhalt von <i>data</i>) mithilfe des zweiten Parameters <i>+</i> eine Zeichenkette der Form <i>5+4.2+1.2+6.7+9+1+0</i>. Diese wird nun in die Stelle eingesetzt, an der zuvor der von eckigen Klammern umschlossene <i>join</i>-Befehl stand. Der Befehl <i>llength</i> gibt die Länge einer Liste zurück. Die eckigen Klammern funktionieren hier genauso. Die Funktion double() bewirkt, dass die Zahlen nicht als Ganzzahl („integer“) mit Rest, sondern als Gleitkommazahlen mit Dezimalstellen dividiert werden (das ist bei Mittelwerten meist beabsichtigt). </p><p>Es ergibt sich für das Beispiel: </p> <div class="mw-highlight mw-highlight-lang-tcl mw-content-ltr" dir="ltr"><pre><span></span><span class="k">expr</span><span class="w"> </span><span class="k">(</span><span class="nv">5</span><span class="o">+</span><span class="mf">4.2</span><span class="o">+</span><span class="mf">1.2</span><span class="o">+</span><span class="mf">6.7</span><span class="o">+</span><span class="mi">9</span><span class="o">+</span><span class="mi">1</span><span class="o">+</span><span class="mi">0</span><span class="k">)</span><span class="o">/</span>double<span class="k">(</span><span class="nv">7</span><span class="k">)</span> </pre></div> <p>Der Befehl <i>expr</i> berechnet nun den mathematischen Ausdruck. </p><p>Das Beispiel zeigt, wie einfach in Tcl Zeichenkettenverarbeitung und Berechnungen gemischt werden können, um Algorithmen einfach zu formulieren. </p> <div class="mw-heading mw-heading3"><h3 id="Grafische_Anwendungsprogrammierung_mit_Tk">Grafische Anwendungsprogrammierung mit Tk</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=17" title="Abschnitt bearbeiten: Grafische Anwendungsprogrammierung mit Tk" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=17" title="Quellcode des Abschnitts bearbeiten: Grafische Anwendungsprogrammierung mit Tk"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Tcl macht die Entwicklung grafischer Benutzerschnittstellen sehr einfach: Das folgende Mini-Programm erstellt eine Schaltfläche („button“) im Fenster, die beim Anklicken die Anwendung beendet. </p> <div class="mw-highlight mw-highlight-lang-tcl mw-content-ltr" dir="ltr"><pre><span></span><span class="nb">package</span><span class="w"> </span>require<span class="w"> </span>Tk <span class="nv">pack</span><span class="w"> </span><span class="k">[</span><span class="nv">button</span><span class="w"> </span>.b<span class="w"> </span><span class="o">-</span>text<span class="w"> </span><span class="s2">"Goodbye World"</span><span class="w"> </span><span class="o">-</span>command<span class="w"> </span>exit<span class="k">]</span> </pre></div> <p>Zusätzlich zum klassischen „Tk-Widget-Set“ (das sind die Bedienelemente der grafischen Benutzeroberfläche), das je nach Plattform das Aussehen von <a href="/wiki/Motif" title="Motif">Motif</a>, Microsoft Windows, oder <a href="/wiki/Mac_OS_Classic" class="mw-redirect" title="Mac OS Classic">Mac OS Classic</a> simuliert, gehört ab Version 8.5 auch das Widget-Set <i>Ttk</i> (themeable Tk) fest zu Tk. Dabei kann ein Thema („theme“) aus einer Theme-Bibliothek ausgewählt oder selbst erstellt werden. </p> <div class="mw-highlight mw-highlight-lang-tcl mw-content-ltr" dir="ltr"><pre><span></span><span class="nb">package</span><span class="w"> </span>require<span class="w"> </span>Tk <span class="nv">ttk</span><span class="o">::</span>setTheme<span class="w"> </span>clam <span class="nv">pack</span><span class="w"> </span><span class="k">[</span><span class="nv">ttk</span><span class="o">::</span>button<span class="w"> </span>.b<span class="w"> </span><span class="o">-</span>text<span class="w"> </span><span class="s2">"Goodbye World"</span><span class="w"> </span><span class="o">-</span>command<span class="w"> </span>exit<span class="k">]</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Datenbankanbindung_mit_Tcl">Datenbankanbindung mit Tcl</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=18" title="Abschnitt bearbeiten: Datenbankanbindung mit Tcl" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=18" title="Quellcode des Abschnitts bearbeiten: Datenbankanbindung mit Tcl"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Datenbankoperationen sind mit Tcl ebenfalls sehr einfach, wie das folgende Beispiel zeigt: </p> <div class="mw-highlight mw-highlight-lang-tcl mw-content-ltr" dir="ltr"><pre><span></span><span class="c"># SQLite3 einbinden</span> <span class="nb">package</span><span class="w"> </span>require<span class="w"> </span>sqlite3 <span class="c"># Datenbank eröffnen</span> <span class="nv">sqlite3</span><span class="w"> </span>meinedatenbank<span class="w"> </span>.<span class="o">/</span>meinedatenbank.sqlite <span class="c"># Variable zum Referenzieren</span> <span class="k">set</span><span class="w"> </span>var<span class="w"> </span><span class="mi">3</span> <span class="c"># Tabelle erzeugen, Fehlermeldung ignorieren</span> <span class="nv">meinedatenbank</span><span class="w"> </span>eval<span class="w"> </span><span class="k">{</span><span class="nv">CREATE</span><span class="w"> </span>TABLE<span class="w"> </span>tabelle1<span class="w"> </span><span class="k">(</span><span class="nv">id</span><span class="w"> </span>int,<span class="w"> </span>spalteA<span class="w"> </span>char<span class="k">(</span><span class="nv">20</span><span class="k">))}</span> <span class="c"># Daten in Tabelle schreiben</span> <span class="nv">meinedatenbank</span><span class="w"> </span>eval<span class="w"> </span><span class="k">{</span><span class="nv">INSERT</span><span class="w"> </span>INTO<span class="w"> </span>tabelle1<span class="w"> </span><span class="k">(</span><span class="nv">id</span>,<span class="w"> </span>spalteA<span class="k">)</span><span class="w"> </span>VALUES<span class="w"> </span><span class="k">(</span><span class="nv">1</span>,<span class="w"> </span><span class="err">'</span>foo<span class="err">'</span><span class="k">)</span>,<span class="w"> </span><span class="k">(</span><span class="nv">2</span>,<span class="w"> </span><span class="err">'</span>bar<span class="err">'</span><span class="k">)</span>,<span class="w"> </span><span class="k">(</span><span class="nv">3</span>,<span class="w"> </span><span class="err">'</span>ßülz<span class="err">'</span><span class="k">)}</span> <span class="c"># Daten abfragen</span> <span class="nv">meinedatenbank</span><span class="w"> </span>eval<span class="w"> </span><span class="k">{</span><span class="nv">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span>FROM<span class="w"> </span>tabelle1<span class="w"> </span>WHERE<span class="w"> </span>id<span class="w"> </span><span class="err">=</span><span class="w"> </span><span class="o">:</span>var<span class="k">}</span><span class="w"> </span>ergebnis<span class="w"> </span><span class="k">{</span> <span class="w"> </span><span class="nb">puts</span><span class="w"> </span><span class="s2">"id = $ergebnis(id), spalteA = $ergebnis(spalteA)"</span> <span class="k">}</span> <span class="c"># Alle Daten löschen</span> <span class="nv">meinedatenbank</span><span class="w"> </span>eval<span class="w"> </span><span class="k">{</span><span class="nv">DELETE</span><span class="w"> </span>FROM<span class="w"> </span>tabelle1<span class="k">}</span> <span class="c"># Tabelle löschen</span> <span class="nv">meinedatenbank</span><span class="w"> </span>eval<span class="w"> </span><span class="k">{</span><span class="nv">DROP</span><span class="w"> </span>TABLE<span class="w"> </span>tabelle1<span class="k">}</span> <span class="c"># Datenbank schließen</span> <span class="nv">meinedatenbank</span><span class="w"> </span>close </pre></div> <p>Dabei werden Variablenreferenzen nicht expandiert, sondern der <a href="/wiki/Datenbank-Engine" title="Datenbank-Engine">Datenbank-„Engine“</a> übergeben, so dass keine Sicherheitslücke durch <a href="/wiki/SQL-Injection" title="SQL-Injection">SQL-Injection</a> entstehen kann. </p><p>Diese direkte Anwendung der SQLite3-Schnittstelle gilt mittlerweile als veraltet, weil es die datenbankunabhängige Schnittstelle <b>TDBC</b><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> gibt, deren Name sich an ODBC und JDBC anlehnt. Im Lieferumfang von TDBC sind die Treiber für <a href="/wiki/SQLite3" class="mw-redirect" title="SQLite3">SQLite3</a>, <a href="/wiki/MySQL" title="MySQL">MySQL</a>, <a href="/wiki/ODBC" class="mw-redirect" title="ODBC">ODBC</a> (ähnlich der <a href="/wiki/Java_Database_Connectivity#Typ-1-Treiber" title="Java Database Connectivity">JDBC-ODBC-Bridge</a>) und <a href="/wiki/PostgreSQL" title="PostgreSQL">PostgreSQL</a>. </p> <div class="mw-heading mw-heading2"><h2 id="Erweiterungen">Erweiterungen</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=19" title="Abschnitt bearbeiten: Erweiterungen" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=19" title="Quellcode des Abschnitts bearbeiten: Erweiterungen"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Tcl kann als prozedurale ebenso wie als <a href="/wiki/Funktionale_Programmierung" title="Funktionale Programmierung">funktionale Programmiersprache</a> eingesetzt werden, da Namen von Funktionen auch Argumente von Funktionen sein können. Über Erweiterungen wie <b><a href="/w/index.php?title=Stooop&action=edit&redlink=1" class="new" title="Stooop (Seite nicht vorhanden)">stooop</a></b>, <b>Snit</b>, <b>Incr Tcl</b> und <b>Incr Tk</b> sowie <b>XOTcl</b> ist Tcl auch <a href="/wiki/Objektorientierung" title="Objektorientierung">objektorientiert</a> – bis hin zur <a href="/wiki/Mehrfachvererbung" title="Mehrfachvererbung">Mehrfachvererbung</a>. Ab Version 8.6 ist <a href="/w/index.php?title=TclOO&action=edit&redlink=1" class="new" title="TclOO (Seite nicht vorhanden)">TclOO</a> im Kern enthalten, <b>Incr Tcl</b> basiert nun auf <b>TclOO</b>. </p> <ul><li><i>XOTcl</i> ist eine von mehreren <a href="/wiki/Objektorientierte_Programmierung" title="Objektorientierte Programmierung">objektorientierten</a> Erweiterungen von Tcl, die in C geschrieben wurde. Es unterstützt ähnlich wie <a href="/wiki/Common_Lisp_Object_System" title="Common Lisp Object System">Common Lisp Object System</a> <a href="/wiki/Metaklasse" title="Metaklasse">Metaklassen</a>, die Eigenschaften von Klassen definieren, und ist eine vollständig dynamische objektorientierte Sprache. Dies bedeutet, dass einerseits Definitionen von <a href="/wiki/Objektorientierte_Programmierung#Klassen" title="Objektorientierte Programmierung">Klassen</a> und <a href="/wiki/Methode_(Programmierung)" title="Methode (Programmierung)">Methoden</a> dynamisch (zur Laufzeit) änderbar sind und dass andererseits auch die Beziehungen zwischen Objekten und Klassen wie auch zwischen Klassen untereinander jederzeit änderbar sind. Dies bedeutet, dass beispielsweise ein Objekt seine Klasse ändern kann (z. B. ein Objekt der Klasse „Auto“ wird zum Objekt der Klasse „Wrack“, wenn es gegen einen Baum fährt) oder die Klassenhierarchie dynamisch verändert werden kann. XOTcl bietet neben den klassischen objektorientierten Konzepten auch <a href="/wiki/Mixin" title="Mixin">Mixin</a>-Klassen, wobei hier zwischen per-object-mixins und per-class-mixins unterschieden wird. Durch Mixin-Klassen kann man orthogonales Verhalten getrennt implementieren.</li> <li><b>Incr Tcl</b> und <b>Incr Tk</b> sind Pakete objektorientierter Erweiterungen für Tcl und <a href="/wiki/Tk_(Toolkit)" title="Tk (Toolkit)">Tk</a>. Diese ermöglichen <a href="/wiki/Objektorientierte_Programmierung" title="Objektorientierte Programmierung">objektorientierte Programmierung</a> mit Tcl. Die Namen lehnen sich an den von C++ an. Die Inkrement-Prozedur incr entspricht dem ++-Operator in C.</li> <li><b>Snit</b> („Snit’s Not Incr Tcl“) ist ein Paket zur objektorientierten Programmierung mit Tcl, welches als reines Tcl-Paket nicht kompiliert zu werden braucht. Im Gegensatz zu Incr Tcl (Vererbung) benutzt es das Prinzip der <a href="/wiki/Delegation_(Softwareentwicklung)" title="Delegation (Softwareentwicklung)">Delegation</a> für die Realisierung der Objektorientierung.</li> <li><b>Tile</b>, Zusatzpaket in Tcl/Tk 8.4, und <b>Ttk</b>, Standardpaket seit Tcl/Tk 8.5, sind Bibliotheken für graphische Benutzerlemente, die ein natives Aussehen auf den unterschiedlichen Betriebssystemen ermöglichen. Damit kann auch auf Unix-Betriebssystemen Tcl/Tk-Anwendungen ein modernes Aussehen ermöglicht werden. Bei Verwendung der Standard-Widgets der <a href="/wiki/Tk_(Toolkit)" title="Tk (Toolkit)">Tk</a>-Bibliothek benutzen diese die veralteten Motif-Elemente.</li> <li><b>Tcl3D</b> ist ein Paket, das Tcl um Funktionalität für 3D-Grafikprogrammierung erweitert. Damit lassen sich z. B. Anzeigeprogramme („viewer“) für <a href="/wiki/Drawing_Interchange_Format" class="mw-redirect" title="Drawing Interchange Format">.dxf</a>-Dateien erstellen.</li> <li><b>TWAPI</b> ist eine Erweiterung für Tcl, welche Zugriff auf die Windows-API bietet.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Implementierungen">Implementierungen</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=20" title="Abschnitt bearbeiten: Implementierungen" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=20" title="Quellcode des Abschnitts bearbeiten: Implementierungen"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>Das <b>Tcl Core Team</b> stellt die Referenzimplementierung bereit. Hierauf basiert auch die Distribution <b>ActiveTcl</b>.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup></li> <li><b>Jim tcl</b> ist eine minimalistische Implementierung mit dem Schwerpunkt auf <a href="/wiki/Eingebettetes_System" title="Eingebettetes System">eingebettete Systeme</a>.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup></li></ul> <div class="mw-heading mw-heading2"><h2 id="Siehe_auch">Siehe auch</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=21" title="Abschnitt bearbeiten: Siehe auch" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=21" title="Quellcode des Abschnitts bearbeiten: Siehe auch"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/Java_Command_Language" title="Java Command Language">Java Command Language</a> (Jacl)</li></ul> <div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=22" title="Abschnitt bearbeiten: Weblinks" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=22" title="Quellcode des Abschnitts bearbeiten: Weblinks"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="sisterproject" style="margin:0.1em 0 0 0;"><div class="noviewer" style="display:inline-block; line-height:10px; min-width:1.6em; text-align:center;" aria-hidden="true" role="presentation"><span class="mw-default-size" typeof="mw:File"><span title="Wikibooks"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikibooks-logo.svg/16px-Wikibooks-logo.svg.png" decoding="async" width="16" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikibooks-logo.svg/24px-Wikibooks-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikibooks-logo.svg/32px-Wikibooks-logo.svg.png 2x" data-file-width="300" data-file-height="300" /></span></span></div><b><a href="https://de.wikibooks.org/wiki/en:Programming:Tcl" class="extiw" title="b:en:Programming:Tcl">Wikibooks: Tcl-Programmierung</a></b> – Lern- und Lehrmaterialien (englisch)</div> <ul><li><a rel="nofollow" class="external text" href="http://www.tcl.tk/">Tcl/Tk-Hauptseite</a></li> <li><a rel="nofollow" class="external text" href="http://stackoverflow.com/questions/tagged/tcl">Englischsprachiges Forum</a></li> <li><a rel="nofollow" class="external text" href="http://www.faqs.org/faqs/tcl-faq/">Tcl FAQ</a></li> <li><a rel="nofollow" class="external text" href="http://wiki.tcl.tk/">Tcl’ers Wiki & Codebeispiele</a></li> <li><a rel="nofollow" class="external text" href="http://wiki.tcl.tk/2548">„Einfach Tcl“</a></li> <li><a rel="nofollow" class="external text" href="http://wiki.tcl.tk/4592">„Einfach man Tcl“</a> – kommentierte Sprachregeln</li> <li><a rel="nofollow" class="external text" href="https://curlie.org/World/Deutsch/Computer/Programmieren/Sprachen/Tcl-Tk/">Linkkatalog zum Thema Tcl-Tk</a> bei <i>curlie.org</i> (ehemals <a href="/wiki/DMOZ" title="DMOZ">DMOZ</a>)</li> <li><a rel="nofollow" class="external text" href="http://www.tcl-coach.de/">„Tcl-Coach“</a> – Deutschsprachige Lernsoftware für Tcl/Tk (freeware)</li> <li><a rel="nofollow" class="external text" href="http://incrtcl.sourceforge.net/itcl/">Projektseite zu Incr Tcl</a></li> <li><a rel="nofollow" class="external text" href="http://wiki.tcl.tk/3963">Projektseite zu Snit</a></li> <li><a rel="nofollow" class="external text" href="http://www.tcltk.info/">Deutschsprachiges Buch „Einführung in Tcl/Tk“</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Tcl&veaction=edit&section=23" title="Abschnitt bearbeiten: Einzelnachweise" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Tcl&action=edit&section=23" title="Quellcode des Abschnitts bearbeiten: Einzelnachweise"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <ol class="references"> <li id="cite_note-_4dd562ffb8a35d59-1"><span class="mw-cite-backlink"><a href="#cite_ref-_4dd562ffb8a35d59_1-0">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://sourceforge.net/p/tcl/mailman/message/58815083/"><cite style="font-style:italic"><span lang="en">[TCLCORE] Tcl/Tk 9.0.0 Release Candidates</span></cite>.</a> 10. September 2024 (abgerufen am 17. September 2024).</span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.tcl.tk/man/tcl8.6/TdbcCmd/tdbc.htm">TDBC.</a> Webseite des Anbieters</span> </li> <li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.tcl.tk/software/tcltk/">Webseite zur Referenzimplementierung</a> tcl.tk</span> </li> <li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://jim.tcl.tk/index.html/doc/www/www/">Webseite</a></span> </li> </ol> <div class="hintergrundfarbe1 rahmenfarbe1 navigation-not-searchable normdaten-typ-s" style="border-style: solid; border-width: 1px; clear: left; margin-bottom:1em; margin-top:1em; padding: 0.25em; overflow: hidden; word-break: break-word; word-wrap: break-word;" id="normdaten"> <div style="display: table-cell; vertical-align: middle; width: 100%;"> <div> Normdaten (Sachbegriff): <a href="/wiki/Gemeinsame_Normdatei" title="Gemeinsame Normdatei">GND</a>: <span class="plainlinks-print"><a rel="nofollow" class="external text" href="https://d-nb.info/gnd/4361529-6">4361529-6</a></span> <span class="noprint">(<a rel="nofollow" class="external text" href="https://lobid.org/gnd/4361529-6">lobid</a>, <a rel="nofollow" class="external text" href="https://swb.bsz-bw.de/DB=2.104/SET=1/TTL=1/CMD?retrace=0&trm_old=&ACT=SRCHA&IKT=2999&SRT=RLV&TRM=4361529-6">OGND</a><span class="metadata">, <a rel="nofollow" class="external text" href="https://prometheus.lmu.de/gnd/4361529-6">AKS</a></span>)</span> | <a href="/wiki/Library_of_Congress_Control_Number" title="Library of Congress Control Number">LCCN</a>: <span class="plainlinks-print"><a rel="nofollow" class="external text" href="https://lccn.loc.gov/sh94000154">sh94000154</a></span> <span class="metadata"></span></div> </div></div></div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Abgerufen von „<a dir="ltr" href="https://de.wikipedia.org/w/index.php?title=Tcl&oldid=249409830">https://de.wikipedia.org/w/index.php?title=Tcl&oldid=249409830</a>“</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Wikipedia:Kategorien" title="Wikipedia:Kategorien">Kategorien</a>: <ul><li><a href="/wiki/Kategorie:Tcl" title="Kategorie:Tcl">Tcl</a></li><li><a href="/wiki/Kategorie:Skriptsprache" title="Kategorie:Skriptsprache">Skriptsprache</a></li><li><a href="/wiki/Kategorie:Imperative_Programmiersprache" title="Kategorie:Imperative Programmiersprache">Imperative Programmiersprache</a></li><li><a href="/wiki/Kategorie:Funktionale_Programmiersprache" title="Kategorie:Funktionale Programmiersprache">Funktionale Programmiersprache</a></li><li><a href="/wiki/Kategorie:Objektorientierte_Programmiersprache" title="Kategorie:Objektorientierte Programmiersprache">Objektorientierte Programmiersprache</a></li></ul></div></div> </div> </div> <div id="mw-navigation"> <h2>Navigationsmenü</h2> <div id="mw-head"> <nav id="p-personal" class="mw-portlet mw-portlet-personal vector-user-menu-legacy vector-menu" aria-labelledby="p-personal-label" > <h3 id="p-personal-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Meine Werkzeuge</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anonuserpage" class="mw-list-item"><span title="Benutzerseite der IP-Adresse, von der aus du Änderungen durchführst">Nicht angemeldet</span></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Spezial:Meine_Diskussionsseite" title="Diskussion über Änderungen von dieser IP-Adresse [n]" accesskey="n"><span>Diskussionsseite</span></a></li><li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Spezial:Meine_Beitr%C3%A4ge" title="Eine Liste der Bearbeitungen, die von dieser IP-Adresse gemacht wurden [y]" accesskey="y"><span>Beiträge</span></a></li><li id="pt-createaccount" class="mw-list-item"><a href="/w/index.php?title=Spezial:Benutzerkonto_anlegen&returnto=Tcl" title="Wir ermutigen dich dazu, ein Benutzerkonto zu erstellen und dich anzumelden. Es ist jedoch nicht zwingend erforderlich."><span>Benutzerkonto erstellen</span></a></li><li id="pt-login" class="mw-list-item"><a href="/w/index.php?title=Spezial:Anmelden&returnto=Tcl" title="Anmelden ist zwar keine Pflicht, wird aber gerne gesehen. [o]" accesskey="o"><span>Anmelden</span></a></li> </ul> </div> </nav> <div id="left-navigation"> <nav id="p-namespaces" class="mw-portlet mw-portlet-namespaces vector-menu-tabs vector-menu-tabs-legacy vector-menu" aria-labelledby="p-namespaces-label" > <h3 id="p-namespaces-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Namensräume</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected mw-list-item"><a href="/wiki/Tcl" title="Seiteninhalt anzeigen [c]" accesskey="c"><span>Artikel</span></a></li><li id="ca-talk" class="mw-list-item"><a href="/wiki/Diskussion:Tcl" rel="discussion" title="Diskussion zum Seiteninhalt [t]" accesskey="t"><span>Diskussion</span></a></li> </ul> </div> </nav> <nav id="p-variants" class="mw-portlet mw-portlet-variants emptyPortlet vector-menu-dropdown vector-menu" aria-labelledby="p-variants-label" > <input type="checkbox" id="p-variants-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-variants" class="vector-menu-checkbox" aria-labelledby="p-variants-label" > <label id="p-variants-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Deutsch</span> </label> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </nav> </div> <div id="right-navigation"> <nav id="p-views" class="mw-portlet mw-portlet-views vector-menu-tabs vector-menu-tabs-legacy vector-menu" aria-labelledby="p-views-label" > <h3 id="p-views-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Ansichten</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected mw-list-item"><a href="/wiki/Tcl"><span>Lesen</span></a></li><li id="ca-ve-edit" class="mw-list-item"><a href="/w/index.php?title=Tcl&veaction=edit" title="Diese Seite mit dem VisualEditor bearbeiten [v]" accesskey="v"><span>Bearbeiten</span></a></li><li id="ca-edit" class="collapsible mw-list-item"><a href="/w/index.php?title=Tcl&action=edit" title="Den Quelltext dieser Seite bearbeiten [e]" accesskey="e"><span>Quelltext bearbeiten</span></a></li><li id="ca-history" class="mw-list-item"><a href="/w/index.php?title=Tcl&action=history" title="Frühere Versionen dieser Seite [h]" accesskey="h"><span>Versionsgeschichte</span></a></li> </ul> </div> </nav> <nav id="p-cactions" class="mw-portlet mw-portlet-cactions emptyPortlet vector-menu-dropdown vector-menu" aria-labelledby="p-cactions-label" title="Weitere Optionen" > <input type="checkbox" id="p-cactions-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-cactions" class="vector-menu-checkbox" aria-labelledby="p-cactions-label" > <label id="p-cactions-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Weitere</span> </label> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </nav> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <h3 >Suche</h3> <form action="/w/index.php" id="searchform" class="vector-search-box-form"> <div id="simpleSearch" class="vector-search-box-inner" data-search-loc="header-navigation"> <input class="vector-search-box-input" type="search" name="search" placeholder="Wikipedia durchsuchen" aria-label="Wikipedia durchsuchen" autocapitalize="sentences" title="Durchsuche die Wikipedia [f]" accesskey="f" id="searchInput" > <input type="hidden" name="title" value="Spezial:Suche"> <input id="mw-searchButton" class="searchButton mw-fallbackSearchButton" type="submit" name="fulltext" title="Suche nach Seiten, die diesen Text enthalten" value="Suchen"> <input id="searchButton" class="searchButton" type="submit" name="go" title="Gehe direkt zu der Seite mit genau diesem Namen, falls sie vorhanden ist." value="Artikel"> </div> </form> </div> </div> </div> <div id="mw-panel" class="vector-legacy-sidebar"> <div id="p-logo" role="banner"> <a class="mw-wiki-logo" href="/wiki/Wikipedia:Hauptseite" title="Hauptseite"></a> </div> <nav id="p-navigation" class="mw-portlet mw-portlet-navigation vector-menu-portal portal vector-menu" aria-labelledby="p-navigation-label" > <h3 id="p-navigation-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Navigation</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Wikipedia:Hauptseite" title="Hauptseite besuchen [z]" accesskey="z"><span>Hauptseite</span></a></li><li id="n-topics" class="mw-list-item"><a href="/wiki/Portal:Wikipedia_nach_Themen"><span>Themenportale</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Spezial:Zuf%C3%A4llige_Seite" title="Zufällige Seite aufrufen [x]" accesskey="x"><span>Zufälliger Artikel</span></a></li> </ul> </div> </nav> <nav id="p-Mitmachen" class="mw-portlet mw-portlet-Mitmachen vector-menu-portal portal vector-menu" aria-labelledby="p-Mitmachen-label" > <h3 id="p-Mitmachen-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Mitmachen</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-Artikel-verbessern" class="mw-list-item"><a href="/wiki/Wikipedia:Beteiligen"><span>Artikel verbessern</span></a></li><li id="n-Neuerartikel" class="mw-list-item"><a href="/wiki/Hilfe:Neuen_Artikel_anlegen"><span>Neuen Artikel anlegen</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Autorenportal" title="Info-Zentrum über Beteiligungsmöglichkeiten"><span>Autorenportal</span></a></li><li id="n-help" class="mw-list-item"><a href="/wiki/Hilfe:%C3%9Cbersicht" title="Übersicht über Hilfeseiten"><span>Hilfe</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Spezial:Letzte_%C3%84nderungen" title="Liste der letzten Änderungen in Wikipedia [r]" accesskey="r"><span>Letzte Änderungen</span></a></li><li id="n-contact" class="mw-list-item"><a href="/wiki/Wikipedia:Kontakt" title="Kontaktmöglichkeiten"><span>Kontakt</span></a></li><li id="n-sitesupport" class="mw-list-item"><a href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_de.wikipedia.org&uselang=de" title="Unterstütze uns"><span>Spenden</span></a></li> </ul> </div> </nav> <nav id="p-tb" class="mw-portlet mw-portlet-tb vector-menu-portal portal vector-menu" aria-labelledby="p-tb-label" > <h3 id="p-tb-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Werkzeuge</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Spezial:Linkliste/Tcl" title="Liste aller Seiten, die hierher verlinken [j]" accesskey="j"><span>Links auf diese Seite</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Spezial:%C3%84nderungen_an_verlinkten_Seiten/Tcl" rel="nofollow" title="Letzte Änderungen an Seiten, die von hier verlinkt sind [k]" accesskey="k"><span>Änderungen an verlinkten Seiten</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Spezial:Spezialseiten" title="Liste aller Spezialseiten [q]" accesskey="q"><span>Spezialseiten</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Tcl&oldid=249409830" title="Dauerhafter Link zu dieser Seitenversion"><span>Permanenter Link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Tcl&action=info" title="Weitere Informationen über diese Seite"><span>Seiteninformationen</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Spezial:Zitierhilfe&page=Tcl&id=249409830&wpFormIdentifier=titleform" title="Hinweise, wie diese Seite zitiert werden kann"><span>Artikel zitieren</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Spezial:URL-K%C3%BCrzung&url=https%3A%2F%2Fde.wikipedia.org%2Fwiki%2FTcl"><span>Kurzlink</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Spezial:QrCode&url=https%3A%2F%2Fde.wikipedia.org%2Fwiki%2FTcl"><span>QR-Code herunterladen</span></a></li> </ul> </div> </nav> <nav id="p-coll-print_export" class="mw-portlet mw-portlet-coll-print_export vector-menu-portal portal vector-menu" aria-labelledby="p-coll-print_export-label" > <h3 id="p-coll-print_export-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Drucken/exportieren</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Spezial:DownloadAsPdf&page=Tcl&action=show-download-screen"><span>Als PDF herunterladen</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Tcl&printable=yes" title="Druckansicht dieser Seite [p]" accesskey="p"><span>Druckversion</span></a></li> </ul> </div> </nav> <nav id="p-wikibase-otherprojects" class="mw-portlet mw-portlet-wikibase-otherprojects vector-menu-portal portal vector-menu" aria-labelledby="p-wikibase-otherprojects-label" > <h3 id="p-wikibase-otherprojects-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">In anderen Projekten</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="wb-otherproject-link wb-otherproject-commons mw-list-item"><a href="https://commons.wikimedia.org/wiki/Category:Tcl_programming_language_family" hreflang="en"><span>Commons</span></a></li><li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q5288" title="Link zum verbundenen Objekt im Datenrepositorium [g]" accesskey="g"><span>Wikidata-Datenobjekt</span></a></li> </ul> </div> </nav> <nav id="p-lang" class="mw-portlet mw-portlet-lang vector-menu-portal portal vector-menu" aria-labelledby="p-lang-label" > <h3 id="p-lang-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">In anderen Sprachen</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D8%AA%D9%8A_%D8%B3%D9%8A_%D8%A5%D9%84" title="تي سي إل – Arabisch" lang="ar" hreflang="ar" data-title="تي سي إل" data-language-autonym="العربية" data-language-local-name="Arabisch" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-az mw-list-item"><a href="https://az.wikipedia.org/wiki/Tcl" title="Tcl – Aserbaidschanisch" lang="az" hreflang="az" data-title="Tcl" data-language-autonym="Azərbaycanca" data-language-local-name="Aserbaidschanisch" class="interlanguage-link-target"><span>Azərbaycanca</span></a></li><li class="interlanguage-link interwiki-bg mw-list-item"><a href="https://bg.wikipedia.org/wiki/Tcl" title="Tcl – Bulgarisch" lang="bg" hreflang="bg" data-title="Tcl" data-language-autonym="Български" data-language-local-name="Bulgarisch" class="interlanguage-link-target"><span>Български</span></a></li><li class="interlanguage-link interwiki-bug mw-list-item"><a href="https://bug.wikipedia.org/wiki/Tcl" title="Tcl – Buginesisch" lang="bug" hreflang="bug" data-title="Tcl" data-language-autonym="Basa Ugi" data-language-local-name="Buginesisch" class="interlanguage-link-target"><span>Basa Ugi</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/Tcl" title="Tcl – Katalanisch" lang="ca" hreflang="ca" data-title="Tcl" data-language-autonym="Català" data-language-local-name="Katalanisch" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/Tcl" title="Tcl – Tschechisch" lang="cs" hreflang="cs" data-title="Tcl" data-language-autonym="Čeština" data-language-local-name="Tschechisch" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-el mw-list-item"><a href="https://el.wikipedia.org/wiki/Tcl" title="Tcl – Griechisch" lang="el" hreflang="el" data-title="Tcl" data-language-autonym="Ελληνικά" data-language-local-name="Griechisch" class="interlanguage-link-target"><span>Ελληνικά</span></a></li><li class="interlanguage-link interwiki-en mw-list-item"><a href="https://en.wikipedia.org/wiki/Tcl" title="Tcl – Englisch" lang="en" hreflang="en" data-title="Tcl" data-language-autonym="English" data-language-local-name="Englisch" class="interlanguage-link-target"><span>English</span></a></li><li class="interlanguage-link interwiki-eo mw-list-item"><a href="https://eo.wikipedia.org/wiki/Tcl" title="Tcl – Esperanto" lang="eo" hreflang="eo" data-title="Tcl" data-language-autonym="Esperanto" data-language-local-name="Esperanto" class="interlanguage-link-target"><span>Esperanto</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/Tcl" title="Tcl – Spanisch" lang="es" hreflang="es" data-title="Tcl" data-language-autonym="Español" data-language-local-name="Spanisch" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-et mw-list-item"><a href="https://et.wikipedia.org/wiki/Tcl" title="Tcl – Estnisch" lang="et" hreflang="et" data-title="Tcl" data-language-autonym="Eesti" data-language-local-name="Estnisch" class="interlanguage-link-target"><span>Eesti</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D8%AA%DB%8C%E2%80%8C%D8%B3%DB%8C%E2%80%8C%D8%A7%D9%84" title="تیسیال – Persisch" lang="fa" hreflang="fa" data-title="تیسیال" data-language-autonym="فارسی" data-language-local-name="Persisch" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fi mw-list-item"><a href="https://fi.wikipedia.org/wiki/Tcl_(ohjelmointikieli)" title="Tcl (ohjelmointikieli) – Finnisch" lang="fi" hreflang="fi" data-title="Tcl (ohjelmointikieli)" data-language-autonym="Suomi" data-language-local-name="Finnisch" class="interlanguage-link-target"><span>Suomi</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/Tool_Command_Language" title="Tool Command Language – Französisch" lang="fr" hreflang="fr" data-title="Tool Command Language" data-language-autonym="Français" data-language-local-name="Französisch" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-gl mw-list-item"><a href="https://gl.wikipedia.org/wiki/TCL" title="TCL – Galicisch" lang="gl" hreflang="gl" data-title="TCL" data-language-autonym="Galego" data-language-local-name="Galicisch" class="interlanguage-link-target"><span>Galego</span></a></li><li class="interlanguage-link interwiki-he mw-list-item"><a href="https://he.wikipedia.org/wiki/Tcl" title="Tcl – Hebräisch" lang="he" hreflang="he" data-title="Tcl" data-language-autonym="עברית" data-language-local-name="Hebräisch" class="interlanguage-link-target"><span>עברית</span></a></li><li class="interlanguage-link interwiki-ht mw-list-item"><a href="https://ht.wikipedia.org/wiki/Tool_Command_Language" title="Tool Command Language – Haiti-Kreolisch" lang="ht" hreflang="ht" data-title="Tool Command Language" data-language-autonym="Kreyòl ayisyen" data-language-local-name="Haiti-Kreolisch" class="interlanguage-link-target"><span>Kreyòl ayisyen</span></a></li><li class="interlanguage-link interwiki-hy mw-list-item"><a href="https://hy.wikipedia.org/wiki/TCL" title="TCL – Armenisch" lang="hy" hreflang="hy" data-title="TCL" data-language-autonym="Հայերեն" data-language-local-name="Armenisch" class="interlanguage-link-target"><span>Հայերեն</span></a></li><li class="interlanguage-link interwiki-ia mw-list-item"><a href="https://ia.wikipedia.org/wiki/Tcl" title="Tcl – Interlingua" lang="ia" hreflang="ia" data-title="Tcl" data-language-autonym="Interlingua" data-language-local-name="Interlingua" class="interlanguage-link-target"><span>Interlingua</span></a></li><li class="interlanguage-link interwiki-is mw-list-item"><a href="https://is.wikipedia.org/wiki/Tcl" title="Tcl – Isländisch" lang="is" hreflang="is" data-title="Tcl" data-language-autonym="Íslenska" data-language-local-name="Isländisch" class="interlanguage-link-target"><span>Íslenska</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/Tcl" title="Tcl – Italienisch" lang="it" hreflang="it" data-title="Tcl" data-language-autonym="Italiano" data-language-local-name="Italienisch" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/Tcl" title="Tcl – Japanisch" lang="ja" hreflang="ja" data-title="Tcl" data-language-autonym="日本語" data-language-local-name="Japanisch" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/Tcl" title="Tcl – Koreanisch" lang="ko" hreflang="ko" data-title="Tcl" data-language-autonym="한국어" data-language-local-name="Koreanisch" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-la mw-list-item"><a href="https://la.wikipedia.org/wiki/Tcl" title="Tcl – Latein" lang="la" hreflang="la" data-title="Tcl" data-language-autonym="Latina" data-language-local-name="Latein" class="interlanguage-link-target"><span>Latina</span></a></li><li class="interlanguage-link interwiki-ms mw-list-item"><a href="https://ms.wikipedia.org/wiki/Tcl" title="Tcl – Malaiisch" lang="ms" hreflang="ms" data-title="Tcl" data-language-autonym="Bahasa Melayu" data-language-local-name="Malaiisch" class="interlanguage-link-target"><span>Bahasa Melayu</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wikipedia.org/wiki/Tcl_(programmeertaal)" title="Tcl (programmeertaal) – Niederländisch" lang="nl" hreflang="nl" data-title="Tcl (programmeertaal)" data-language-autonym="Nederlands" data-language-local-name="Niederländisch" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-no mw-list-item"><a href="https://no.wikipedia.org/wiki/Tcl" title="Tcl – Norwegisch (Bokmål)" lang="nb" hreflang="nb" data-title="Tcl" data-language-autonym="Norsk bokmål" data-language-local-name="Norwegisch (Bokmål)" class="interlanguage-link-target"><span>Norsk bokmål</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/Tcl_(j%C4%99zyk_programowania)" title="Tcl (język programowania) – Polnisch" lang="pl" hreflang="pl" data-title="Tcl (język programowania)" data-language-autonym="Polski" data-language-local-name="Polnisch" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/Tcl" title="Tcl – Portugiesisch" lang="pt" hreflang="pt" data-title="Tcl" data-language-autonym="Português" data-language-local-name="Portugiesisch" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ro mw-list-item"><a href="https://ro.wikipedia.org/wiki/Tcl/TK" title="Tcl/TK – Rumänisch" lang="ro" hreflang="ro" data-title="Tcl/TK" data-language-autonym="Română" data-language-local-name="Rumänisch" class="interlanguage-link-target"><span>Română</span></a></li><li class="interlanguage-link interwiki-ru badge-Q17437798 badge-goodarticle mw-list-item" title="lesenswerter Artikel"><a href="https://ru.wikipedia.org/wiki/Tcl" title="Tcl – Russisch" lang="ru" hreflang="ru" data-title="Tcl" data-language-autonym="Русский" data-language-local-name="Russisch" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-simple mw-list-item"><a href="https://simple.wikipedia.org/wiki/Tcl" title="Tcl – einfaches Englisch" lang="en-simple" hreflang="en-simple" data-title="Tcl" data-language-autonym="Simple English" data-language-local-name="einfaches Englisch" class="interlanguage-link-target"><span>Simple English</span></a></li><li class="interlanguage-link interwiki-sr mw-list-item"><a href="https://sr.wikipedia.org/wiki/Tcl" title="Tcl – Serbisch" lang="sr" hreflang="sr" data-title="Tcl" data-language-autonym="Српски / srpski" data-language-local-name="Serbisch" class="interlanguage-link-target"><span>Српски / srpski</span></a></li><li class="interlanguage-link interwiki-sv mw-list-item"><a href="https://sv.wikipedia.org/wiki/Tcl" title="Tcl – Schwedisch" lang="sv" hreflang="sv" data-title="Tcl" data-language-autonym="Svenska" data-language-local-name="Schwedisch" class="interlanguage-link-target"><span>Svenska</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikipedia.org/wiki/Tcl" title="Tcl – Türkisch" lang="tr" hreflang="tr" data-title="Tcl" data-language-autonym="Türkçe" data-language-local-name="Türkisch" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/Tcl" title="Tcl – Ukrainisch" lang="uk" hreflang="uk" data-title="Tcl" data-language-autonym="Українська" data-language-local-name="Ukrainisch" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-vi mw-list-item"><a href="https://vi.wikipedia.org/wiki/Tcl" title="Tcl – Vietnamesisch" lang="vi" hreflang="vi" data-title="Tcl" data-language-autonym="Tiếng Việt" data-language-local-name="Vietnamesisch" class="interlanguage-link-target"><span>Tiếng Việt</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/Tcl" title="Tcl – Chinesisch" lang="zh" hreflang="zh" data-title="Tcl" data-language-autonym="中文" data-language-local-name="Chinesisch" class="interlanguage-link-target"><span>中文</span></a></li><li class="interlanguage-link interwiki-zh-yue mw-list-item"><a href="https://zh-yue.wikipedia.org/wiki/Tcl" title="Tcl – Kantonesisch" lang="yue" hreflang="yue" data-title="Tcl" data-language-autonym="粵語" data-language-local-name="Kantonesisch" class="interlanguage-link-target"><span>粵語</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q5288#sitelinks-wikipedia" title="Links auf Artikel in anderen Sprachen bearbeiten" class="wbc-editpage">Links bearbeiten</a></span></div> </div> </nav> </div> </div> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> Diese Seite wurde zuletzt am 14. Oktober 2024 um 09:05 Uhr bearbeitet.</li> <li id="footer-info-copyright"><div id="footer-info-copyright-stats" class="noprint"><a rel="nofollow" class="external text" href="https://pageviews.wmcloud.org/?pages=Tcl&project=de.wikipedia.org">Abrufstatistik</a> · <a rel="nofollow" class="external text" href="https://xtools.wmcloud.org/authorship/de.wikipedia.org/Tcl?uselang=de">Autoren</a> </div><div id="footer-info-copyright-separator"><br /></div><div id="footer-info-copyright-info"> <p>Der Text ist unter der Lizenz <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">„Creative-Commons Namensnennung – Weitergabe unter gleichen Bedingungen“</a> verfügbar; Informationen zu den Urhebern und zum Lizenzstatus eingebundener Mediendateien (etwa Bilder oder Videos) können im Regelfall durch Anklicken dieser abgerufen werden. Möglicherweise unterliegen die Inhalte jeweils zusätzlichen Bedingungen. Durch die Nutzung dieser Website erklären Sie sich mit den <span class="plainlinks"><a class="external text" href="https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use/de">Nutzungsbedingungen</a> und der <a class="external text" href="https://foundation.wikimedia.org/wiki/Policy:Privacy_policy/de">Datenschutzrichtlinie</a></span> einverstanden.<br /> </p> Wikipedia® ist eine eingetragene Marke der Wikimedia Foundation Inc.</div></li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy/de">Datenschutz</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:%C3%9Cber_Wikipedia">Über Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:Impressum">Impressum</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Verhaltenskodex</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Entwickler</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/de.wikipedia.org">Statistiken</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Stellungnahme zu Cookies</a></li> <li id="footer-places-mobileview"><a href="//de.m.wikipedia.org/w/index.php?title=Tcl&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile Ansicht</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> <script>(RLQ=window.RLQ||[]).push(function(){mw.log.warn("This page is using the deprecated ResourceLoader module \"codex-search-styles\".\n[1.43] Use a CodexModule with codexComponents to set your specific components used: https://www.mediawiki.org/wiki/Codex#Using_a_limited_subset_of_components");mw.config.set({"wgHostname":"mw-web.codfw.main-6b7f745dd4-m4ftb","wgBackendResponseTime":153,"wgPageParseReport":{"limitreport":{"cputime":"0.203","walltime":"0.298","ppvisitednodes":{"value":868,"limit":1000000},"postexpandincludesize":{"value":11685,"limit":2097152},"templateargumentsize":{"value":2563,"limit":2097152},"expansiondepth":{"value":11,"limit":100},"expensivefunctioncount":{"value":9,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":9359,"limit":5000000},"entityaccesscount":{"value":1,"limit":400},"timingprofile":["100.00% 233.812 1 -total"," 66.04% 154.418 1 Vorlage:Infobox_Programmiersprache"," 10.93% 25.551 1 Vorlage:Wikibooks"," 6.94% 16.217 1 Vorlage:Normdaten"," 6.79% 15.884 1 Vorlage:EnS"," 4.16% 9.722 2 Vorlage:Hinweisbaustein"," 2.70% 6.305 1 Vorlage:Wikidata-Registrierung"," 2.61% 6.098 1 Vorlage:Anker"," 2.29% 5.354 1 Vorlage:Dieser_Artikel"," 2.20% 5.142 1 Vorlage:Str_find"]},"scribunto":{"limitreport-timeusage":{"value":"0.112","limit":"10.000"},"limitreport-memusage":{"value":3691877,"limit":52428800}},"cachereport":{"origin":"mw-web.eqiad.main-5dc468848-fp7sw","timestamp":"20241121234600","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Tcl","url":"https:\/\/de.wikipedia.org\/wiki\/Tcl","sameAs":"http:\/\/www.wikidata.org\/entity\/Q5288","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q5288","author":{"@type":"Organization","name":"Autoren der Wikimedia-Projekte"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2001-11-10T05:45:34Z","headline":"Open-Source-Skriptsprache"}</script> </body> </html>