<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://lorwiki.zhbert.ru/index.php?action=history&amp;feed=atom&amp;title=Tcl_tk-lor-faq</id>
	<title>Tcl tk-lor-faq - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://lorwiki.zhbert.ru/index.php?action=history&amp;feed=atom&amp;title=Tcl_tk-lor-faq"/>
	<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=Tcl_tk-lor-faq&amp;action=history"/>
	<updated>2026-10-12T23:39:38Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.39.0</generator>
	<entry>
		<id>http://lorwiki.zhbert.ru/index.php?title=Tcl_tk-lor-faq&amp;diff=201&amp;oldid=prev</id>
		<title>Admin: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=Tcl_tk-lor-faq&amp;diff=201&amp;oldid=prev"/>
		<updated>2023-02-27T18:39:16Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 21:39, 27 февраля 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lorwiki.zhbert.ru/index.php?title=Tcl_tk-lor-faq&amp;diff=200&amp;oldid=prev</id>
		<title>lor&gt;Cetjs2: /* Полезные ссылки */</title>
		<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=Tcl_tk-lor-faq&amp;diff=200&amp;oldid=prev"/>
		<updated>2018-10-25T12:52:39Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Полезные ссылки&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Tcl или Tool Command Language («Командный язык инструментов» — перевод с английского) — один из трех классических скриптовых языков, который в отличие от Perl и Python очень плохо освещен, а ведь у него есть такие преимущества как простота, быстрота разработки прикладных программ, возможность писать в функциональном стиле, хорошая реализация метапрограммирования. Ну и в конце концов, это же «Lisp on Drugs!». &lt;br /&gt;
&lt;br /&gt;
= ToolKit (Tk) =&lt;br /&gt;
Tk или Toolkit («Набор инструментов», «инструментарий» — перевод с английского) — кроссплатформенная библиотека базовых элементов (виджетов) графического интерфейса, созданная Джоном Остераутом в качестве расширение для Tcl. Сейчас с помощью «мостов» (специальных библиотек) она может использоваться и другими языками. Что характерно, все языки используют Tcl как мост для Tk. На данный момент есть порты для Linux, Mac OS X, Unix, и Microsoft Windows. &lt;br /&gt;
В 8-ой версии Tcl/Tk интерфейс имеет «родной» вид для операционной системы, в которой исполняется программа. С версии 8.5 появилась возможность использовать темы дополнений (Ttk).&lt;br /&gt;
&lt;br /&gt;
== Часто задаваемые вопросы по Tcl/Tk (FAQ: Tcl/Tk) ==&lt;br /&gt;
&lt;br /&gt;
=== Что такое Tcl? ===&lt;br /&gt;
&lt;br /&gt;
Tcl — это скриптовый язык программирования высокого уровня. Считается одним из трех классических скриптовых языков. До пришествия РНР использовался вместо последнего. Очень тесно взаимосвязан с тулкитом Tk, что позволяет в короткие сроки писать достаточно функциональные программы с GUI.&lt;br /&gt;
&lt;br /&gt;
=== Зачем учить Tcl, ведь можно использовать любой скриптовый язык с привязкой к Tk? ===&lt;br /&gt;
&lt;br /&gt;
Можно. Но лучше использовать любой тулкит в «родной» для него среде (код выглядит органичнее). Да и программы на чистом Tcl/Tk работают быстрее, чем при помощи мостов для Ruby/Tk, Perl/Tk и прочее, так как тащат за собой обе среды исполнения. Так же страдает от этого переносимость программ и скриптов — для запуска файла будет требоваться установленную среду не только скриптового языка, на котором написана программа, но и Tcl/Tk (первый необходим как раз таки в качестве «моста»).&lt;br /&gt;
&lt;br /&gt;
=== Но есть же Lisp! ===&lt;br /&gt;
&lt;br /&gt;
Да, он есть. И Tcl с ним некоторые программисты сравнивают. Даже называют «Tcl — Lisp On Drugs». Языки и правда похожи — работа со списками, метапрограммирование. Но есть и серьезные различия. Например, в Tcl все есть строка, а не символ.&lt;br /&gt;
&lt;br /&gt;
=== Могу ли я писать на Tcl функционально? ===&lt;br /&gt;
&lt;br /&gt;
Можете. Tcl позволяет писать в функциональном стиле.&lt;br /&gt;
&lt;br /&gt;
=== Какие парадигмы поддерживает Tcl/Tk? ===&lt;br /&gt;
&lt;br /&gt;
Императивную, функциональную, объектно-ориентированную. Функциональная с версии 8.6 поддерживается очень хорошо, в ней наконец-то была правильно реализована хвостовая рекурсия. Последняя поддерживается давно, одно из самых известных ООП-расширений XOTcl реализовывает объектно-ориентированное программирование в стиле Smalltalk.&lt;br /&gt;
&lt;br /&gt;
=== С чего начать? ===&lt;br /&gt;
&lt;br /&gt;
Для начала можно ознакомиться со статьей в [http://ru.wikipedia.org/wiki/Tcl Вики], потом перейти к самому простому руководству на русском [http://tclstudy.narod.ru Уроки Tcl].&lt;br /&gt;
&lt;br /&gt;
=== Какие есть реализации Tcl/Tk? ===&lt;br /&gt;
&lt;br /&gt;
Как таковой Tcl/Tk один, его разработку сегодня ведет Tcl Core Team, но существуют также расширения для него: [http://www.tcl.tk/ стандартная реализация Tcl], [http://media.wu-wien.ac.at/ XOTcl: экзотикль](расширение для ООП), [http://incrtcl.sourceforge.net/ iTcl] (Первое ООП расширение, Inct Tcl, на нем написана iWidgets), [http://www.wjduquette.com/snit/snit.html SNIT] (объектный клей для Tcl, включен в стандартную библиотеку Tcl), [http://jfontain.free.fr/stooop.html STOOOP] (ООП-расширение написанное на Tcl, так же сегодня входит в стандартную библиотеку).&lt;br /&gt;
&lt;br /&gt;
=== Какие есть «сборки»? ===&lt;br /&gt;
&lt;br /&gt;
Есть официальные исходные коды, которые любой желающий может скачать с официального сайта и собрать самостоятельно. Также есть дистрибутивы от сторонних команд: [http://www.activestate.com/activetcl ActiveState Tcl] (проприетарный, есть платная версия, под все основные ОС), [http://wintcltk.sourceforge.net/ WinTcl] (более компактный, ориентирован на работу с ХОTcl, содержит Tloona и XOTcllde, как видно из названия — под Win), [http://www.equi4.com/tclkit/ TclKit] (достаточно компактный дистрибутив, ориентированный на использование iTcl, обладает собран в один пакет и имеет систему управления собственным содержимым, кросс-платформенный), [http://sourceforge.net/projects/dqsoftware/ dqkit] («TclKit на стеродидах», есть несколько вариантов сборки), [http://www.linkedin.com/in/danielsteffen/tcltk/ Tcl/Tk Aqua] (дистрибутив заточен исключительно под MacOS). Недавно появилась реализация Tcl для .Net — [http://eagle.to/ Eagle].&lt;br /&gt;
&lt;br /&gt;
=== Какую IDE взять? ===&lt;br /&gt;
&lt;br /&gt;
Vim, Emacs — прекрасные кастомизируемые редакторы, которые расширяются в полноценную IDE. Недостаток последнего — плохая поддержка синтаксиса последних версий Tcl. (g)Vim прекрасно поддерживает синтаксис последних версий без дополнительных настроек. &lt;br /&gt;
Под Windows — ActiveState Komodo. &lt;br /&gt;
Tloona — IDE для Tcl/Tk написанная на Tcl/Tk. &amp;lt;Требуется подробное описание&amp;gt;.&lt;br /&gt;
XOTcllde — IDE как ClassBrowser для Smalltalk. Ориентированна на работу с XOTcl.&lt;br /&gt;
Visual Tcl/Tk (vtcl) — мощная среда разработки на подобии Delphi или QtCreator с возможностью редактирования кода.&lt;br /&gt;
&lt;br /&gt;
=== Какую литературу можно почитать? ===&lt;br /&gt;
&lt;br /&gt;
По Tcl/Tk достаточно много англоязычных туториалов. Русский нашел только один (указал вышел). Из книг могу порекомендовать «Практическое программирование на Tcl и Tk, 4-ое издание» (Б. Б. Уэлш, К. Джонс, Д. Хоббс), на английском — «Tcl and Tk Programming for the Absolute Beginner» (Kurt Wall).&lt;br /&gt;
&lt;br /&gt;
== Установка Tcl/Tk ==&lt;br /&gt;
&lt;br /&gt;
=== Calculate Linux/Gentoo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;emerge dev-lang/tcl, emerge dev-lang/tk, emerge dev-tcltk/tcllib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fedora ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yum install tcl tk&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install tcl tk&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Windows и MacOS ===&lt;br /&gt;
&lt;br /&gt;
Проще всего использовать бинарные дистрибутивы. Качаем любой и устанавливаем в два клика.&lt;br /&gt;
&lt;br /&gt;
=== Сборка Tcl/Tk из исходников ===&lt;br /&gt;
&lt;br /&gt;
Скачайте исходники (лежат отдельно для Tcl и отдельно для Tk) с официального сайта и выполните следующие команды для каждого архива:&lt;br /&gt;
&lt;br /&gt;
Распаковка исходных файлов: &lt;br /&gt;
&amp;lt;pre&amp;gt;$ tar zxf имя_файла.tar.gz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перейдите в папку командой: &lt;br /&gt;
&amp;lt;pre&amp;gt;$ cd имя_файла &amp;amp;&amp;amp; cd unix&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выполните:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./configure --prefix=/opt --enable-gcc&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(для Тк: &amp;lt;tt&amp;gt;$ ./configure —with-tcl=../../tcl8.5a5/unix —prefix=/opt —enable-gcc&amp;lt;/tt&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Затем: &lt;br /&gt;
&amp;lt;pre&amp;gt;$ make&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Потом: &lt;br /&gt;
&amp;lt;pre&amp;gt;$ make test&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И в завершениии: &lt;br /&gt;
&amp;lt;pre&amp;gt;$ make install&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: '''Внимание:''' данный способ установки является «плохим тоном», так как устанавливает Tcl/Tk в обход пакетного менеджера, что может повлечь за собой некоторый проблемы. Лучше собрать пакет и установить его штатным способом, если, конечно, это возможно.&lt;br /&gt;
&lt;br /&gt;
Для запуска интерактивной среды наберите в терминале:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ tclsh&amp;lt;/pre&amp;gt;&lt;br /&gt;
Должен появиться символ '''%'''. Давайте напишем классическую программу «Привет, слова» на Tcl. Наберите следующий код&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;puts &amp;quot;Hello, words!&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
в качестве ответа вы увидите:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Hello, words!&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Причины непопулярности Tcl/Tk ==&lt;br /&gt;
&lt;br /&gt;
Для начала огорчу тех, кто с пеной у рта кричит о том, что «Tcl не нужен» или «Tcl мертв». Для опровержения последнего — посмотрите на дату выпуска последней версии интерпретатора Tcl/Tk. Про первое — ненужный язык не станут использовать AOL, BMW, CPU за его создание не станут давать ACM Software System Award. В настоящий момент разработки на Tcl/Tk ведутся в основном в недрах компаний, которые пишут на данном языке программное обеспечение для внутреннего пользования. Поэтому говоря о непопулярности Tcl/Tk мы прежде всего говорим о его непопулярности среди разработчиков настольных пользовательских приложений. &lt;br /&gt;
&lt;br /&gt;
Следующие аргумент, который выдвигают в качестве непопулярности Tcl/Tk — это то, что стандартный вид набора виджетов не красивый, как пример — приводят jabber-клиент tkabber. По данному заявлению стоит отметить — набор стандартных виджетов имеет по умолчанию значения атрибутов, которые соответствуют бородатому Motiff, внешней вид которого действительно является немного анохроническим. Но зачем использовать значения по умолчанию? Опытный разработчик на Tcl/Tk способен сделать интерфейс по внешнему виду ничем не уступающий большинству приложений. Далее, сегодня Тк поддерживает «скины» и внешне может подстраиваться под внешний вид графического окружения операционной системы, что делает программы на Tcl/Tk неотличимымы от их аналогов чисто внешне.&lt;br /&gt;
&lt;br /&gt;
Существенным минусом для многих команд разработчиков коммерческого ПО стало то, что программы на языке до сих пор распространяются в виде исходных кодов, без предварительного перевода в байт-код, т. е. программное обеспечение написанное на Tcl/Tk является ПО с открытым исходным кодом. А большинство разработчиков коммерческого ПО избегают этого.&lt;br /&gt;
&lt;br /&gt;
Среди разработчиков свободного ПО с открытым кодом популярность Tcl стала меньше благодаря FSF и Ричарду Столлману в частности. В сентябре 1994 году RMS надолго «утопил» продуктивные идеи Tcl/Tk своей рекомендацией «Почему вы не должны использовать Tcl»  в котором концентрируется внимание на якобы невозможно сложном синтаксисе Tcl (приводя в качестве контраргумента язык с куда более тяжелым синтаксисом, но четкой семантикой — Lisp) и о «подкупающей хакеров простоте Tcl». Не разобравшись с основными идеями «расширяемости» и «расширения» Тикл, RMS наносит последний удар, утверждая, что Tcl пригоден только для маленьких приложений и выносит вердикт: «Поэтому проект GNU не собирается использовать Tcl в программном обеспечении GNU». Особенно странно это ввиду того, что Lisp и Tcl имеют общие черты и идеи, в частности — та же расширяемость. Несмотря на все старания Столлмана Tcl так и не «потонул», а «лисп» не смог занять ведущую позицию среди языков для разработки настольных приложений.&lt;br /&gt;
&lt;br /&gt;
= Полезные ссылки =&lt;br /&gt;
&lt;br /&gt;
1. [http://www.bin-co.com/tcl/tutorial/ Tcl (Tutorial for cool language) for Tcl/Tk] — неплохой туториал на английском;&lt;br /&gt;
&lt;br /&gt;
2. [http://www.opennet.ru/docs/RUS/tcltk/ Русская документация] — русская документация с сайта florin.ru (для версии 8.0)&lt;br /&gt;
&lt;br /&gt;
3. [http://web.archive.org/web/20040411190751/http://fssg.st-oskol.ru/~alex/tcl/russian-manual/ Русская документация] — русская документация для 8.4.1&lt;br /&gt;
&lt;br /&gt;
4. [http://wiki.tcl.tk/ Анклоязычная Wiki] — английская вики по Tcl/Tk&lt;br /&gt;
&lt;br /&gt;
5. [http://habrahabr.ru/blogs/crazydev/89822/ Реверси в 64 строки] — пример игры «Реверси» написанной на Tcl/Tk всего в 64 строки&lt;br /&gt;
&lt;br /&gt;
6. [http://habrahabr.ru/blogs/crazydev/89919/ Пятнашки в 10 строк] — пример игры «Пятнашки» написанные на Tcl/Tk всего в 10 строк кода&lt;br /&gt;
&lt;br /&gt;
7. [http://www.cis.rl.ac.uk/publications/cookbook/ Книга рецептов] — онлайновая книга рецептов по Tcl/Tk, к сожалению на английском &lt;br /&gt;
&lt;br /&gt;
8. [http://blog.tkdocs.com/ TkDocs] — очень хороший блог-документация по Tk. Рассматривается код на 4 языках — Tcl, Ruby, Perl и Python&lt;br /&gt;
&lt;br /&gt;
9. [http://www.tcl.tk/man/ Официальная документация] — официальная документация по Tcl/Tk (включая версию 8.6)&lt;br /&gt;
&lt;br /&gt;
10. [http://pleac.sourceforge.net/pleac_tcl/index.html PLEAC-Tcl] — решенные задачи на tcl&lt;br /&gt;
&lt;br /&gt;
11. [http://media.wu-wien.ac.at/doc/tutorial.html Туториал по ООП-Tcl] — хороший туториал по ООП в tcl через XOTcl&lt;br /&gt;
&lt;br /&gt;
12. [http://tcl-soft.com/sys_ru.html Компиляция файлов Tcl] — небольшая заметка о том, как компилировать файлы .tcl для Windows&lt;br /&gt;
&lt;br /&gt;
[[Category:Программирование]]&lt;/div&gt;</summary>
		<author><name>lor&gt;Cetjs2</name></author>
	</entry>
</feed>