Tcl/Tk

Язык tcl и его граф.библиотека tk возникли очень давно, и в своё время они были в прямом смысле (между ними был конкурс) конкуретами java. Но SUN сделал тогда ставку на виртуальную машину java против простых скриптов tcl для веб-аплетов и тикль отошёл как-бы на второй план, а ява ушла из веб и поглотила энтерпрайз. Даже на втором плане тикль вполне прижился :-) От маршрутизаторов до веб-серверов и 3D визуализации. Он очень такой, домашний что-ли - там всё просто, «всё есть текст».

Поучить тикль можно по официальному введению https://www.tcl.tk/about/language.html и учебнику https://www.tcl.tk/man/tcl8.5/tutorial/tcltutorial.html (английский, а что делать :-) ), также можно найти море информации на вики https://wiki.tcl.tk

Весь синтаксис языка умещается в додекалог (12 правил: http://wiki.tcl.tk/10259?redir=36586), с сокращениями:

  1. Команды программа (скрипт) состоит из команд разделяемых ; или переводом строки.
  2. Исполнение исполнение происходит в два шага : на первом интерпретатор разбирает команду на слова и осуществляет подстановки. Первое полученное слово будет именем команды, прочие её аргументами. На втором шаге исполняется команда, которая сама разбирётся как ей понять каждый из аргументов - как список, число, другой скрипт и прочее (см. основной принцип - это всё текст).
  3. Слова слова разделяются пробелами
  4. Двойные кавычки если первый символ слова « (двойная кавычка) то слово продолжается до парной ей кавычки. Получается строка :-) В ней могут быть произведены подстановки
  5. расширение аргумента если слово начинается с последовательности {*} то вместо результат слова будет рассматриваться как вставка текста и этот текст будет разобран как и всё остальное (прим.: это не перевод, но передача смысла как можно понятнее. Довольно новое правило (лет 5-7 всего) )
  6. фигурные скобки фигурные скобки { } обрамляют текст который должен быть воспринят как одно слово. Внутри скобок подстановки и расширения не производятся. Как правило таким образом оформляют списки.
  7. подстановка команд текст обрамлённый [ ] интерпретируется как вызов заключённой внутри команды и её результат будет подставлен на месте этих скобок как единое слово. (прим.: если использовать {*} то как последовательность слов)
  8. подстановка переменной если слово начинается с $ то оно воспринимается как имя переменной и будет использоваться значение этой переменной
  9. подстановка символов наподобии С можно маскировать символы через \ или полсталять сивмол по его коду
  10. комментарии слово начинающееся с # завершает команду и обозначает комментарий следующий до конца строки. Если строка завершается на \ то коментарий следует и на следующей строке
  11. порядок исполнения текст разбирается сверху вниз, слова разбираются слева направо. Подстановки и исполнение производятся в процессе разбора.
  12. подстановки и границы слов подстановки не влияют на определение границ слов. За исключением {*}

вот это 12 правил целиком и полностью определяют весь синтаксис языка. Обратите внимание - тут нет операторов (их нет вообще), не указаны ключевые слова (их по сути нет, любое слово - это просто устоявшаяся процедура, которую вы можете и переопределить при желании). И ничего не сказано про кодировку - вы можете использовать любую (внутри всё равно юникод)

как tcl интерпретирует привычный всем «условный оператор» :

if { $condition } {
   puts "hello"
} else {
   puts "word"
}

для тикль это вызов процедуры «if» с аргументами { $condition }, { puts «hello» } , «else» и { puts «word» }. И уже эта процедура сама знает что первый её аргумент это условие которое надо проверить, второй аргумент действие то есть скрипт который исполнить, третий должен быть строкой «else» и так далее.

немного изучив яык вы можете делать свои управляющие конструкции. Если нужен цикл с пост-условием

do { some code } while { condition }

то сделаете процедуру «proc do { code while_keyword condition } { …. }». Вообще начиная с какого-то момента вы начнёте делать себе подмножество языка (DSL) которое идеально подходит вам лично для решщения ваших задач.

Синтаксис Tcl понимает и подсвечивает любой редактор, современные IDE как правило имеют доп. расширения для всяких «плюшек» связанных с tcl. Хорошим подспорьем для изучения и вообще работы с тикль является tkcon (http://wiki.tcl.tk/1878) - консоль tcl где можно сразу набирать команды видеть результат, исполнять скрипты, смотреть переменные и прочее. TkCon как правило включается во все дистрибутивы и скачивать дополнительно ненадо