Изучаю TCL
Учу «Тикль» потихонечку — вечерами, урывками. Язык нравится очень простым синтаксисом, который позволяет делать крутые штуки — всё в языке считается строкой, а вопросом интерпретации строки занимается код. Это даёт возможность, например, расширять язык по необходимости.
Попробую пояснить как это работает. В данном случае все три параметра, передаваемых команде puts эквивалентны:
puts Hello; # это строка
puts "Hello"; # это тоже строка
puts {Hello}; # и это строка!
То есть фигурные скобки — это не «блок кода», а строка, правда со своими особыми правилами интерполяции. Это, вместе с конструкциями изменения уровня выполнения и позволяет создавать собственные дополнения к языку. Например, добавил в язык конструкцию unless (это такой if, только проверяется не истинность, а ложность условия):
proc unless {condition body} {
;# uplevel — конструкция, позволяющая выполнить блок выше по стеку
;# то есть, в данном случае, мы выполняем код в контектсе вызвавшего
;# процедуру unless кода, что позволяет увидеть все переменные, которые там определены
uplevel [list if !($condition) $body]
}
set var false
;# Это наша новая команда
unless { $var } {
puts "False: $var" ;# напечатает «False: false»
}
set var true
;# А это обычный if, которые есть в языке
if { $var } {
puts "True: $var" ;# напечатает «True: true»
}
Надо бы, конечно, что-то пописа́ть, чтобы лучше понять язык, задумки есть, скоро приступлю.
А зачем? Какой смысл?
У вас поиск по блогу сломался.
Комментарий для vladon:
Что зачем? Не понимаю.
Комментарий для Арефьев Тимур:
В чём это выражается?
тикль безумно крут, долгое время был моим любимым языком.
программа на нём может на лету дописывать и расширять саму себя, и можно делать всякие дикие фокусы. так я однажды написал на нём чатбота, который учился разговаривать прямо во время разговора, дописывая ветки диалогов в исходник собственной базы ответов. правда, я потом так и не придумал, зачем его ещё можно использовать, кроме как в качестве странного хобби.
Комментарий для PastorGL:
Тикль выглядит простым, но писать на нём без ТиКея мне нечего, а вот ТиКей пока идёт сложно — только я начал понимать что к чему, как выяснил, что теперь надо писать на Tlk — он интереснее и более развитый.
Комментарий для PastorGL:
На Ttk то есть.
Самое вкусное в tcl это команда trace — возможность повесить callback на изменение переменной (включая массив) очень удобно для GUI (эдакий MVC для бедных).
Ну и язык без ключевых слов вообще (но с ключевыми скобками) это круто.
Комментарий для Сергей:
Ага, мне тоже это очень понравилось :)
Например, пишу в поиске «сова», найдено 0 заметок.
Комментарий для Арефьев Тимур:
Это не у меня сломалось что-то, а у Яндекса. Надо на Гугл переходить.