Вопросы по языку TCL

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Andrey
Интересующийся
Сообщения: 3
Зарегистрирован: 06 апр 2016, 20:53
Контактная информация:

Вопросы по языку TCL

Непрочитанное сообщение Andrey » 06 апр 2016, 21:01

Здравствуйте уважаемые форумчане

интересен язык TCL на линукс:
1) интересно в какой среде можно программировать, какой софт необходимо установить (под виндой был WISH, а тут не знаю)
2) возможно ли с помощью программ написанных на языке TCL обращаться к низкоуровневому железу, например, UART, LPT, USB?
3) возможно ли использовать в TCL вставки из языка си?
4) порекомендуйте хорошую учебную литературу по данному языку

заранее благодарен за ответы

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Вопросы по языку TCL

Непрочитанное сообщение Olej » 07 апр 2016, 19:36

Andrey писал(а): интересен язык TCL на линукс:
1) интересно в какой среде можно программировать, какой софт необходимо установить (под виндой был WISH, а тут не знаю)
2) возможно ли с помощью программ написанных на языке TCL обращаться к низкоуровневому железу, например, UART, LPT, USB?
3) возможно ли использовать в TCL вставки из языка си?
4) порекомендуйте хорошую учебную литературу по данному языку
1.

Код: Выделить всё

olej@nvidia ~ $ which wish
/usr/bin/wish

Код: Выделить всё

olej@nvidia ~ $ man wish
wish(1)                                                          Tk Applications                                                         wish(1)
...
Или так: Интерактивная система просмотра системных руководств (man-ов)

Код: Выделить всё

olej@nvidia ~ $ which tclsh
/usr/bin/tclsh
olej@nvidia ~ $ man tclsh
...
olej@nvidia ~ $ ls -l /usr/bin/tclsh*
lrwxrwxrwx 1 root root    8 марта  6  2014 /usr/bin/tclsh -> tclsh8.6
-rwxr-xr-x 1 root root 5460 янв.   1  2014 /usr/bin/tclsh8.5
-rwxr-xr-x 1 root root 5468 янв.   3  2014 /usr/bin/tclsh8.6

Код: Выделить всё

olej@nvidia ~ $ apt search tcl* | grep ' tcl'
i A tcl                             - Tool Command Language (default version) - 
p   tcl-combat                      - CORBA scripting with Tcl                  
i   tcl-dev                         - Tool Command Language (default version) - 
p   tcl-doc                         - Tool Command Language (default version) - 
p   tcl-fitstcl                     - Tcl interface to FITS files               
p   tcl-funtools                    - Minimal buy-in FITS library (Tcl interface
p   tcl-memchan                     - Tcl extension for in-memory channels - run
p   tcl-memchan-dev                 - Tcl extension for in-memory channels - dev
p   tcl-signal                      - "Signal" extension for Tcl                
p   tcl-snack                       - Sound extension to Tcl/Tk and Python/Tkint
p   tcl-snack-dev                   - Sound extension to Tcl/Tk and Python/Tkint
p   tcl-snack-doc                   - Sound extension to Tcl/Tk and Python/Tkint
p   tcl-sugar                       - Lisp-like macro system for Tcl            
p   tcl-tclex                       - Lexical analyzer generator for Tcl        
p   tcl-tclreadline                 - расширение Tcl/Tk, добавляющее поддержку G
p   tcl-thread                      - Tcl extension implementing script level ac
p   tcl-tls                         - TLS OpenSSL extension to Tcl              
p   tcl-trf                         - Tcl data transformations - runtime library
p   tcl-trf-dev                     - Tcl data transformations - development fil
p   tcl-trf-doc                     - Tcl data transformations - development fil
p   tcl-udp                         - UDP sockets for Tcl                       
p   tcl-vfs                         - Exposes Tcl's virtual filesystem C API to 
p   tcl-vtk                         - Tcl bindings for VTK                      
p   tcl-vtk6                        - Tcl bindings for VTK                      
p   tcl-xpa                         - Seamless communication between Unix progra
p   tcl8.4                          - Tcl (the Tool Command Language) v8.4 - she
p   tcl8.4-dev                      - Tcl (the Tool Command Language) v8.4 - dev
p   tcl8.4-doc                      - Tcl (the Tool Command Language) v8.4 - man
i   tcl8.5                          - Tcl (the Tool Command Language) v8.5 - she
p   tcl8.5-dev                      - Tcl (the Tool Command Language) v8.5 - dev
p   tcl8.5-doc                      - Tcl (Tool Command Language) v8.5 — man-стр
i   tcl8.5-kwwidgets                - Cross-Platform GUI Toolkit - TCL/TK       
i A tcl8.6                          - Tcl (the Tool Command Language) v8.6 - she
i A tcl8.6-dev                      - Tcl (the Tool Command Language) v8.6 - dev
p   tcl8.6-doc                      - Tcl (the Tool Command Language) v8.6 - man
p   tcl8.6-tdbc                     - Tcl Database Connectivity                 
p   tcl8.6-tdbc-mysql               - Tcl Database Connectivity                 
p   tcl8.6-tdbc-odbc                - ODBC driver for the Tcl Database Connectiv
p   tcl8.6-tdbc-postgres            - Tcl Database Connectivity                 
p   tcl8.6-tdbc-sqlite3             - Tcl Database Connectivity                 
p   tclcl                           - tcl2c++ and otcldoc program from tclcl    
p   tclcl-dbg                       - debug symbols of TclCL: both tclcl and lib
p   tclcl-dev                       - transitional dummy package to libtclcl-dev
p   tclcurl                         - Tcl bindings to libcurl                   
v   tcldoc                          -                                           
v   tclex                           -                                           
p   tclgeoip                        - Tcl extension implementing GeoIP lookup fu
p   tcllib                          - Standard Tcl Library                      
p   tclodbc                         - ODBC extension for Tcl                    
v   tclreadline                     -                                           
v   tclsh                           -                                           
p   tclspice                        - Библиотека NGspice для Tcl                
v   tclthread                       -                                           
v   tcltls                          -                                           
v   tclvfs                          -                                           
v   tclx                            -                                           
v   tclx-doc                        -                                           
p   tclx8.4                         - Extended Tcl (TclX) - shared library      
p   tclx8.4-dev                     - Extended Tcl (TclX) - development package 
p   tclx8.4-doc                     - Расширенный Tcl (TclX) - справочные страни
p   tclxapian                       - Xapian search engine interface for Tcl    
p   tclxml                          - Tcl library for XML parsing               
p   tclxml-dev                      - Tcl library for XML parsing - development 
2. UART, LPT - это устройства в /dev, файловые имена - и работаете с ними как с файлами-устройствами.
+ специфические команды управления типа stty...
С USB всё гораздо сложнее разнообразнее - здесь всё зависит от устройства и как с ним работает Linux.

По п.3 и п.4 кое-что можете почитать здесь: Tcl / Tk

Andrey
Интересующийся
Сообщения: 3
Зарегистрирован: 06 апр 2016, 20:53
Контактная информация:

Re: Вопрос по языку TCL

Непрочитанное сообщение Andrey » 08 апр 2016, 19:07

спасибо огромное что уделили свое время моим вопросам,

я так понял все эти команды опрашивают состояние установки TCL, а что нибудь как например в си нет?
ну там в блокноте набросал программку, (в си вызвал компилятор, линкер, отладчик, расставил брек поинты) запустил интерпритатор по шагам или как можно? или тут последовательно нужно писать в консоль и смотреть выполнение? на счет общения с периферией, в RISC ядрах я мог отслеживать железные прерывания, тонко настраивать устройство как я хочу, а тут нужно соблюдать определенную структуру записи в файл или как?

при вызове apt search tcl* | grep ' tcl' у меня пишет :
WARNING: apt does not have a stable CLI interface yet. Use with caution in scripts.

чего мне не хватает?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Вопрос по языку TCL

Непрочитанное сообщение Olej » 11 апр 2016, 13:40

Andrey писал(а): я так понял все эти команды опрашивают состояние установки TCL, а что нибудь как например в си нет?
ну там в блокноте набросал программку, (в си вызвал компилятор, линкер, отладчик, расставил брек поинты) запустил интерпритатор по шагам или как можно? или тут последовательно нужно писать в консоль и смотреть выполнение?
Здесь всё точно так же (по крайней мере как с интерпретирующими языками, например Python или Ruby): набираете код в файл, и запускаете:

Код: Выделить всё

olej@nvidia ~/2016_WORK/in.WORK/Tcl.Tk/1 $ wish calculator.tcl 
^C
И поучите:
calc.png
calc.png (6.82 КБ) 6304 просмотра
(Вы, наверное, не посмотрели ссылку в моём прошлом сообщении - там есть прикреплённый архив с десятком пробных программ на Tcl/Tk)
Andrey писал(а): на счет общения с периферией, в RISC ядрах я мог отслеживать железные прерывания, тонко настраивать устройство как я хочу, а тут нужно соблюдать определенную структуру записи в файл или как?
Мне трудно понять по этой фразе что вы хотите ... но, конечно, Tcl/Tk заточен не для какой-то тонкой работы с нестандартной периферией.
Но со стандартной, с которой работает сама система Linux, вы можете работать пользуясь как-раз средствами операционной системы (только нужно с ними хорошо разобраться: /dev, /sys, /proc, udev и т.д.).
Andrey писал(а): при вызове apt search tcl* | grep ' tcl' у меня пишет :
WARNING: apt does not have a stable CLI interface yet. Use with caution in scripts.
чего мне не хватает?
Вам не хватает указать дистрибутив Linux, в котором вы это делаете :lol:
(если вы это делаете Linux)
Вложения
calculator.tcl
(1.07 КБ) 232 скачивания

Andrey
Интересующийся
Сообщения: 3
Зарегистрирован: 06 апр 2016, 20:53
Контактная информация:

Re: Вопрос по языку TCL

Непрочитанное сообщение Andrey » 11 апр 2016, 19:00

спасибо за наглядный пример с калькулятором буду изучать, мне казалось что потребуется специализированная IDE типа KEIL или еще что-нибудь, а теперь все ясно буду пробовать;
я линуксом пользуюсь, но честно говоря очень многого не знаю.. так что вот так...
у меня стоит XUBUNTU как мне правильно указать дистрибутив? если не сложно...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Вопрос по языку TCL

Непрочитанное сообщение Olej » 12 апр 2016, 00:44

Andrey писал(а):у меня стоит XUBUNTU как мне правильно указать дистрибутив? если не сложно...
Если у вас Xubuntu, то там их вариант apt просто не имеет такой команды как search :

Код: Выделить всё

olej@nvidia ~ $ apt --help
apt
Usage: apt command [options]
       apt help command [options]

Commands:
autoclean	- Erase old downloaded archive files
autoremove	- Remove automatically all unused packages
build     	- Build binary or source packages from sources
build-dep	- Configure build-dependencies for source packages
changelog	- View a package's changelog
check    	- Verify that there are no broken dependencies
clean    	- Erase downloaded archive files
contains  	- List packages containing a file
content   	- List files contained in a package
deb      	- Install a .deb package
depends  	- Show raw dependency information for a package
dist-upgrade	- Perform an upgrade, possibly installing and removing packages
download   	- Download the .deb file for a package
dselect-upgrade	- Follow dselect selections
held		- List all held packages
help     	- Show help for a command
hold		- Hold a package
install   	- Install/upgrade packages
policy   	- Show policy settings
purge    	- Remove packages and their configuration files
rdepends 	- Show reverse dependency information for a package
reinstall	- Download and (possibly) reinstall a currently installed package
remove   	- Remove packages
search   	- Search for a package by name and/or expression
show     	- Display detailed information about a package
source   	- Download source archives
sources   	- Edit /etc/apt/sources.list with nano
unhold		- Unhold a package
update   	- Download lists of new/upgradable packages
upgrade  	- Perform a safe upgrade
version  	- Show the installed version of a package
			This apt has Super Cow Powers

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Вопросы по языку TCL

Непрочитанное сообщение Olej » 21 май 2017, 11:36

Andrey писал(а): интересен язык TCL на линукс:
1) интересно в какой среде можно программировать, какой софт необходимо установить (под виндой был WISH, а тут не знаю)
2) возможно ли с помощью программ написанных на языке TCL обращаться к низкоуровневому железу, например, UART, LPT, USB?
3) возможно ли использовать в TCL вставки из языка си?
4) порекомендуйте хорошую учебную литературу по данному языку
На форуме возник снова интерес к языку Tcl: язык Tcl: установка и настройка.
В связи с чем есть смысл обновить и поднять и эту тему.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Вопрос по языку TCL

Непрочитанное сообщение Olej » 10 фев 2018, 19:04

Olej писал(а): В связи с чем есть смысл обновить и поднять и эту тему.
Чтоб не плодить множество тем разбросанных по форуму, все вопросы кода Tcl/Tk помещаю сюда (думаю его не будет много).

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Вопрос по языку TCL

Непрочитанное сообщение Olej » 10 фев 2018, 19:08

Olej писал(а): Чтоб не плодить множество тем разбросанных по форуму, все вопросы кода Tcl/Tk помещаю сюда (думаю его не будет много).
Код вычисления чисел Фибоначчи, как пример сравнения быстродействия, добавлен в новый текст производительность языков программирования:

Код: Выделить всё

proc tcl::mathfunc::fib { n } {
   if { $n < 2 } {
      return 1
   } else {
      return [ expr { fib( $n - 1 ) + fib( $n - 2 ) } ]
   }
}

puts [ tcl::mathfunc::fib [ lindex $argv 0 ] ]

Код: Выделить всё

$ time tclsh fibo.tcl 30
1346269
real	0m1.426s
user	0m1.246s
sys	0m0.006s

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Вопрос по языку TCL

Непрочитанное сообщение Olej » 11 фев 2018, 13:42

Olej писал(а):Чтоб не плодить множество тем разбросанных по форуму, все вопросы кода Tcl/Tk помещаю сюда (думаю его не будет много).
Задача такая же, как показано было в Swift под Linux:
- определение координат 2D точек, составных [X,Y] из 2-х Double значений
- ввод покоординатно таких чисел с терминала
- с контролем ошибок ввода: <2 или >2 чисел введено, не числовое значение, отработку конца ввода EOF=^D и т.д.
Контроль соответствия формата ввода (т.е. отсутствия ошибок ввода) в Tcl проще всего сделать регулярными выражениями. С отладочным выводом того что происходит это выглядит так:

Код: Выделить всё

set pattern {^[\s\t]*[-+]?(\d+|\.\d+|\d+\.\d*)\s+(\d+|\.\d+|\d+\.\d*)\s*$}

while "1" {
   puts "координаты в формате X Y : "
   if { [ gets stdin line ] <= 0 } break
   set x ""; set y ""; set match ""
   puts stdout $line
   set result [ regexp $pattern $line match x y ]
   puts "Result: $result match:<$match> |$x|$y|"
   if { $result != 1 } {
      puts "ошибка ввода"
      continue
   }
}
puts "\rзавершение ввода"
И выполняется это так:

Код: Выделить всё

[olej@dell Tcl]$ tclsh 2Din.tcl 
координаты в формате X Y : 
1 2
1 2
Result: 1 match:<1 2> |1|2|
координаты в формате X Y : 
123
123
Result: 0 match:<> |||
ошибка ввода
координаты в формате X Y : 
   3     4
   3     4
Result: 1 match:<   3     4> |3|4|
координаты в формате X Y : 
  34 5ф
  34 5ф
Result: 0 match:<> |||
ошибка ввода
координаты в формате X Y : 
   1d2 34
   1d2 34
Result: 0 match:<> |||
ошибка ввода
координаты в формате X Y : 
1 22 333
1 22 333
Result: 0 match:<> |||
ошибка ввода
координаты в формате X Y : 
   .2   3.
   .2   3.
Result: 1 match:<   .2   3.> |.2|3.|
координаты в формате X Y : 
   12.34  56.78
   12.34  56.78
Result: 1 match:<   12.34  56.78> |12.34|56.78|
координаты в формате X Y : 
завершение ввода
Вложения
2Din.tcl
(471 байт) 99 скачиваний

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и 9 гостей