LINUX.ORG.RU

tcl/tk-lor-faq

 ,


2

5

Доброго времени суток дорогой 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).

Пока все =), у кого есть желание поддержать топик - буду рад. Сам постараюсь в ближайшее время продолжить. Всем удачи!



Последнее исправление: mono (всего исправлений: 2)
Ответ на: комментарий от mv

> В CL объект обладает рантаймной информацией о типе. В плюсах этого нет, там базовые сишные типы представлены в их натуральном виде.

Никто не мешает, не выходя из плюсов, написать точно такие же типы как в лиспе, используя последние биты под тайптег.

Как мы знаем, от этого получатся тормоза при сдвигах. Будет ли какой от этого профит — не знаю; но так или иначе это сделать можно.

www_linux_org_ru ★★★★★
()

Опечатка в заголовке?

tck/tk-lor-faq

s/tck/tcl/ ..или я чего-то не знаю?

Corey
()

А tck/tk научилось utf ? А так мне про него один чел говорил что да, неплохое поделие мол, хоть и древнее.

anonizmus
()
Ответ на: комментарий от anonizmus

tcl поддерживает utf с версии 8.1 вышедшей в 1997 году.

elipse ★★★
()
Ответ на: комментарий от anonizmus

еще: Practical Programming in Tcl and Tk, Fourth Edition Brent Welch , Ken Jones, and Jeff Hobbs

Tcl/Tk 8.1

Tcl/Tk 8.1 features Unicode support for internationalization, thread safety, and a new regular expression package.

Tcl 8.1 should probably have been called Tcl 9.0. The internal changes required to support Unicode caused a major overhaul that touched nearly the entire implementation. At the same time, the code base was cleaned up so that it could be used in multithreaded environments, and it added a platform-independent dynamic loading facility (i.e., stub libraries). Finally, thanks to Henry Spencer, an all new regular expression package was added that brings Advanced Regular Expressions to Tcl. However, in spite of all these changes, scripts written for earlier versions of Tcl are very compatible with Tcl 8.1.

И tcl первый перешел на нативный utf из всех из скриптовых языков.

elipse ★★★
()
Ответ на: комментарий от elipse

Просто я как то несколько лет назад пробовал tcl/tk и у меня были проблемы с отображением кириллицы в гуе. Может быть дело было не в tcl а в tk. В конечном итоге я все равно не программист (так, раньше баловался, предпочитая все таки перл) поэтому мне все равно.

anonizmus
()
Ответ на: комментарий от anonizmus

ну, perl как злая пародия на tcl.
$ это значение переменных в tcl,
а в подпрограммах tcl автоматом локальные переменные и не надо тыкать постоянно my как в perl.
....

Как-то много глупостей, предрассудков и непонятного вранья вокруг tcl накопилось. И совсем мало переводной литературы и нормальных учебных пособий.


elipse ★★★
()
Ответ на: комментарий от anonizmus

> А tck/tk научилось utf ? А так мне про него один чел говорил что да, неплохое поделие мол, хоть и древнее.

tcl/tk научилось unicode 11 лет назад.

Eshkin_kot ★★
()
9 января 2011 г.
17 июля 2011 г.
21 августа 2011 г.

где используется

Можно добавить, Tcl/Tk используется на заправке SHELL, телескопе Хаббл и на многих промышленных предприятиях - так как не тянет за собой никаких библиотек, а сам интерфейс очень надежен.

s1392781
()
21 ноября 2011 г.
25 декабря 2011 г.

>> Могу ли я писать на «Тикле» Функционально?

Можете. Tcl позволяет писать в функциональном стиле.

Что понимается под функциональном стилем ? Как-то пробовал писать на лиспе, но при написании думаю так, как бы я писал на С++. Где можно прочитать про этот ваш функциольный стиль ?

tk
()
5 марта 2012 г.
6 апреля 2012 г.
28 мая 2012 г.
1 октября 2012 г.

«Практическое программирование на Tcl и Tk, 4-ое издание»

Отлично, я уже который месяц ищу подобную русскоязычную литературу.

Lonli-Lockley
()
Ответ на: комментарий от Lonli-Lockley

Еще есть «Азбука Tcl», но про нее ничего сказать не могу.

buddhist ★★★★★
()
21 апреля 2013 г.

Какие парадигмы поддерживает Tcl/Tk?

Императивную, функциональную, объектно-ориентированную.

Любую. Это язык метапрограммирования. Потому изобразить можно что угодно, а не только вышеуказанное.

Какие есть реализации Tcl/Tk?

Как таковой Так-тикль один

А еще Jim, TinyTcl и еще куча.

И про расширения ИМХО не корректно написано. Перечислены только ООП пакеты, причем только самые распиаренные.

Вообще-то любой package require уже расширяет язык.

Какую IDE взять?

Из личного опыта - лучше Vim'a пока не нашел.

Vim не IDE. Это редактор. Из emacs можно сделать IDE, но пилить долго. Можно взять Eclipse.

MrKooll ★★★
()

Назовите мне пожалуйста какой-нибудь крупный проект реализованный на tcl/tk, что бы я поверил, что этот язык != архаика, tkabber - вряд ли можно назвать крупным.

Russische_Abbattar
()
Ответ на: комментарий от Russische_Abbattar

Крупные проекты оправдывают использование языка/технологии? По-моему, у Вас бзики.

anonymous
()
Ответ на: комментарий от MrKooll

приходи ко мне на работу, у меня гиг оперативки и то 512 планку по блату сныкал.

irton ★★★★★
()
Ответ на: комментарий от Russische_Abbattar

TkGate, MCU51IDE, в Talks всплывал какой-то видеоредактор.

anonymous
()
Ответ на: комментарий от buddhist

Я как то интересовался этим языком, но потом интерес к изучению языков прогр. исчез вообще, я так в чисто просветительских целях интересовался, все-таки иногда возникает тяга к самообразованию =)

Russische_Abbattar
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.