|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Eduard Y Zozulya 2:5020/400 02 Sep 2004 11:00:41 To : Andrew Dolgov Subject : Re: Буквари: Программирование в X Window -------------------------------------------------------------------------------- .lan> From: Eduard Y Zozulya <doro@doro.poltava.ua> On Wed, 1 Sep 2004, Andrew Dolgov wrote: > преимуществ нет. а недостатки можно перечислять годами, начать хотя бы с > общего убожества tcl, этого недоязыка... Hу а мне все кажется наоборот, недостатков нет а преимуществ много, думаю это из-за того, что мы больше думаем душой :-) Сначала о грустном, для некоторых: - каждому языку - свое применение маразм на tcl писать драйвера, но если речь идет о работе со строками - равных tcl почти нет, если речь о UI - равных tk почти нет если речь идет о tcl/tk - равных уж точно нет :-) О не совсем плохом: 1) отсутствие типов переменных: думаю, это скорее плюс чем минус. Тип переменной зависит от того, где ты ее используешь. Ведь это похоже на жизнь. Забиваешь молотком гвоздь - это столярный инструмент, бъешь им по башке - орудие убийства. set a 1 set b "Я сегодня $a" # a - это строковая переменная set b [incr a] # a - это int 2) массивы: по-большому счету это не совсем массивы в "классическом понимании", скорее, это совсем не массивы, это нечно на жизнь большее - размерность не ограничена - индекс массива - все что угодно - один и тот же массив одновременно может быть и одномерным и двухмерным и N-мерным 3) подстановки: set a 1 # a = 1 set b a # b = a puts [subst $$a] # результат = 1 4) eval: представим себе общение клиента и сервера по довольно примитивной технологии, пусть клиент передает имя функции и ее аргументы, которую должен запустить сервер и отдать результат выполнения клиенту. простая задача, в обычных языках для реализации этого наверное надо вызывать case на имени функции, в tcl для вызова достаточно одной строки set RunString "По дороге в Ад, черный всадник мчится" # По - функция, все остальное ее аргументы eval $RunString 5) namespace - пространство имен обычно нам доступны следующие области видимости переменных - глобальная - локальная - внутримодульная (поправьте если я обозвал не так) в tcl мы получаем практически неограниченую возможность построения областей видимости - внутри + экспорт изнутри с любого количества пространств имен. Более того это касается не только переменных, но и функций 6) Цикл foreach foreach { a b c } { 1 2 3 4 5 6 } { # циклические значения puts "$a $b $c" # a | b | c| } # ---------- # 1 2 3 # 4 5 6 я этим часто пользуюсь иначе, когда надо присвоить многим переменным некие различные значения можно сделать по-обычному: set a 1 set b 2 set c 3 а можно одной строкой foreach { a b c } { 1 2 3 } {} 7) Думаю я многое еще не представил на Ваш суд. Good luck. ---------------------- With respect, Eduard. mailto:doro@doro.poltava.ua http://doro.poltava.ua ICQ: 176017203 --- ifmail v.2.15dev5.3 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/103170e1044e3.html, оценка из 5, голосов 10
|