.TCL вариант №
TCL (произносится как «пощекотать» или как инициализм) — это высокоуровневый, универсальный, интерпретируемый, динамический язык программирования. Он был разработан с целью быть очень простым, но мощным. TCL отливает все в форму команды, даже программные конструкции, такие как присваивание переменной и определение процедуры. Язык TCL поддерживает несколько парадигм программирования, включая объектно-ориентированный, императивный и функциональный программный или процедурный стили.
Формат файла TCL
TCL обычно используется в приложениях для быстрого прототипирования, написания сценариев, графических интерфейсов и тестирования. Интерпретаторы TCL доступны для многих операционных систем, что позволяет запускать код TCL в самых разных системах. Поскольку TCL — очень компактный язык, он используется на платформах встраиваемых систем как в полной форме, так и в нескольких других версиях с небольшими размерами.
Обычное сочетание TCL с расширением Tk называется TCL/TK и позволяет создавать графический пользовательский интерфейс (GUI) непосредственно в TCL. TCL/TK входит в стандартную установку Python в виде Tkinter. TCL изначально взаимодействует с языком С. Это потому, что изначально он был написан как основа для обеспечения синтаксического внешнего интерфейса для команд, написанных на С, и все команды на этом языке (включая вещи, которые в противном случае могли бы быть ключевыми словами, такие как if или while) реализованы таким образом.
Язык TCL всегда позволял расширять раскладки, которые обеспечивают дополнительные функциональные возможности, такие как графический интерфейс, автоматизация приложений на основе терминала, доступ к базе данных и так далее. TCL — это радикально простой интерпретируемый язык программирования с исходным кодом, который предоставляет общие возможности, такие как переменные, процедуры и структуры управления, а также множество полезных функций, которых нет ни в одном другом языке.
Краткая история
Язык программирования TCL был создан весной 1988 года. По словам автора, первоначально «родившийся из разочарования», когда программисты разрабатывали свои собственные языки, предназначенные для встраивания в приложения, TCL получил признание. Оустерхаут был награжден в 1997 году за TCL/TK. Название первоначально происходит от языка команд инструментов, но обычно пишется «TCL», а не «TCL». Более простой клей облегчает работу.
Техническая спецификация
Все операции являются командами, включая языковые структуры. Они пишутся в префиксной записи. Команды обычно принимают переменное количество аргументов. Все может динамически переопределяться и перестраиваться. На самом деле, здесь нет ключевых слов, поэтому можно добавить или изменить даже управляющие структуры, хотя это и нецелесообразно. Все типы данных можно обрабатывать как строки, включая исходный код.
Внутренне переменные имеют типы, такие как целое и двойное, но преобразование полностью автоматическое. Переменные не объявляются, а присваиваются. Использование неопределенной переменной приводит к ошибке. Полностью динамическая система объектов на основе классов, TclOO, включающая расширенные функции, такие как метаклассы, фильтры и примеси. Управляемый событиями интерфейс для сокетов и файлов. Также возможны временные и определяемые пользователем события. Переменная видимость ограничена лексическим (статическим) набором по умолчанию, но уровень выше и выше позволяет процессу взаимодействовать с наборами вмещающих функций.
Все команды, определенные самим TCL, генерируют сообщения об ошибках при неправильном использовании. Расширяемость через С, С++, Java, Python и TCL. Интерпретируемый язык с использованием байт-кода. Полная версия Unicode (вначале 3.1, регулярно обновляется) была впервые выпущена в 1999 году.
Safe-Tcl — это подмножество TCL с ограниченными функциями, поэтому сценарии TCL не могут нанести вред хост-машине или приложению. Safe-Tcl может быть включен в электронную почту, когда поддерживаются application/safe-tcl и multipart/enabled-mail. С тех пор функциональность Safe-Tcl была включена в стандартные выпуски TCL/TK.
Пример формата файла TCL
puts "Hello, World!"
oo::class create fruit {
method eat {} {
puts "yummy!"
}
}
oo::class create banana {
superclass fruit
constructor {} {
my variable peeled
set peeled 0
}
method peel {} {
my variable peeled
set peeled 1
puts "skin now off"
}
method edible? {} {
my variable peeled
return $peeled
}
method eat {} {
if {![my edible?]} {
my peel
}
next
}
}
set b [banana new]
$b eat → prints "skin now off" and "yummy!"
fruit destroy
$b eat → error "unknown command"