<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://t8.lbstr.eu/index.php?action=history&amp;feed=atom&amp;title=Tcl</id>
	<title>Tcl - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://t8.lbstr.eu/index.php?action=history&amp;feed=atom&amp;title=Tcl"/>
	<link rel="alternate" type="text/html" href="https://t8.lbstr.eu/index.php?title=Tcl&amp;action=history"/>
	<updated>2026-11-03T08:11:23Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://t8.lbstr.eu/index.php?title=Tcl&amp;diff=4697&amp;oldid=prev</id>
		<title>127.0.0.1: Учтены замечания из топа обсуждения.</title>
		<link rel="alternate" type="text/html" href="https://t8.lbstr.eu/index.php?title=Tcl&amp;diff=4697&amp;oldid=prev"/>
		<updated>2017-02-08T15:00:15Z</updated>

		<summary type="html">&lt;p&gt;Учтены замечания из топа обсуждения.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{архив}}&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Tcl&amp;#039;&amp;#039;&amp;#039; (от {{Lang-en|tickling}} — щекотание, &amp;#039;&amp;#039;тикль&amp;#039;&amp;#039;) — когда-то популярный среди бородатых дядек и тетек программируемый язык [[:w:метапрограммирование|метапрограммирования]], позволяющий запрограммировать все то, что можно напрограммировать на Си, находясь при этом в дугу пьяным. Из-за данной особенности язык очень любим среди работников всяких НИИ, РАН и прочих CERNов.  А еще наркоманами, пишущими на TCL настольные приложения, он обычно упоминается в связке с убогим графическим интерфейсом Tk в виде англоязычного [[мем]]а — Tcl/Tk. Однако следует отметить, что в последнее время сообщество кардинально понизило унылость интерфейса Tk&amp;lt;ref&amp;gt;Кстати, унылость Tk тоже заметно уменьшилась. Также следует заметить, что для телескопов крутой гуй со свистоперделками а-ля Эппл не нужен.&amp;lt;/ref&amp;gt; — они выкинули Tk нахер и приделали биндинги к Qt, GTK, FLTK и даже написали NexTk.&lt;br /&gt;
&lt;br /&gt;
== История ==&lt;br /&gt;
Язык был создан профессором [[:w:Остераут, Джон|Остераутом]] во времена работы в [http://www.berkeley.edu альма-матери] [[ЛСД|LSD]] и [[FreeBSD|BSD]]. Признаков употребления [[Вещества|веществ]] профессором во время создания Tcl не обнаружено. Ну, кроме самого факта создания Tcl. Позже создатель пытался внедрить язык в компанию [http://www.sun.com Sun Microsystems], но [[не фартануло]]. Вместо этого Sun Microsystems придумали [[Java|Яву]]. Вы не поверите, но потом была сделана реализация тикля уже [http://tcljava.sourceforge.net/docs/website/getstart.html на самой яве], и притом [[:en.w:Tcl/Java|не одна]]. Фон Нейман вращается в гробу до сих пор.&lt;br /&gt;
&lt;br /&gt;
Также одно время тикль успешно применялся для создания погремушек для недоадминов RedHat Linux — на нем был сделан [[гуй]] для управления сервером, службами и пакетами.&lt;br /&gt;
&lt;br /&gt;
== Синтаксис ==&lt;br /&gt;
По мнению 95% [[быдлокодер]]ов, синтаксис Tcl уродлив невообразимо, однако позволяет успешно программировать будучи сильно подшофе, причем программа потом будет работать.&lt;br /&gt;
&lt;br /&gt;
Особо лютую ненависть язык вызывает среди [[Lisp|лисперов]], ввиду наличия нескольких типов скобок, применяемых для оформления программ. В отличие от Lisp-a в программы на Tcl можно вписывать еще квадратные и фигурные скобки.&lt;br /&gt;
&lt;br /&gt;
Наличие [http://wiki.tcl.tk/11159 макросов] и чуть более чем одной [http://wiki.tcl.tk/970 системы объектного ориентирования] понижают [[ЧСВ]] лисперов в 9 раз.&lt;br /&gt;
&lt;br /&gt;
Самый бородатый лиспер, не осиливший синтаксис Tcl — [[Столлман]]. В своей громогласной речи «[http://www.vanderburg.org/OldPages/Tcl/war/0000.html Tcl не нужен]» Столлман не побрезговал показать свое ЧСВ, упомянув свой [[Emacs|текстовый редактор]], и обозначил трудности восприятия синтаксиса Tcl в сообществе «[http://www.gnu.org/ Мы не &amp;lt;del&amp;gt;быдло&amp;lt;/del&amp;gt; юникс]». После этого [[Фэйл|эпик фэйла]] Столлман [[люто, бешено]] возненавидел Остераута и позволил себе [[Высер|прилюдно обозвать]] его [[жлоб]]ом&amp;lt;ref&amp;gt;[http://oreilly.com/openbook/freedom/ch11.html Stallman, taking advantage of an audience microphone, disrupted the proceedings with a tirade against panelist John Ousterhout, creator of the Tcl scripting language. &amp;#039;&amp;#039;&amp;#039;Stallman branded Ousterhout a «parasite»&amp;#039;&amp;#039;&amp;#039; on the free software community]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так выглядит [[Hello world]]:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;tcl&amp;quot;&amp;gt;&lt;br /&gt;
puts &amp;quot;Hello, World!&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А можно писать и вот так:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;tcl&amp;quot;&amp;gt;&lt;br /&gt;
set a 118;set b -399;set c 467;set d -128;set e -229;set f 260;set g -111;set h 18;set q [scan &amp;quot;жопажопа&amp;quot; %c%c%c%c%c%c%c%c];set r {};foreach x $q {append r [format %c [incr x [incr a [incr b [incr c [incr d [incr e [incr f [incr g $h]]]]]]]]]};puts $r&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
или&lt;br /&gt;
&amp;lt;source lang=&amp;quot;tcl&amp;quot;&amp;gt;proc &amp;lt; 1\ 0\ {l\ &amp;quot;&amp;quot;} {foreach O [split $0 $l] {append l [format %c [expr {[scan $O %c]+$1}]]};set l};return [&amp;lt; -1 {зпрб}]&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GUI ==&lt;br /&gt;
Одной из самых весомых фич языка является то, что он позволяет не просто написать программу, находясь в дугу пьяным, но еще и прикрутить к ней интерфейс пользователя, который, скорее всего, будет еще более страшен, чем собственно исходный код программы. Связано это с тем, что основной графический тулкит для TCL (Tk) использует старую как [[говно мамонта]] и страшную как старая вьетнамская проститутка тему Motif. Естественно, что на неподготовленную психику программы, написанные на Tcl/Tk, оказывают достаточно негативное влияние, после чего поциенты чаще всего начинают фапать на Qt или GTK+.&lt;br /&gt;
&lt;br /&gt;
Особо негативное влияние на быдлокодеров оказывает исходный код хорошей Tk-программы, так как прописывать все виджеты вручную считается моветоном для программиста на tcl. Программы строятся динамически посредством написания обработчиков словарей и списков с параллельным использованием макр для еще более устрашающего вида велосипедов и придания квадратным колесам более сюрреалистических форм.&lt;br /&gt;
&lt;br /&gt;
Впрочем, Tk можно использовать не только с тиклем, но и с кучей других языков, благо биндингов море (C, C++, Python, Ruby, Perl, Common Lisp — далеко не полный список), а консольную прогу можно обернуть напрямую из тикля.&lt;br /&gt;
&lt;br /&gt;
В умелых руках Tk выглядит вполне нормально, так как давно уже был расширен до Ttk (темизированный Tk), из-за чего программы на сабже не отличимы от нативных.&lt;br /&gt;
&lt;br /&gt;
== Tcl vs Lisp ==&lt;br /&gt;
Один из самых интересных срачей, которые много раз возникали на LOR&amp;#039;е благодаря некоторым активистам (скорее всего, троллям). Основоположником срача можно считать дедушку-Штоллмана, который так и не смог осилить лишпек с большим количеством шкобок. Адептам BSD и ЛСД чаще всего просто похуй. Смак самого по себе холивора состоит в том, что tcl и тиклеры одинаково нелюбимы лиспо-илитой (обычно фапают на CommonLisp или Scheme), лиспо-хипстерами (Clojure) и школьниками-штангистами (адепты Haskell). CL-щики не любят tcl за то, что тот имеет много скобочек, гораздо более развитую ООП-систему в лице XOTcl и очень мощные макры (фактически все программы на «тикле» — текст, в который осуществляются подстановки и вычисления перед тем, как он попадает в JIT). Схемщики не любят из-за наличия батареек и биндингов ко всему подряд и гнобят слабой реализацией ФП (лямды, замыкания, лень, каррирование — все приходится реализовывать через костыли и велосипеды). Лиспохипстеры тыкают палочкой с криками «не нужно», фапают на крутость JVM, за что и огребают от остальных. Штангисты просто смотрят на все это как на говно, молятся на жесткую типизацию и не понимают код tcl чуть менее, чем полностью.&lt;br /&gt;
&lt;br /&gt;
Что интересно — программы на tcl могут быть более лаконичны, чем на lisp-family языках, но при этом — гораздо более запутанными, нежели код Haskell или Erlang, так как код в tcl представляется неотделимым целым от данных. Иными словами — всё есть строка. В рамках данной концепции в строку можно запихать любое действие, а любое действие может быть результатом вычисления, а результат вычисления — функцией, а функция — результатом динамической перегрузки оператора средствами макры, а перегрузка — результатом подстановки и выполнения… Благодаря этому из строки «Жопажопажопажопа!!!» матерые тиклеры и научились получать «Hello, world!».&lt;br /&gt;
&lt;br /&gt;
Особый баттхёрт у неподготовленных быдлокодеров случается, когда tcl-код начинает перемешиваться с tk-кодом, сдобренным макрами, перегрузками и динамически-формированным кодом (когда из «жопажопажопажопа» получается не просто надпись на чёрном экране, а вполне себе сносное gui-приложение). Стоит отметить, что код на tcl/tk считается тем качественнее, чем более упорот алгоритм и, соответственно, менее он понятен не травмированной веществами психике. Хорошая tcl-программа выстраивает из списков, словарей и других данных код, который в свою очередь выстраивает код, который конструирует интерфейс и прописывает реакции виджетам. На такие джедайства в столь мизерном количестве строк лишпик Штоллмана не способен.&lt;br /&gt;
&lt;br /&gt;
В отличие от лишпа является промышленным языком, который и по сей день применяется не только для измерения длины МПХ программистов или длины бороды одминов, в связи с чем не любим троллями и задротами, употребляющими мамкин борщ в титанических пропорциях, во время обсуждения анафорических лямбд и крутости лишпа.&lt;br /&gt;
&lt;br /&gt;
== Web ==&lt;br /&gt;
Давным давно для веб-сервера Apache было понаделано расширений, позволяющих использовать тикль для создания динамических страниц: [http://tcl.apache.org/rivet/ http://tcl.apache.org/rivet/], [http://tcl.apache.org/websh/ http://tcl.apache.org/websh/]. Совсем, как этот ваш [[PHP]].&lt;br /&gt;
&lt;br /&gt;
Работают, между прочим, до сих пор, хотя живых доказательств этому в своих интернетах вы не найдете.&lt;br /&gt;
&lt;br /&gt;
А еще помимо упомянутых выше негритянских балалаек есть разработки и для белых людей: [http://www.aolserver.com/ http://www.aolserver.com/].&lt;br /&gt;
&lt;br /&gt;
== Интересные факты ==&lt;br /&gt;
* Наиболее известный [[мем]], относящийся к Tcl/Tk — самый продвинутый в интернетах Jabber-клиент — [http://tkabber.jabber.ru/ tkabber]. Интерфейс ткаббера доставляет массу лулзов пользователям всяких [[QIP|говно-квипов]] своей убогостью. Поэтому пользователи tkabber-а не перестают терзать авторов проекта вопросом «[http://ru.tkabber.jabe.ru/index.php/Ткаббер_ЧаВо/Внешний_вид_и_звук Почему Ткаббер такой страшный?]».&lt;br /&gt;
* Большой и толстый энтерпрайз также давно и сильно любит тикль. Например, Oracle, [http://www.orafaq.com/wiki/Tcl встроивший] свою реализацию тикля в свою же БД аж по самые помидоры.&lt;br /&gt;
* GUI-приложения, написанные на Tcl/Tk, под [[Apple|Яблоком]] тоже ужасны.&lt;br /&gt;
* [[Анонимус|Анонимные аналитики]] [[ЛОР]]а утверждают, что GUI-программы на Tcl пишутся в 9 раз быстрее, чем на С++&amp;lt;ref&amp;gt;В современных версиях Tcl/Tk есть Themed Tk (ttk) виджеты. С ними интерфейс под виндой выглядит так же, как у любой другой виндовой программы без скинов, в соответствии с выбранной темой для XP/Висты. По быстродействию голый интерфейс (который ничего не делает) также от других программ не отличается. А тормозит только в случае криво написанного быдлокода. Но Ткаббер до сих пор таки страшный.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* Количество вакансий для Tcl-программистов в этой стране есть величина постоянная, не превышающая количества букв в названии языка. В отличие от всего остального [[Белый человек|белого мира]], где данная величина иногда может зашкаливать за 9.&lt;br /&gt;
* Язык позволяет объявлять переменную с пустым именем. В эту переменную можно записать пустое значение. Хранится все это будет в пустой ячейке памяти. Можно, кстати, и не пустое, и даже целый массив, причём это реально используется.&lt;br /&gt;
* Присваивание обозначается не «=» или «:=», а командой set. Классика жанра — «set set set» — создать переменную с именем set и присвоить ей значение — строку «set».&lt;br /&gt;
* В Tcl можно запрограммировать [[деление на ноль]].&lt;br /&gt;
* Во избежание актов лютой ненависти со стороны быдлокодеров [http://www.tcl.tk/ серверы проекта] спрятали на [[Lost|секретной базе Dharma Initiative]] на [[:w:Токелау|островах Токелау]] в [http://www.dot.tk/ru/pageC00.html Тихом океане].&lt;br /&gt;
* Во времена царя Гороха на тикле пейсались руками скрипты для эмулятора этого вашего ворлдофваркрафта в неофициальной версии сервера.&lt;br /&gt;
* Автоматизация при разработке и тестировании микросхем, понапиханных в эти ваши компьютеры, мобильники и прочие айпэды, пишется чуть менее, чем полностью именно на тикле, только тссс!&lt;br /&gt;
* В некоторых языках есть биндинги к библиотеке Tk.&lt;br /&gt;
* Тикль для скриптинга юзает натуральный консольный кликер [[:w:Expect|Expect]]&lt;br /&gt;
* На Tcl пишутся металлические тетки (IVR), живущие на access-серверах [[Cisco]]&lt;br /&gt;
* Если в играх серии [[:Категория:The Elder Scrolls|The Elder Scrolls]], а также в Fallout 3 и Fallout New Vegas, открыть консоль и набрать tcl, то персонаж сможет проходить сквозь текстуры.&lt;br /&gt;
* Если при написании Tcl забыть переключить раскладку с русского, получится [[Егор_Холмогоров|Есд]].&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [http://tcl.tk/ tcl.tk] — официальный сайт.&lt;br /&gt;
* [http://tcl.tk/man/tcl8.6/TclCmd/contents.htm Tcl man] [http://tcl.tk/man/tcl8.6/TkCmd/contents.htm Tk man] — [[ман]]ы, курите их!&lt;br /&gt;
* [http://wiki.tcl.tk/ wiki.tcl.tk] — официальная вики.&lt;br /&gt;
* [[:en.w:Eggdrop|Eggdrop]] — самый популярный IRC-[[бот]]. Понимает скрипты, написанные на $subj. А также [http://www.tcldrop.us/ очередной долгострой] в виде реализации этого бота на чистом тикле.&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Языки программирования}}&lt;br /&gt;
&lt;br /&gt;
[[w:Tcl]]&lt;br /&gt;
[[en.w:Tcl]]&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
	</entry>
</feed>