Ткл
Парадигма | Мультипарадигмальность : событийно-ориентированная , функциональная , императивная , объектно-ориентированная. |
---|---|
Разработано | Джон Оустерхаут |
Разработчик | Основная команда Tcl [1] |
Впервые появился | 1988 год |
Стабильная версия | 8.6.14 [2]
/ 29 февраля 2024 г |
Дисциплина набора текста | Динамическая типизация , все представляет собой строку |
Лицензия | BSD -стиль [3] |
Расширения имен файлов | .tcl, .tbc [4] |
Веб-сайт | www www |
Основные реализации | |
ActiveTcl Андровиш | |
Диалекты | |
Джим , Орел | |
Под влиянием | |
АВК , Лисп | |
Под влиянием | |
PHP , [5] PowerShell , [6] Чай , TH1 [7] |
Tcl (произносится как « щекотать » или как инициализм [8] ) — интерпретируемый назначения общего динамический высокоуровневый язык программирования . Он был разработан с целью сделать его очень простым, но мощным. [9] Tcl приводит все в форму команды , даже такие программные конструкции, как назначение переменных и определение процедур. [10] Tcl поддерживает несколько парадигм программирования , включая объектно-ориентированный , императивный , функциональный и процедурный стили.
Он обычно используется встроенным в C , приложения [11] для быстрого прототипирования , скриптовых приложений, графических интерфейсов и тестирования. [12] Интерпретаторы Tcl доступны для многих операционных систем , что позволяет коду Tcl работать в самых разных системах. Поскольку Tcl — очень компактный язык, он используется на платформах встраиваемых систем как в полной форме, так и в нескольких других небольших версиях. [13]
Популярная комбинация Tcl с расширением Tk называется Tcl/Tk (произносится как «tickle teak» или инициализм ) и позволяет создавать графический интерфейс пользователя (GUI) непосредственно на Tcl. Tcl/Tk включен в стандартную установку Python в виде Tkinter .
История
[ редактировать ]Язык программирования Tcl был создан весной 1988 года Джоном Оустерхаутом, когда он работал в Калифорнийском университете в Беркли . [14] [15] Первоначально «рожденный из разочарования», [11] по словам автора, программисты разрабатывали свои собственные языки для расширения программного обеспечения для автоматизации электронного проектирования (EDA) и, в частности, СБИС инструмента проектирования Magic , который в то время был профессиональным фокусом Джона. [16] Позже Tcl получил признание сам по себе. Оустерхаут был награжден премией ACM Software System Award в 1997 году за Tcl/Tk. [17]
Название первоначально происходит от Tool Command , а языка но обычно пишется Tcl, не TCL . [18]
Дата | Событие |
---|---|
Январь 1990 г. | Tcl анонсирован за пределами Беркли (зима USENIX ). |
июнь 1990 г. | Ожидайте анонс (лето USENIX). |
Январь 1991 г. | Первый анонс ТК (зимний USENIX). |
июнь 1993 г. | Первая конференция Tcl/Tk (Беркли). Менеджер геометрии [table] (предшественник [grid]), [incr Tcl] , TclDP и Groupkit, анонсированные там. |
август 1997 г. | В Tcl 8.0 появился компилятор байт-кода. [19] |
апрель 1999 г. | Tcl 8.1 представляет полную Unicode поддержку [20] и расширенные регулярные выражения . [21] |
август 1999 г. | В Tcl 8.2 представлена архитектура расширения Tcl (TEA) [22] |
август 2000 г. | Сформирована основная команда Tcl, которая перевела Tcl на модель разработки, более ориентированную на сообщество. [1] |
сентябрь 2002 г. | Девятая конференция Tcl/Tk (Ванкувер). Анонс упаковочной системы Starkit. Выпущен Tcl 8.4.0. [23] |
декабрь 2007 г. | В Tcl 8.5 добавлены новые типы данных, новый репозиторий расширений, bignums , [24] лямбды . [25] [26] |
декабрь 2012 г. | В Tcl 8.6 добавлена встроенная система динамических объектов TclOO и безстековая оценка. [27] |
Конференции и семинары Tcl проводятся как в США, так и в Европе. [28]
Функции
[ редактировать ]Возможности Tcl включают в себя
- Все операции являются командами , включая языковые структуры. Они записываются в префиксной записи .
- Команды обычно принимают переменное количество аргументов ( вариативное число аргументов ).
- Все можно динамически переопределить и переопределить. Собственно, ключевых слов нет, поэтому можно добавлять или изменять даже управляющие структуры, хотя это нецелесообразно.
- Все типы данных можно манипулировать как строки , включая исходный код . Внутри переменные имеют такие типы, как целочисленные и двойные, но преобразование происходит чисто автоматически.
- Переменные не объявляются, а им присваиваются. Использование неопределенной переменной приводит к ошибке.
- на основе классов Полностью динамическая объектная система TclOO, включая расширенные функции, такие как метаклассы, фильтры и примеси . [29]
- Управляемый событиями интерфейс для сокетов и файлов . Также возможны события, основанные на времени и определяемые пользователем.
- Видимость переменных по умолчанию ограничена лексической (статической) областью , но
uplevel
иupvar
позволяя процедурам взаимодействовать с областями охватывающих функций. - Все команды, определенные самим Tcl, генерируют сообщения об ошибках при неправильном использовании.
- Расширяемость с помощью C , C++ , Java , Python и Tcl.
- Интерпретируемый язык с использованием байт-кода
- Полная поддержка Unicode (вначале 3.1, регулярно обновляется), впервые выпущена в 1999 году.
- Регулярные выражения [21]
- Кроссплатформенность : Windows API ; Unix , Linux , Macintosh и т. д.
- Тесная кросс-платформенная интеграция с оконным ( GUI ) интерфейсом Tk .
- Существует несколько механизмов распределения:
- Полная версия для разработки (для Windows, например ActiveState Tcl , см. [1] )
- Tclkits (один исполняемый файл, содержащий полную среду выполнения сценариев, размером всего около 4 мегабайт), Starkits (механизм оболочки для доставки приложения автономным, не требующим установки и легко переносимым способом) и Starpacks (объединение Starkit с Tclkit для создать Starpack — единый исполняемый файл для конкретной платформы, идеально подходящий для простого развертывания)
- Jim Interpreter , небольшая реализация Tcl.
- Свободно распространяемый исходный код под лицензией BSD . [30]
Safe-Tcl
[ редактировать ]Safe-Tcl — это подмножество Tcl, которое имеет ограниченные функции, поэтому сценарии Tcl не могут нанести вред хост-компьютеру или приложению. [31] Доступ к файловой системе ограничен, а выполнение произвольных системных команд запрещено. Он использует модель двойного интерпретатора, при которой ненадежный интерпретатор выполняет код в ненадежном сценарии. Он был разработан Натаниэлем Боренштейном и Маршаллом Роузом для включения активных сообщений в электронную почту. Safe-Tcl можно включать в электронную почту, если application/safe-tcl и multipart/enabled-mail поддерживаются . С тех пор функциональность Safe-Tcl была включена в стандартные выпуски Tcl/Tk. [32] [33]
Синтаксис и фундаментальная семантика
[ редактировать ]Синтаксис и семантика Tcl регулируются двенадцатью правилами. [34] известный как Додекалог. [35]
Сценарий Tcl состоит из серии вызовов команд. Вызов команды представляет собой список слов, разделенных пробелами и заканчивающихся новой строкой или точкой с запятой. Первое слово — это имя команды, которая может быть встроена в язык, найдена в доступной библиотеке или определена в самом скрипте. Следующие слова служат аргументами команды:
commandName argument1 argument2 ... argumentN
В следующем примере используется команда puts (сокращение от «put string») для отображения текстовой строки на консоли хоста:
puts "Hello, World!"
При этом отправляется строка «Hello, World!» на стандартное устройство вывода вместе с добавленным символом новой строки.
Переменные и результаты других команд можно заменить строками, как в этом примере, где используются команды set и expr для сохранения результата вычисления в переменной (обратите внимание, что Tcl не использует =
в качестве оператора присваивания), а затем использует puts для печати результата вместе с пояснительным текстом:
# expr evaluates text string as an expression
set sum [expr 1+2+3+4+5]
puts "The sum of the numbers 1..5 is $sum."
The #
персонаж вводит комментарий . Комментарии могут появляться везде, где интерпретатор ожидает имя команды.
# with curly braces, variable substitution is performed by expr
set x 1
set sum [expr {$x + 2 + 3 + 4 + 5}]; # $x is not substituted before passing the parameter to expr;
# expr substitutes 1 for $x while evaluating the expression
puts "The sum of the numbers 1..5 is $sum."; # sum is 15
# without curly braces, variable substitution occurs at the definition site (lexical scoping)
set x 2
set op *
set y 3
set res [expr $x$op$y]; # $x, $op, and $y are substituted, and the expression is evaluated to 6
puts "$x $op $y is $res."; # $x, $op, $y, and $res are substituted and evaluated as strings
Как видно из этих примеров, в языке есть одна основная конструкция: команда. Механизмы кавычек и правила замены определяют, как обрабатываются аргументы каждой команды.
происходит одна специальная замена Перед анализом любых команд или аргументов . Если последний символ в строке (т. е. непосредственно перед новой строкой) представляет собой обратную косую черту, то комбинация обратной косой черты и новой строки (а также любые пробелы или табуляции, следующие сразу за новой строкой) заменяются одним пробелом. Это обеспечивает механизм продолжения строки , благодаря которому длинные строки исходного кода могут переноситься на следующую строку для удобства читателей.
Продолжая обычную обработку аргументов, слово, начинающееся с символа двойной кавычки ( "
) распространяется на следующий символ двойной кавычки. Таким образом, такое слово может содержать пробелы и точки с запятой, при этом эти символы не интерпретируются как имеющие какое-либо особое значение (т. е. они рассматриваются как обычные текстовые символы). Слово, которое начинается с открывающей фигурной скобки ( {
) распространяется на следующий символ закрывающей фигурной скобки ( }
). Внутри фигурных скобок подавляются все формы замены, за исключением ранее упомянутого исключения обратной косой черты и новой строки. Слова, не заключенные ни в одну из конструкций, называются голыми словами.
В словах без кавычек и в двойных кавычках могут встречаться три типа замены:
- Подстановка команд заменяет содержимое сбалансированных квадратных скобок результатом вычисления скрипта, содержащегося внутри. Например,
[expr 1+2+3]
заменяется результатом вычисления содержащегося выражения (в данном случае 6). - При замене переменной имя переменной со знаком доллара заменяется содержимым (или значением) переменной. Например,
$foo
заменяется содержимым переменной с именем «foo». Имя переменной может быть заключено в фигурные скобки, чтобы отделить его от последующего текста в неоднозначных случаях (например,${foo}ing
). - Замена обратной косой черты заменяет обратную косую черту, за которой следует буква, другим символом. Например,
\n
заменяется новой строкой.
Замена происходит слева направо за одно сканирование каждого слова. Любой замененный текст не будет повторно сканироваться на предмет возможных дальнейших замен. Однако в одном слове может встречаться любое количество замен.
Начиная с Tcl 8.5, любое слово может иметь префикс {*}
, что приводит к разбиению слова на составляющие его подслова для построения вызова команды (аналогично ,@
последовательность функции квазицитирования Лиспа ).
Как следствие этих правил, результат любой команды может использоваться в качестве аргумента для любой другой команды. Обратите внимание, что, в отличие от командных оболочек Unix , Tcl не анализирует повторно никакую строку, если это явно не указано, что делает интерактивное использование более громоздким, а использование сценариев более предсказуемым (например, наличие пробелов в именах файлов не вызывает затруднений).
Единственный знак равенства ( =
) вообще не играет особой роли в языке. Знак двойного равенства ( ==
) — это проверка на равенство, которая используется в контекстах выражений, таких как expr
команда и в первом аргументе if
. (Обе команды являются частью стандартной библиотеки; специального места в ней они не имеют и при желании могут быть заменены.)
Большинство команд Tcl, особенно в стандартной библиотеке, являются переменными , и proc
(конструктор для скриптовых командных процедур) позволяет определять значения по умолчанию для неуказанных аргументов и универсальный аргумент, позволяющий коду обрабатывать произвольное количество аргументов.
Tcl не является статически типизированным: каждая переменная может содержать целые числа, числа с плавающей запятой, строки, списки, имена команд, словари или любые другие значения; значения переинтерпретируются (с учетом синтаксических ограничений) как другие типы по требованию. Однако значения неизменяемы , и операции, которые их изменяют, на самом деле вместо этого просто возвращают новое значение.
Основные команды
[ редактировать ]Наиболее важные команды, относящиеся к выполнению программы и операциям с данными:
set
записывает новое значение в переменную (создает переменную, если она не существует). Если используется только с одним аргументом, он возвращает значение данной переменной (в этом случае она должна существовать).proc
определяет новую команду, выполнение которой приводит к выполнению заданного сценария Tcl, записанного как набор команд.return
может использоваться для немедленного возврата управления вызывающему объекту.
Обычные команды управления выполнением:
if
выполняет заданное тело скрипта (второй аргумент), если условие (первый аргумент) удовлетворено. За ним могут следовать дополнительные аргументы, начиная сelseif
с альтернативным состоянием и телом, илиelse
с дополнительным блоком.while
повторяет выполнение данного тела скрипта, пока условие (первый аргумент) остается удовлетвореннымforeach
выполняет заданное тело, в котором управляющей переменной присваиваются элементы списка один за другим.for
ярлык для инициализации управляющей переменной, условия (как вwhile
) и дополнительный оператор «следующая итерация» (команда, выполняемая после выполнения тела)
Вышеупомянутыми командами цикла можно дополнительно управлять с помощью следующих команд:
break
прерывает выполнение тела и возвращается из команды циклаcontinue
прерывает выполнение тела, но управление по-прежнему возвращается команде цикла. Дляwhile
это означает повторный цикл, посколькуfor
иforeach
, выберите следующую итерацию.return
прерывает выполнение текущего тела независимо от глубины процедуры, пока не достигнет границы процедуры, и возвращает заданное значение вызывающей стороне.
Расширенные команды
[ редактировать ]expr
передает аргумент отдельному интерпретатору выражений и возвращает вычисленное значение. Обратите внимание, что тот же интерпретатор используется и для «условного» выражения дляif
и циклические команды.list
создает список, содержащий все аргументы, или пустую строку, если аргумент не указан.lindex
Команда может использоваться для результата для повторного извлечения исходных аргументов.array
манипулирует переменными массива .dict
манипулирует словарем (начиная с версии 8.5), который представляет собой списки с четным числом элементов, где каждые два элемента интерпретируются как пара ключ/значение.regexp
сопоставляет регулярное выражение со строкой.regsub
Выполняет замены на основе сопоставления шаблонов регулярных выражений.uplevel
— это команда , которая позволяет выполнять командный сценарий в области, отличной от текущей самой внутренней области стека.upvar
создает ссылку на переменную в другом фрейме стека.namespace
позволяет создавать, получать доступ и уничтожать отдельные контексты для команд и переменных.apply
применяет анонимную функцию (начиная с версии 8.5).coroutine
,yield
, иyieldto
создавать и создавать значения из сопрограмм (начиная с версии 8.6).try
позволяет перехватывать и обрабатывать ошибки и исключения.catch
позволяет получать исключительную прибыль.zlib
обеспечивает доступ к средствам сжатия и контрольных сумм библиотеки Zlib (начиная с версии 8.6).
Верхний уровень
[ редактировать ]uplevel
позволяет выполнять командный сценарий в области , отличной от текущей внутренней области стека. Поскольку командный сценарий сам может вызывать процедуры, использующие команду повышения уровня , в конечном итоге это преобразует стек вызовов в дерево вызовов. [36]
Первоначально он был реализован, чтобы позволить процедурам Tcl переопределять встроенные команды (например, for , if или while ) и при этом иметь возможность манипулировать локальными переменными . Например, следующий сценарий Tcl представляет собой повторную реализацию команды for (без обработки исключений ):
proc for {initCmd testExpr advanceCmd bodyScript} {
uplevel 1 $initCmd
set testCmd [list expr $testExpr]
while {[uplevel 1 $testCmd]} {
uplevel 1 $bodyScript
uplevel 1 $advanceCmd
}
}
Упвар
[ редактировать ]upvar
предписывает одной или нескольким локальным переменным в текущей процедуре ссылаться на переменные во включающем вызове процедуры или на глобальные переменные . Команда upvar упрощает реализацию вызова процедур по имени, а также упрощает создание новых управляющих конструкций в виде процедур Tcl. [37]
Команда decr, которая работает как встроенная incr
команда, за исключением того, что она вычитает значение из переменной вместо того, чтобы добавлять его:
proc decr {varName {decrement 1}} {
upvar 1 $varName var
incr var [expr {-$decrement}]
}
Объектно-ориентированный
[ редактировать ]В Tcl 8.6 в 2012 году добавлена встроенная система динамических объектов TclOO. [29] Он включает в себя такие функции, как:
- Объектная система на основе классов. Это то, чего большинство программистов ожидают от ОО.
- Позволяет настройку каждого объекта и динамическое переопределение классов.
- Мета-классы
- Фильтры
- Миксины
- Система реализации методов собственными способами, так что авторы пакетов, которым нужны существенно разные способы реализации метода, могут сделать это довольно просто.
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"
В Tcl не было объектно-ориентированного (ОО) синтаксиса до 2012 года. [29] поэтому появились различные пакеты расширений, позволяющие реализовать объектно-ориентированное программирование. Они широко распространены в существующем исходном коде Tcl. Популярные расширения включают в себя:
TclOO был добавлен не только для создания мощной объектно-ориентированной системы, но и для того, чтобы пакеты расширений могли создавать объектно-ориентированные абстракции, используя его в качестве основы. После выпуска TclOO incr Tcl был обновлен и теперь использует TclOO в качестве основы. [27]
Разработка веб-приложений
[ редактировать ]Веб-сервер Tcl — это реализация сервера протокола HTTP на чистом Tcl. Он работает как скрипт поверх стандартного интерпретатора Tcl.
Apache Rivet — это система программирования с открытым исходным кодом для HTTP-сервера Apache , которая позволяет разработчикам использовать Tcl в качестве языка сценариев для создания динамических веб-приложений. Rivet похож на PHP , ASP и JSP . Rivet был первоначально разработан Дэймоном Кортни, Дэвидом Велтоном, Массимо Манги, Харальдом Ольманном и Карлом Лехенбауэром . Rivet может использовать любой из тысяч общедоступных пакетов Tcl, которые предлагают бесчисленное количество функций, таких как взаимодействие с базами данных (Oracle, PostgreSQL, MySQL, SQLite и т. д.) или интерфейсы с популярными приложениями, такими как библиотека GD Graphics Library .
Взаимодействие с другими языками
[ редактировать ]Tcl изначально взаимодействует с C. языком [38] Это связано с тем, что изначально он был написан как основа для предоставления синтаксического интерфейса для команд, написанных на C, и всех команд на этом языке (включая вещи, которые в противном случае могли бы быть ключевыми словами , например: if
или while
) реализованы таким образом. реализации команды Каждой функции передается массив значений, описывающих (уже замененные) аргументы команды, и она может интерпретировать эти значения по своему усмотрению.
Симуляторы цифровой логики часто включают в себя интерфейс сценариев Tcl для моделирования Verilog , VHDL и SystemVerilog аппаратных языков .
Существуют инструменты (например, SWIG , Ffidl ) для автоматической генерации необходимого кода для соединения произвольных функций C и среды выполнения Tcl, а Critcl делает обратное, позволяя встраивать произвольный код C внутрь сценария Tcl и компилировать его во время выполнения в DLL .
Пакеты расширений
[ редактировать ]Язык Tcl всегда позволял использовать пакеты расширений, которые предоставляют дополнительные функции, такие как графический интерфейс, автоматизация приложений на основе терминала, доступ к базе данных и т. д. Часто используемые расширения включают в себя:
- Тк
- Самым популярным расширением Tcl является набор инструментов Tk , который предоставляет библиотеку графического пользовательского интерфейса для различных операционных систем . Каждый графический интерфейс состоит из одного или нескольких фреймов . У каждого кадра есть менеджер макетов.
- Ожидать
- Одним из других очень популярных расширений Tcl является расширение Expect . Ранняя тесная связь Expect с Tcl в значительной степени ответственна за популярность Tcl в многочисленных областях использования, таких как тестирование Unix, где Expect очень успешно использовался (и до сих пор используется) для автоматизации telnet, ssh и последовательных сеансов для выполнения множество повторяющихся задач (например, создание сценариев для приложений, которые раньше были только интерактивными). Tcl был единственным способом запуска Expect, поэтому Tcl стал очень популярен в этих областях промышленности.
- Плитка/ТТК
- Плитка/ТТК [39] представляет собой коллекцию виджетов стилей и тем, которая может заменить большинство виджетов в Tk вариантами, которые действительно являются родными для платформы, посредством вызовов системы операционной API . Таким образом рассматриваются темы Windows XP , Windows Classic, Qt (которая подключается к X11 библиотекам среды KDE ) и Aqua (Mac OS X). Тему также можно создать без этих вызовов, используя определения виджетов, дополненные растровыми изображениями . Созданные таким образом темы включают Classic Tk, Step, Alt/Revitalized, Plastik и Keramik. В Tcl 8.4 этот пакет известен как Tile, а в Tcl 8.5 он включен в основной дистрибутив Tk (как Ttk).
- Тикс
- Tix, Tk Interface eXtension, представляет собой набор компонентов пользовательского интерфейса, расширяющих возможности приложений Tcl/Tk и Python. Это пакет программного обеспечения с открытым исходным кодом, поддерживаемый волонтерами группы Tix Project Group и выпускаемый под лицензией в стиле BSD. [40]
- Itcl/IncrTcl
- Itcl — это объектная система для Tcl, которая обычно называется [incr Tcl] (это способ увеличения в Tcl, аналогичный названию C++).
- Tcllib
- Tcllib — это набор скриптовых пакетов для Tcl, которые можно использовать без каких-либо этапов компиляции.
- Тклиб
- Tklib — это набор служебных модулей для Tk, дополняющий Tcllib.
- тДОМ
- tDOM — это расширение Tcl для анализа XML, основанное на Expat. парсере
- TclTLS
- TclTLS — это расширение OpenSSL для Tcl.
- ТклУДП
- TclUDP [41] Расширение предоставляет простую библиотеку для поддержки сокетов протокола пользовательских датаграмм (UDP) в Tcl.
- Базы данных
- Tcl Database Connectivity (TDBC), часть Tcl 8.6, представляет собой общий интерфейс доступа к базе данных для сценариев Tcl. В настоящее время он поддерживает драйверы для доступа к базам данных MySQL , ODBC , PostgreSQL и SQLite . В будущем планируется еще больше. Доступ к базам данных также поддерживается через расширения для конкретных баз данных, которых имеется множество. [42]
См. также
[ редактировать ]- Яичная капля
- Ожидать
- TclX
- Ткдеск
- Сравнение интегрированных сред разработки Tcl
- Сравнение языков программирования
- Список языков программирования
- Модули среды
Ссылки
[ редактировать ]- ^ Jump up to: а б «Разработка ядра Tcl/Tk» . Разработчик Tcl Xchange . Проверено 1 ноября 2016 г.
- ^ «[TCLCORE] Tcl/Tk 8.6.14 ВЫПУЩЕНО» . 29 февраля 2024 г. Проверено 1 марта 2024 г.
- ^ «Условия лицензии Tcl/Tk» . Разработчик Tcl Xchange . Проверено 2 ноября 2016 г.
- ^ «Tcl Dev Kit – Компилятор» . Документы ActiveState . Проверено 2 ноября 2016 г.
- ^ Лердорф, Расмус (26 апреля 2007 г.). «PHP на гормонах - история презентации PHP Расмусом Лердорфом на конференции MySQL в Санта-Кларе, Калифорния» . Сеть разговоров . Проверено 11 декабря 2009 г.
- ^ «PowerShell и WPF: WTF» . Блог Windows PowerShell . Майкрософт. Архивировано из оригинала 25 декабря 2008 года . Проверено 3 апреля 2019 г.
- ^ «Скрипты TH1» . Ископаемое.
- ^ Кенни, Кевин (4 июля 2005 г.). «Re: Сертификация TCL» . Группа новостей : comp.lang.tcl .
- ^ "Язык" . Разработчик Tcl Xchange . Проверено 2 ноября 2016 г.
- ^ Основы Tcl , Глава 1 практического программирования на Tcl и Tk , ISBN 0-13-038560-3
- ^ Jump up to: а б Из внутренней части Tcl и Tk Toolkit , ISBN 0-201-63337-X
- ^ «Использование Tcl/Tk» . Разработчик Tcl Xchange . Проверено 2 ноября 2016 г.
- ^ «Руководство по настройке сценариев Cisco IOS с использованием TCL» . Поддержка Cisco . Проверено 2 ноября 2016 г.
- ^ Джон Оустерхаут. «История ТКЛ» . Персональные страницы . Стэнфордский университет . Проверено 9 августа 2011 г.
- ^ «История ТКЛ» . Разработчик Tcl Xchange . Проверено 2 ноября 2016 г.
- ^ «ЭДА» . wiki.tcl-lang.org . Проверено 27 апреля 2022 г.
- ^ «Джон К. Оустерхаут – обладатель награды» . Награды АКМ . Проверено 4 ноября 2016 г.
- ^ Из Wiki Tcler's Tcl против TCL
- ^ «Объявление о выпуске Tcl/Tk 8.0» . Разработчик Tcl Xchange . Проверено 1 июля 2014 г.
- ^ «Объявление о выпуске Tcl/Tk 8.1» . Разработчик Tcl Xchange . Проверено 1 июля 2014 г.
- ^ Jump up to: а б «Новые возможности регулярных выражений в Tcl 8.1» . Разработчик Tcl Xchange . Проверено 2 ноября 2016 г.
- ^ «Объявление о выпуске Tcl/Tk 8.2» . Разработчик Tcl Xchange . 18 августа 1999 г. Проверено 1 июля 2014 г.
- ^ «Объявление о выпуске Tcl/Tk 8.4» . Разработчик Tcl Xchange . 01.06.2013 . Проверено 1 июля 2014 г.
- ^ «СОВЕТ № 237: Целые числа произвольной точности для Tcl» . Разработчик Tcl Xchange . Проверено 1 ноября 2016 г.
- ^ «СОВЕТ № 194: СОВЕТ № 194: Процедуры как значения через apply» . Разработчик Tcl Xchange . Проверено 1 ноября 2016 г.
- ^ «Объявление о выпуске Tcl/Tk 8.5» . Разработчик Tcl Xchange . 18 сентября 2013 г. Проверено 1 июля 2014 г.
- ^ Jump up to: а б «Объявление о выпуске Tcl/Tk 8.6» . Разработчик Tcl Xchange . 20 сентября 2013 г. Проверено 1 июля 2014 г.
- ^ «Конференции Tcl/Tk» . Разработчик Tcl Xchange . Проверено 1 ноября 2016 г.
- ^ Jump up to: а б с «СОВЕТ № 257: Объектная ориентация для Tcl» . Разработчик Tcl Xchange . Проверено 1 ноября 2016 г.
- ^ «Загрузить исходники Tcl/Tk» . Разработчик Tcl Xchange . Проверено 1 ноября 2016 г.
- ^ «Безопасный Tcl» . Разработчик Tcl Xchange . Проверено 1 ноября 2016 г.
- ^ Браун, Лори (18–20 сентября 1996 г.). «Безопасность мобильного кода» . В Боссомайере, Терри; Чабб, Люси (ред.). Материалы 2-й совместной конференции AUUG '96 и Азиатско-Тихоокеанской WWW '96 . Мельбурн, Австралия. п. 50 . Проверено 22 марта 2011 г.
- ^ Уэлч, Брент Б.; Джонс, Кен; Хоббс, Джеффри (2003). Практическое программирование на Tcl и Tk . Том. 1 (4-е изд.). Прентис Холл PTR. п. 291. ИСБН 0-13-038560-3 .
- ^ «Страница руководства Tcl — Встроенные команды Tcl» . Разработчик Tcl Xchange . Проверено 14 июня 2014 г.
- ^ «Додекалог» . Вики Тклера . Проверено 14 июня 2014 г. (Также содержит сокращенную версию правил «Восьмилога».)
- ^ «Страница руководства по повышению уровня — Встроенные команды» . Разработчик Tcl Xchange . Проверено 14 июня 2016 г.
- ^ «Страница руководства upvar — Встроенные команды» . Разработчик Tcl Xchange . Проверено 14 июня 2016 г.
- ^ «Tcl C API» . tcl.tk. Проверено 2 ноября 2016 г.
- ^ «Tile: улучшенный движок тем для Tk» . СоурсФордж . Проверено 7 августа 2016 г.
- ^ «Тикс-лицензия» . СоурсФордж . Проверено 7 августа 2012 г.
- ^ «ТклУДП» . Tcl'ers Wiki . Проверено 7 августа 2012 г.
- ^ «ТДБК» . Tcl'ers Wiki . Проверено 7 августа 2012 г.
Дальнейшее чтение
[ редактировать ]- Оустерхаут, Джон К .; Джонс, Кен (2009). Tcl и набор инструментов Tk (2-е изд.). Эддисон Уэсли. ISBN 978-0-321-33633-0 . Проверено 4 ноября 2012 г.
- Фостер-Джонсон, Эрик (1997). Графические приложения с Tcl и Tk (2-е изд.). Нью-Йорк, штат Нью-Йорк: M&T Books. ISBN 1-55851-569-0 . Проверено 4 ноября 2012 г.
- Брент Б. Уэлч, «Практическое программирование на Tcl и Tk» , Прентис Холл , Аппер-Сэддл-Ривер, Нью-Джерси, США, ISBN 0-13-038560-3 , 2003 г.
- Дж. Адриан Циммер, Tcl/Tk для программистов , Компьютерное общество IEEE , распространяется John Wiley and Sons, ISBN 0-8186-8515-8 , 1998 г.
- Марк Харрисон и Майкл МакЛеннан, «Эффективное программирование Tcl/Tk» , Аддисон-Уэсли , Ридинг, Массачусетс, США, ISBN 0-201-63474-0 , 1998 г.
- Берт Уиллер, «Поваренная книга по программированию на Tcl/Tk 8.5» , Packt Publishing , Бирмингем, Англия, Великобритания, ISBN 1849512981 , 2011 г.
- Войцех Коцян, Петр Бельтовски Сетевое программирование Tcl 8.5 , Packt Publishing , ISBN 1849510962 , 2010 г.
- Клиф Флинт Tcl/Tk, третье издание: Руководство разработчика , ISBN 0123847176 , 2012 г.
- Ашок П. Надкарни Язык программирования Tcl , ISBN 154867964X , 2017 г.
Внешние ссылки
[ редактировать ]- Официальный сайт
- Tcl Sources , основной сайт загрузки исходного кода Tcl и Tk
- Вики Тклера
- ТкДокс
- Американские изобретения
- Кроссплатформенное бесплатное программное обеспечение
- Кроссплатформенное программное обеспечение
- Динамически типизированные языки программирования
- Бесплатные компиляторы и интерпретаторы
- Бесплатное программное обеспечение, написанное на C.
- Языки программирования высокого уровня
- Мультипарадигмальные языки программирования
- Объектно-ориентированные языки программирования
- Процедурные языки программирования
- Языки программирования, созданные в 1988 году.
- Языки сценариев
- Семейство языков программирования Tcl
- Текстоориентированные языки программирования
- Гомоиконические языки программирования