Доброго времени суток дорогой LOR. Решил вот сделать небольшой FAQ по прекрасному на мой взгляд языку Tcl и его привязке Tk. Многие наверняка будут фыркать и говорить «Закопайте обратно» или «не нужен». Но давайте будем объективны - Tcl один из трех классических скриптовых языков (цитата с педивикии), который в отличии Perl и Python очень плохо освящен, а ведь у него есть такие преимущества как простота, быстрота разработки прикладных программ, возможность писать в функциональном стиле, хорошая реализация метапрограммирования. Ну и в конце-концов, это же «Lisp on Drugs!». Более или менее нормального FAQ в рунете не нашел.Поэтому предлагаю оформить его аналогично lisp-lor-faq.
Для начала ответим на некоторые самые простейшие вопросы:
Что такое Tcl?
Tcl - это скриптовый язык программирования высокого уровня. Считается одним из трех классических скриптовых языков. До пришествия РНР использовался вместо (если мне сейчас память не изменяет). Очень тесно взаимосвязан с тулкитом Tk, что позволяет в короткие сроки писать достаточно функциональные программы с GUI.
Зачем учить Tcl, ведь можно использовать любой скриптовый язык со связкой с Tk?
Можно. Но это не совсем торт=), лучше использовать любой тулкит в «родной» для него среде. Да и программы на чистом Tcl/Tk работают быстрее, чем при «костылестроении» с Ruby/Tk, Perl/Tk и пр., так как тащат за собой обе среды исполнения. Да и зачем иметь установленные два интерпритатора? Проще работать с одним (удобнее, да и с переносимостью проще).
Но есть же Lisp!
Есть. И Тикль с ним некоторые программисты сравнивают. Даже называют «Tcl - Lisp On Drugs». Языки и правда похожи - работа со списками, метапрограммирование. Но есть и серьезные различие. Так в Тикле все есть строка, а не символ.
Могу ли я писать на «Тикле» Функционально?
Можете. Tcl позволяет писать в функциональном стиле.
Какие парадигмы поддерживает Tcl/Tk?
Императивную, функциональную, объектно-ориентированную.
Ладно, уговорили, с чего начать?
Ну для начала можно ознакомиться со статьей в Вики (http://ru.wikipedia.org/wiki/Tcl), потом перейти к самому простому туториалу на русском (http://tclstudy.narod.ru/)
Какие есть реализации Tcl/Tk?
Как таковой Так-тикль один, его разработку сегодня ведет Tcl Core Team, но существуют так же расширения для него: стандартная реализация Tcl (http://www.tcl.tk/), экзотикль (XOTcl: http://media.wu-wien.ac.at/, расширение для ООП), iTcl (Первое ООП расширение, Inct Tcl, на нем написана iWidgets: http://incrtcl.sourceforge.net/), SNIT (объектный клей для Tcl, включен в стандартную библиотеку Tcl, оф.документация: http://www.wjduquette.com/snit/snit.html), STOOOP (ООП-расширение написанное на Tcl, так же сегодня входит в стандартную библиотеку, оф.документация: http://jfontain.free.fr/stooop.html)
Какие есть «сборки»?
Есть официальные исходные коды, которые любой желающий может скачать с официального сайта и собрать самостоятельно. Так же есть дистрибутивы от сторонних команд: ActiveState Tcl (проприетарный, есть платная версия, под все основные ОС: http://www.activestate.com/activetcl), WinTcl (более компактный, ориентирован на работу с ХОTcl, содержит Tloona и XOTcllde, как видно из названия - под Win: http://wintcltk.sourceforge.net/), TclKit (достаточно компактный дистрибутив, ориентированный на использование iTcl, обладает собран в один пакет и имеет систему управления собственным содержимым, кросс-платформенный: http://www.equi4.com/tclkit/), dqkit («TclKit на стеродидах, есть несколько вариантов сборки, кросс: http://sourceforge.net/projects/dqsoftware/) Tcl/Tk Aqua (дистрибутив заточен исключительно под MacOS: http://www.linkedin.com/in/danielsteffen/tcltk/). Недавно появилась достаточно занятная реализация Tcl для .Net (http://eagle.to/), отзывы вроде положительные - сам сказать ничего не могу, пока не ковырял. Если кто юзал -отпишитесь о впечатлениях.
Какую IDE взять?
Из личного опыта - лучше Vim'a пока не нашел. Под „винду“ - Komodo. GNU Emacs не сильно понравился, надо сильно допиливать. Tloona - не плохая среда, работал с ней мало, сказать ничего не могу, как впрочем и о XOTcllde. Для быстрой разработки с GUI прекрасно подходит Visual Tcl/Tk (vtcl) - форморисовалка а-ля Delphi с возможностью редактирования кода. В принципе удобная вещица, но не обязательна к использованию =), гуй на Тк пишется и так просто.
Какую литературу можно почитать?
По Tcl/Tk достаточно много англоязычных туториалов. Русский нашел только один (указал вышел). Из книг могу порекомендовать „Практическое программирование на Tcl и Tk, 4-ое издание“ (Б.Б.Уэлш, К.Джонс, Д.Хоббс), на английском - „Tcl and Tk Programming for the Absolute Beginner“ (Kurt Wall).
Пока все =), у кого есть желание поддержать топик - буду рад. Сам постараюсь в ближайшее время продолжить. Всем удачи!