Tcl / Tk

Программные средства разработки

Модераторы: Olej, vikos

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

Tcl / Tk

Непрочитанное сообщение Olej » 13 авг 2012, 18:49

Tcl / Tk - это язык программирования ("тикл"), но самое интересное его свойство для программиста (и администратора) Linux состоит в том, что это самый простой из всех существующих (самый быстрый) инструмент создания своих GUI приложений.
Достоинство такого "быстрого" GUI приложения ещё и в том, что оно станет одинаково работать на самом широком спектре платформ: Windows, Mac, и самых разнообразных Unix (Linux, Solaris, IRIX, AIX, *BSD*, etc.).

Это обеспечивает достаточную применимость Tcl / Tk :
- во внутреннем корпоративном ПО брандов мировой IT (в качестве тестов, диагностики, утилит и т.д.)
- есть несколько проектов широкого применения на Tcl / Tk
- в качестве быстрого подручного инструмента разработчика.

Страница проекта: http://www.tcl.tk/software/tcltk/

По поводу Tcl / Tk несколько полезных публикаций:

РЕКОМЕНДАЦИИ ПО ПРОГРАММИРОВАНИЮ НА TCL/TK

tcl/tk-lor-faq
Причины непопулярности Tcl/Tk
Для начала огорчу тех, кто с пеной у рта кричит о том, что "Tcl не нужен" или "Tcl - мертв". Для опровержения последнего - посмотрите на дату выпуска последней версии интерпретатора Tcl/Tk. Про первое - не нужный язык не станут использовать AOL, BMW, CPU за его создание не станут давать ACM Software System Award. В настоящий момент разработки на Tcl/Tk ведутся в основном в недрах компаний, которые пишут на данном языке программное обеспечение для внутреннего пользования. Поэтому говоря о непопулярности Tcl/Tk мы прежде всего говорим о его непопулярности среди разработчиков настольных пользовательских приложений. Следующие аргумент, который выдвигают в качестве непопулярности Tcl/Tk - это то, что стандартный вид набора виджетов не красивый, как пример - приводят jabber-клиент tkabber. По данному заявлению стоит отметить - набор стандартных виджетов имеет по умолчанию значения атрибутов, которые соответствуют бородатому Motiff, внешней вид которого действительно является немного анохроническим. Но зачем использовать значения по умолчанию? Опытный разработчик на Tcl/Tk способен сделать интерфейс по внешнему виду ничем не уступающий большинству приложений. Далее - сегодня Тк поддерживает "скины" и внешне может подстраиваться под внешний вид графического окружения операционной системы, что делает программы на Tcl/Tk неотличимымы от их аналогов чисто внешне. Существенным минусом для многих команд разработчиков коммерческого ПО стало то, что программы на языке до сих пор распространяются в виде исходных кодов, без предварительного перевода в байт-код, т.е. программное обеспечение написанное на Tcl/Tk является ПО с открытым исходным кодом. А большинство разработчиков коммерческого ПО избегают этого. Среди разработчиков свободного ПО с открытым кодом популярность Tcl стала меньше благодаря FSF и Ричарду Столлману в частности. В сентябре 1994 году RMS надолго "утопил" продуктивные идеи Tcl/Tk своей рекомендацией "Почему вы не должны использовать Tcl" в котором концентрируется внимание на якобы невозможно сложном синтаксисе Tcl (приводя в качестве контраргумента язык с куда более тяжелым синтаксисом, но четкой семантикой, - Lisp) и о "подкупающей хакеров простоте Tcl". Не разобравшись с основными идеями "раширяемости" и "расширения" Тикл, RMS наносит последний удар, утверждая, что Tcl пригоден только для маленьких приложений и выносит вердикт: "Поэтому проект GNU не собирается использовать Tcl в программном обеспечении GNU". Особенно странно это ввиду того, что Lisp и Tcl имеют общие черты и идеи, в частности - та же расширяемость. Несмотря на все старания Столлмана Tcl так и не "потонул", а "лисп" не смог занять ведущую позицию среди языков для разработки настольных приложений.
Tcl

Tk

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

Re: Tcl / Tk

Непрочитанное сообщение Olej » 13 авг 2012, 22:52

Для тех, кто любит красивые реализации, я подобрал некоторые примеры в архив.
Позже подберу ещё.
Посмотрите во сколько строк кода реализуются GUI приложения.

Результат выполнения некоторых примеров:
- это Paint :lol:
hello.png
hello.png (4.85 КБ) 9452 просмотра
- это построитель графиков функций
funplot.jpg
funplot.jpg (37.62 КБ) 9452 просмотра
- а это 3D обозреватель:
3dviewer.jpg
3dviewer.jpg (44.28 КБ) 9453 просмотра
Вложения
Tcl.Tk.tgz
(29.84 КБ) 534 скачивания

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

Re: Tcl / Tk

Непрочитанное сообщение Olej » 13 авг 2012, 22:54

А для увязывания управляющего GUI с исполняющим C-кодом (когда это сильно нужно), есть такой замечательный проект как SWIG.

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

Re: Tcl / Tk

Непрочитанное сообщение Olej » 19 фев 2014, 11:53

Tcl / Tk интересен ещё тем, что с ним как с GUI обёрткой элементарно связывается практически любой язык программирования. Это (и как это происходит) очень хорошо видно на примере Python: Тонкости использования языка Python: Часть 9. Разработка GUI-приложений

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

Re: Tcl / Tk

Непрочитанное сообщение Olej » 26 авг 2014, 02:03

Olej писал(а):Tcl / Tk - это язык программирования ("тикл"), но самое интересное его свойство для программиста (и администратора) Linux состоит в том, что это самый простой из всех существующих (самый быстрый) инструмент создания своих GUI приложений.
Снова пришлось устанавливать Tcl на свежем компьютере... И снова запутался.
Изначально его нет (Fedora 20).

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

[Olej@modules GO]$ sudo yum install tcl
...
Установлено:
  tcl.x86_64 1:8.5.14-1.fc20
 
Выполнено!
New leaves:
  tcl.x86_64

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

[Olej@modules speed]$ ls -l /bin/tcl*
lrwxrwxrwx. 1 root root    8 авг 26 01:33 /bin/tclsh -> tclsh8.5
-rwxr-xr-x. 1 root root 7144 авг 15  2013 /bin/tclsh8.5
Запутало (забылось) то, что называется он (интерпретатор) не tcl, а tclsh, или усли совсем точно tclsh8.5.

Записал себе на память, может и ещё кому пригодится.

Аватара пользователя
perseus
Писатель
Сообщения: 99
Зарегистрирован: 11 май 2017, 18:01
Откуда: Щёлково, Московская обл.
Контактная информация:

Re: Tcl / Tk

Непрочитанное сообщение perseus » 17 май 2017, 12:10

а как устанавливать в Fedora расширения к Tcl ? В частности расширение Thread ?

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

Re: Tcl / Tk

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

perseus писал(а):а как устанавливать в Fedora расширения к Tcl ? В частности расширение Thread ?
1. В таких случаях (и не только с Tcl, а со всеми языками программирования!) сложность состоит в том, что:
- имена пакетов Linux дистрибутивов не совпадают с названием их содержимого ... (нужно искать);
- имена одних и тех же пакетов в пакетных системах разных дистрибутивов не совпадают, называются по-разному;
P.S. Найдёте - покажите ;-)

2. В отношении потоков, Thread, в интерпретирующих языках (не только Tcl) нужно соблюдать большую осторожность: там не бывает реальных потоков, есть только их имитация средствами таких языков ... поэтому не нужно обольщаться ;-)

3. Во всех интерпретирующих (да и не только) языках (Perl, Python, ... Go) всегда можно было доустановить пакет-модуль-библиотеку (называться они могут по разному) средствами (инструментами) самого языка, его инфраструктуры, не вовлекая в эти дела средства операционной системы.

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

Re: Tcl / Tk

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

Olej писал(а): Снова пришлось устанавливать Tcl на свежем компьютере... И снова запутался.
По случаю проверил что стоит в Fedora 25 ... и что там есть вообще (насколько я помню, здесь я ничего из Tcl не устанавливал дополнительно):

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

[olej@dell Kotlin]$ dnf list tcl*
Последняя проверка окончания срока действия метаданных: 20 days, 17:51:07 назад, Sat Jan 20 23:36:15 2018.
Установленные пакеты
tcl.x86_64                                                  1:8.6.6-1.fc25                                       @@commandline    
tcl-devel.x86_64                                            1:8.6.6-1.fc25                                       @@commandline    
tclx.x86_64                                                 8.4.0-27.fc25                                        @@commandline    
tclx-devel.x86_64                                           8.4.0-27.fc25                                        @@commandline    
Доступные пакеты
tcl.i686                                                    1:8.6.6-1.fc25                                       fedora           
tcl-brlapi.x86_64                                           0.6.5-2.fc25                                         fedora           
tcl-devel.i686                                              1:8.6.6-1.fc25                                       fedora           
tcl-hamlib.i686                                             3.1-9.fc25                                           updates          
tcl-hamlib.x86_64                                           3.1-9.fc25                                           updates          
tcl-html.noarch                                             8.5.7-10.fc24                                        fedora           
tcl-iaxclient.x86_64                                        0.2-0.25.beta3.fc24                                  fedora           
tcl-ming.x86_64                                             0.4.8-1.fc25                                         updates          
tcl-mysqltcl.x86_64                                         3.052-2.fc24                                         fedora           
tcl-pgplot.i686                                             5.2.2-38.fc25                                        rpmfusion-nonfree
tcl-pgplot.x86_64                                           5.2.2-38.fc25                                        rpmfusion-nonfree
tcl-pgplot-devel.i686                                       5.2.2-38.fc25                                        rpmfusion-nonfree
tcl-pgplot-devel.x86_64                                     5.2.2-38.fc25                                        rpmfusion-nonfree
tcl-pgtcl.x86_64                                            2.1.1-3.fc24                                         fedora           
tcl-signal.x86_64                                           1.4-11.fc24                                          fedora           
tcl-snack.i686                                              2.2.10-29.fc25                                       fedora           
tcl-snack.x86_64                                            2.2.10-29.fc25                                       fedora           
tcl-snack-devel.i686                                        2.2.10-29.fc25                                       fedora           
tcl-snack-devel.x86_64                                      2.2.10-29.fc25                                       fedora           
tcl-tclreadline.i686                                        2.1.0-6.fc24                                         fedora           
tcl-tclreadline.x86_64                                      2.1.0-6.fc24                                         fedora           
tcl-tclreadline-devel.i686                                  2.1.0-6.fc24                                         fedora           
tcl-tclreadline-devel.x86_64                                2.1.0-6.fc24                                         fedora           
tcl-tcludp.x86_64                                           1.0.11-4.fc24                                        fedora           
tcl-tclvfs.x86_64                                           20080503-16.fc24                                     fedora           
tcl-tclxml.x86_64                                           3.2-17.fc24                                          fedora           
tcl-tclxml-devel.i686                                       3.2-17.fc24                                          fedora           
tcl-tclxml-devel.x86_64                                     3.2-17.fc24                                          fedora           
tcl-tclxml-gui.x86_64                                       3.2-17.fc24                                          fedora           
tcl-tileqt.x86_64                                           0.4-0.19.b1.fc24                                     fedora           
tcl-tkpng.x86_64                                            0.9-17.fc24                                          fedora           
tcl-tktreectrl.x86_64                                       2.4.1-12.fc24                                        fedora           
tcl-togl.i686                                               1.7-4.fc24                                           fedora           
tcl-togl.x86_64                                             1.7-4.fc24                                           fedora           
tcl-togl-devel.i686                                         1.7-4.fc24                                           fedora           
tcl-togl-devel.x86_64                                       1.7-4.fc24                                           fedora           
tcl-trf.i686                                                2.1.4-14.fc24                                        fedora           
tcl-trf.x86_64                                              2.1.4-14.fc24                                        fedora           
tcl-trf-devel.i686                                          2.1.4-14.fc24                                        fedora           
tcl-trf-devel.x86_64                                        2.1.4-14.fc24                                        fedora           
tcl-xapian.x86_64                                           1.2.24-1.fc25                                        updates          
tcl-zlib.i686                                               2.0.1-0.17.svn40.fc24                                fedora           
tcl-zlib.x86_64                                             2.0.1-0.17.svn40.fc24                                fedora           
tcl-zlib-devel.i686                                         2.0.1-0.17.svn40.fc24                                fedora           
tcl-zlib-devel.x86_64                                       2.0.1-0.17.svn40.fc24                                fedora           
tclabc.x86_64                                               1.3.7-2.fc24                                         fedora           
tclap.noarch                                                1.2.1-4.fc24                                         fedora           
tclap-doc.noarch                                            1.2.1-4.fc24                                         fedora           
tcllib.noarch                                               1.18-1.fc25                                          updates          
tclspice.i686                                               26-5.fc25                                            fedora           
tclspice.x86_64                                             26-8.fc25                                            updates          
tcltls.x86_64                                               1.6.7-5.fc24                                         fedora           
tcltls-devel.i686                                           1.6.7-5.fc24                                         fedora           
tcltls-devel.x86_64                                         1.6.7-5.fc24                                         fedora           
tclx.i686                                                   8.4.0-27.fc25                                        updates          
tclx-devel.i686                                             8.4.0-27.fc25                                        updates          

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

[olej@dell Kotlin]$ dnf list tk*
Последняя проверка окончания срока действия метаданных: 20 days, 17:52:10 назад, Sat Jan 20 23:36:15 2018.
Установленные пакеты
tk.x86_64                                               1:8.6.6-1.fc25                                               @@commandline
tk-devel.x86_64                                         1:8.6.6-1.fc25                                               @@commandline
tkinter.x86_64                                          2.7.13-3.fc25                                                @@commandline
Доступные пакеты
tk.i686                                                 1:8.6.6-1.fc25                                               fedora       
tk-devel.i686                                           1:8.6.6-1.fc25                                               fedora       
tkabber.noarch                                          1.1.2-4.fos93d0303aad.fc25                                   updates      
tkabber-plugins.noarch                                  1.1.2-4.fosf51aa371d9.fc25                                   updates      
tkcvs.noarch                                            8.2.3-3.fc24                                                 fedora       
tkdnd.x86_64                                            2.8-1.fc25                                                   fedora       
tkgate.x86_64                                           2.0-24.beta10.fc25                                           fedora       
tkgate-ca.noarch                                        2.0-24.beta10.fc25                                           fedora       
tkgate-cs.noarch                                        2.0-24.beta10.fc25                                           fedora       
tkgate-cy.noarch                                        2.0-24.beta10.fc25                                           fedora       
tkgate-de.noarch                                        2.0-24.beta10.fc25                                           fedora       
tkgate-es.noarch                                        2.0-24.beta10.fc25                                           fedora       
tkgate-fr.noarch                                        2.0-24.beta10.fc25                                           fedora       
tkgate-it.noarch                                        2.0-24.beta10.fc25                                           fedora       
tkgate-ja.noarch                                        2.0-24.beta10.fc25                                           fedora       
tkiaxphone.x86_64                                       2.1-0.25.beta3.fc24                                          fedora       
tkimg.i686                                              1.4-23.fc24                                                  fedora       
tkimg.x86_64                                            1.4-23.fc24                                                  fedora       
tkimg-devel.i686                                        1.4-23.fc24                                                  fedora       
tkimg-devel.x86_64                                      1.4-23.fc24                                                  fedora       
tkinter.i686                                            2.7.13-3.fc25                                                updates      
tklib.noarch                                            0.5-14.fc24                                                  fedora       
tktable.x86_64                                          2.10-13.fc25                                                 fedora       
tktray.x86_64                                           1.3.9-12.fc24                                                fedora       
И вот интересное замечание:

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

[olej@dell Kotlin]$ dnf info tclx
Последняя проверка окончания срока действия метаданных: 20 days, 17:53:47 назад, Sat Jan 20 23:36:15 2018.
Установленные пакеты
Имя         : tclx
Архитектура : x86_64
Эпоха       : 0
Версия      : 8.4.0
Релиз       : 27.fc25
Размер      : 298 k
Репозиторий : @System
Из репозито : @commandline
Краткое опи : Extensions for Tcl and Tk
URL         : http://tclx.sourceforge.net/
Лицензия    : BSD
Описание    : Extended Tcl (TclX) is a set of extensions to the Tcl programming language.
            : Extended Tcl is oriented towards system programming tasks and large
            : application development. TclX provides additional interfaces to the
            : operating system, and adds many new programming constructs, text manipulation
            : and debugging tools.
...

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

Re: Tcl / Tk

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

Olej писал(а):
Для начала огорчу тех, кто с пеной у рта кричит о том, что "Tcl не нужен" или "Tcl - мертв". Для опровержения последнего - посмотрите на дату выпуска последней версии интерпретатора Tcl/Tk.
Решил посмотреть что там на сегодня происходит...
Olej писал(а): По случаю проверил что стоит в Fedora 25 ... и что там есть вообще (насколько я помню, здесь я ничего из Tcl не устанавливал дополнительно):

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

[olej@dell Kotlin]$ dnf list tcl*
Последняя проверка окончания срока действия метаданных: 20 days, 17:51:07 назад, Sat Jan 20 23:36:15 2018.
Установленные пакеты
tcl.x86_64                                                  1:8.6.6-1.fc25                                       @@commandline    
tcl-devel.x86_64                                            1:8.6.6-1.fc25                                       @@commandline    
...
Установлено 8.6.6 ... и по @@commandline видно, что это таки устанавливалось по какому-то случаю.

Последняя версия на странице проекта Tcl/Tc - 8.6.8

А по исходникам проекта эта последняя версия 8.6.8 датирована 2018-01-29 (а предыдущая 8.6.7 - 2017-10-27 ... каждая очередная версия через 3 месяца).
Т.е. всё очень динамично движется...

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

Re: Tcl / Tk

Непрочитанное сообщение Olej » 30 июл 2019, 13:27

Интерес к Tk (временно, было, угасший как экзотика на любителя) сильно возобновился в последние лет 5 в связи с:
- огромным распространением языка Python ... соизмеримое с применимостью традиционных "классических" языков C/C++, Java...
- тем, что именно Tk был традиционно выбран в Python как стандартное средство построения GUI приложений на Python...
- посредством пакета Tkinter библиотек Python.

Подробнее см.:
Python: Tkinter GUI
Python - графика

По поводу описаний использования Tkinter/Python есть ряд (достаточный) публикаций на русском языке:
An Introduction to Tkinter (Work in Progress)
Курс по библиотеке Tkinter языка Python
Спасательный круг для изучающих Tkinter
Создание графического интерфейса

Ответить

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя