Jump to content

Ткл

(Перенаправлено с Tcl (язык программирования) )
Ткл
Логотип Tcl
Парадигма Мультипарадигмальность : событийно-ориентированная , функциональная , императивная , объектно-ориентированная.
Разработано Джон Оустерхаут
Разработчик Основная команда Tcl [1]
Впервые появился 1988 год ; 36 лет назад ( 1988 )
Стабильная версия
8.6.14 [2]  Отредактируйте это в Викиданных / 29 февраля 2024 г .; 5 месяцев назад ( 29 февраля 2024 г. )
Дисциплина набора текста Динамическая типизация , все представляет собой строку
Лицензия BSD -стиль [3]
Расширения имен файлов .tcl, .tbc [4]
Веб-сайт www .tcl-lang .org
www .tcl .тк
Основные реализации
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, редактируемый в Eclipse IDE

Возможности 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 — это подмножество 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]

См. также

[ редактировать ]
  1. ^ Jump up to: а б «Разработка ядра Tcl/Tk» . Разработчик Tcl Xchange . Проверено 1 ноября 2016 г.
  2. ^ «[TCLCORE] Tcl/Tk 8.6.14 ВЫПУЩЕНО» . 29 февраля 2024 г. Проверено 1 марта 2024 г.
  3. ^ «Условия лицензии Tcl/Tk» . Разработчик Tcl Xchange . Проверено 2 ноября 2016 г.
  4. ^ «Tcl Dev Kit – Компилятор» . Документы ActiveState . Проверено 2 ноября 2016 г.
  5. ^ Лердорф, Расмус (26 апреля 2007 г.). «PHP на гормонах - история презентации PHP Расмусом Лердорфом на конференции MySQL в Санта-Кларе, Калифорния» . Сеть разговоров . Проверено 11 декабря 2009 г.
  6. ^ «PowerShell и WPF: WTF» . Блог Windows PowerShell . Майкрософт. Архивировано из оригинала 25 декабря 2008 года . Проверено 3 апреля 2019 г.
  7. ^ «Скрипты TH1» . Ископаемое.
  8. ^ Кенни, Кевин (4 июля 2005 г.). «Re: Сертификация TCL» . Группа новостей : comp.lang.tcl .
  9. ^ "Язык" . Разработчик Tcl Xchange . Проверено 2 ноября 2016 г.
  10. ^ Основы Tcl , Глава 1 практического программирования на Tcl и Tk , ISBN   0-13-038560-3
  11. ^ Jump up to: а б Из внутренней части Tcl и Tk Toolkit , ISBN   0-201-63337-X
  12. ^ «Использование Tcl/Tk» . Разработчик Tcl Xchange . Проверено 2 ноября 2016 г.
  13. ^ «Руководство по настройке сценариев Cisco IOS с использованием TCL» . Поддержка Cisco . Проверено 2 ноября 2016 г.
  14. ^ Джон Оустерхаут. «История ТКЛ» . Персональные страницы . Стэнфордский университет . Проверено 9 августа 2011 г.
  15. ^ «История ТКЛ» . Разработчик Tcl Xchange . Проверено 2 ноября 2016 г.
  16. ^ «ЭДА» . wiki.tcl-lang.org . Проверено 27 апреля 2022 г.
  17. ^ «Джон К. Оустерхаут – обладатель награды» . Награды АКМ . Проверено 4 ноября 2016 г.
  18. ^ Из Wiki Tcler's Tcl против TCL
  19. ^ «Объявление о выпуске Tcl/Tk 8.0» . Разработчик Tcl Xchange . Проверено 1 июля 2014 г.
  20. ^ «Объявление о выпуске Tcl/Tk 8.1» . Разработчик Tcl Xchange . Проверено 1 июля 2014 г.
  21. ^ Jump up to: а б «Новые возможности регулярных выражений в Tcl 8.1» . Разработчик Tcl Xchange . Проверено 2 ноября 2016 г.
  22. ^ «Объявление о выпуске Tcl/Tk 8.2» . Разработчик Tcl Xchange . 18 августа 1999 г. Проверено 1 июля 2014 г.
  23. ^ «Объявление о выпуске Tcl/Tk 8.4» . Разработчик Tcl Xchange . 01.06.2013 . Проверено 1 июля 2014 г.
  24. ^ «СОВЕТ № 237: Целые числа произвольной точности для Tcl» . Разработчик Tcl Xchange . Проверено 1 ноября 2016 г.
  25. ^ «СОВЕТ № 194: СОВЕТ № 194: Процедуры как значения через apply» . Разработчик Tcl Xchange . Проверено 1 ноября 2016 г.
  26. ^ «Объявление о выпуске Tcl/Tk 8.5» . Разработчик Tcl Xchange . 18 сентября 2013 г. Проверено 1 июля 2014 г.
  27. ^ Jump up to: а б «Объявление о выпуске Tcl/Tk 8.6» . Разработчик Tcl Xchange . 20 сентября 2013 г. Проверено 1 июля 2014 г.
  28. ^ «Конференции Tcl/Tk» . Разработчик Tcl Xchange . Проверено 1 ноября 2016 г.
  29. ^ Jump up to: а б с «СОВЕТ № 257: Объектная ориентация для Tcl» . Разработчик Tcl Xchange . Проверено 1 ноября 2016 г.
  30. ^ «Загрузить исходники Tcl/Tk» . Разработчик Tcl Xchange . Проверено 1 ноября 2016 г.
  31. ^ «Безопасный Tcl» . Разработчик Tcl Xchange . Проверено 1 ноября 2016 г.
  32. ^ Браун, Лори (18–20 сентября 1996 г.). «Безопасность мобильного кода» . В Боссомайере, Терри; Чабб, Люси (ред.). Материалы 2-й совместной конференции AUUG '96 и Азиатско-Тихоокеанской WWW '96 . Мельбурн, Австралия. п. 50 . Проверено 22 марта 2011 г.
  33. ^ Уэлч, Брент Б.; Джонс, Кен; Хоббс, Джеффри (2003). Практическое программирование на Tcl и Tk . Том. 1 (4-е изд.). Прентис Холл PTR. п. 291. ИСБН  0-13-038560-3 .
  34. ^ «Страница руководства Tcl — Встроенные команды Tcl» . Разработчик Tcl Xchange . Проверено 14 июня 2014 г.
  35. ^ «Додекалог» . Вики Тклера . Проверено 14 июня 2014 г. (Также содержит сокращенную версию правил «Восьмилога».)
  36. ^ «Страница руководства по повышению уровня — Встроенные команды» . Разработчик Tcl Xchange . Проверено 14 июня 2016 г.
  37. ^ «Страница руководства upvar — Встроенные команды» . Разработчик Tcl Xchange . Проверено 14 июня 2016 г.
  38. ^ «Tcl C API» . tcl.tk. ​Проверено 2 ноября 2016 г.
  39. ^ «Tile: улучшенный движок тем для Tk» . СоурсФордж . Проверено 7 августа 2016 г.
  40. ^ «Тикс-лицензия» . СоурсФордж . Проверено 7 августа 2012 г.
  41. ^ «ТклУДП» . Tcl'ers Wiki . Проверено 7 августа 2012 г.
  42. ^ «ТДБК» . Tcl'ers Wiki . Проверено 7 августа 2012 г.

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 8af0768003003c7f3577c83a9af369ff__1720588200
URL1:https://arc.ask3.ru/arc/aa/8a/ff/8af0768003003c7f3577c83a9af369ff.html
Заголовок, (Title) документа по адресу, URL1:
Tcl - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)