page_title: Tcl
section_title: Features
hierarchical_section_title: Tcl / Features
caption_attribution_description: English: incr Tcl program example in Eclipse IDE with eclipse-dltk-itcl plugin, running under Fedora 11 Leonidas with KDE 4.2.4. The program is based in program example in fr:incr Tcl. Español: Ejemplo de un programa en Tcl con la extensión incr Tcl para programación orientada a objetos. Está corriendo en el Eclipse IDE con el plugin eclipse-dltk-itcl en Fedora 11 Leonidas con KDE 4.2.4. El programa esta basado en el ejemplo del artículo fr:incr Tcl.
context_page_description: Tcl is a high-level, general-purpose, interpreted, dynamic programming language. It was designed with the goal of being very simple but powerful. Tcl casts everything into the mold of a command, even programming constructs like variable assignment and procedure definition. Tcl supports multiple programming paradigms, including object-oriented, imperative and functional programming or procedural styles.
  It is commonly used embedded into C applications, for rapid prototyping, scripted applications, GUIs, and testing. Tcl interpreters are available for many operating systems, allowing Tcl code to run on a wide variety of systems. Because Tcl is a very compact language, it is used on embedded systems platforms, both in its full form and in several other small-footprint versions.
  The popular combination of Tcl with the Tk extension is referred to as Tcl/Tk, and enables building a graphical user interface natively in Tcl. Tcl/Tk is included in the standard Python installation in the form of Tkinter.
context_section_description: Tcl's features include
  All operations are commands, including language structures. They are written in prefix notation.
  Commands  commonly accept a variable number of arguments (are variadic).
  Everything can be dynamically redefined and overridden. Actually, there are no keywords, so even control structures can be added or changed, although this is not advisable.
  All data types can be manipulated as strings, including source code. Internally, variables have types like integer and double, but converting is purely automatic.
  Variables are not declared, but assigned to. Use of a non-defined variable results in an error.
  Fully dynamic, class-based object system, TclOO, including advanced features such as meta-classes, filters, and mixins.
  Event-driven interface to sockets and files. Time-based and user-defined events are also possible.
  Variable visibility restricted to lexical (static) scope by default, but uplevel and upvar allowing procs to interact with the enclosing functions' scopes.
  All commands defined by Tcl itself generate error messages on incorrect usage.
  Extensibility, via C, C++, Java, Python, and Tcl.
  Interpreted language using bytecode
  Full Unicode (3.1 in the beginning, regularly updated) support, first released 1999.
  Regular expressions
  Cross-platform: Windows API; Unix, Linux, Macintosh etc.
  Close, cross-platform integration with windowing (GUI) interface Tk.
  Multiple distribution mechanisms exist:
  Full development version (for Windows e.g. ActiveState Tcl, see )
  Tclkits (single file executable containing a complete scripting runtime, only about 4 megabytes in size), Starkits (wrapping mechanism for delivering an application in a self-contained, installation-free, and highly portable way) and Starpacks (combine Starkit with Tclkit to produce a Starpack - a single platform specific executable file, ideal for easy deployment)
  The Jim Interpreter, a small footprint Tcl implementation
  Freely distributable source code under a BSD license.
caption: A Tcl file being edited in the Eclipse IDE
exif: {}