Блог Стебунова Владимира

TCL

С TCL (Tool Command Language) я первый раз познакомился в университете. Там на нём мы писали конфиги для моделирования работы сети. Тогда он меня не впечатлил. Но недавно прочитал эту статью и немножко прифигел.

Я где-то со знакомства с бейсиком хотел, чтобы функции могли себя перезаписывать или меняться в зависимости от каких-то внешних факторов. Тогда я еще не знал про метапрограммирование. Так вот в TCL это возможно из коробки и не является какой-то эзотерической фичей.

В этом языке всё хранится в строках. Любая переменная — это строка, любая функция — это строка. Сам код программы — это строка. Сложные структуры типа словаря, списка или массива — это строки со специальным синтаксисом. Благодаря этому можно любую переменную без всякой сериализации послать по сети, сохранить в файл или передать по каналам, при этом при получении в программе никаких действий делать не придется, она уже готова к использованию. Ну и второй момент: т.к. функция является строкой, её можно переписать прямо во время выполнения; также большая часть метаинформации будет доступна из этой функции благодаря развитым средствам рефлексии.

Язык получился достаточно удобным, так что его портировали на все платформы, и для меня не составило проблем вести разработку своей тестовой программы сразу на двух платформах. При этом библиотеки, которые я подключал, были сразу кроссплатформенными, а благодаря оболочке TK стандартный вид реализации не отличался в зависимости от платформы.

Есть, конечно, и проблемы:

Первая проблема — в TCL есть несколько видов скобочек, которые различаются по функциональности. Пока ты только начинаешь изучать язык, не всегда понимаешь, что тут надо применять — кавычки, которые только раскрывают переменные, квадратные скобочки, которые всего лишь замена eval, или фигурные, которые экранируют пробелы в переменных.

Вторая проблема — это не совсем понятное объяснение про наличие хэндлеров и их собственных пространств выполнения. Всё, что есть в javascript, присутствует и тут, контекст исполнения у кнопки и формы разные, и необходимо передать между ними данные либо через параметры, либо использовать дополнительный неймспейс.

Третья проблема — скорость. Обрабатывать строки всё-таки небыстрое занятие даже для компьютера.

Для более плотного знакомства с языком я написал небольшую программу, чтобы конфигурировать менюшку в своей приставке. С помощью этой программки я быстро набросал иконки и полные названия, чтобы пункты меню не выглядели сиротливо. Вот ссылка на её код. Да, он не самый чистый, но и сделано это больше для ознакомления с языком.

Язык TCL мне понравился, не серебряная пуля, но, видимо, как часть инструментария у меня останется.

У меня даже появилась теория,что если язык не приносит страдания, то он потихоньку забывается и тухнет в общей человеческой памяти, хотя он этого и не заслужил.

Ссылки

Следующая статья

Предыдущая статья