После пяти лет разработки увидел свет (http://www.tcl.tk/software/tcltk/8.6.html) релиз новой ветки Tcl/Tk 8.6.0 (http://www.tcl.tk), динамического языка программирования Tcl, распространяемого совместно с кроссплатформенной библиотекой базовых элементов графического интерфейса Tk. Несмотря на то, что основное распространение Tcl получил для создания интерфейсов пользователя и как встраиваемый язык, Tcl также прекрасно подходит для других задач, таких как web-разработка, создание сетевых приложений, решение задач по администрированию систем и тестированию.
Основные новшества (http://wiki.tcl.tk/21276) Tcl 8.6:- В базовую поставку включены две реализации расширений для объектно-ориентированной разработки:
- TclOO (http://wiki.tcl.tk/18152) - написанная на языке Си встраиваемая в Tcl система объектно-ориентированного программирования, полностью динамическая (может использоваться для создания иных объектных расширений), основанная на использовании классов и поддерживающая такие расширенные возможности, как мета-классы, фильтры и примеси (http://ru.wikipedia.org/wiki/%D0%9F%D1%8....- Itcl 4 (incr Tcl) - построенный с использованием TclOO пакет, предоставляющий (http://wiki.tcl.tk/37253) некоторые элементы традиционного объектно-ориентированного программирования (в стиле C++);
- Переход на модель вычислений без использования стека (Stackless Evaluation), которая позволяет обеспечить высокий уровень вложенности вызовов процедур без сохранения в стеке набора вложенных вызовов подпрограмм. Итогом внедрения новой бесстековой модели является обеспечение поддержки глубокой рекурсии в Tcl-скриптах. Кроме того, представлен набор новых команд coroutine (http://wiki.tcl.tk/21446), tailcall (http://wiki.tcl.tk/14011), yield (http://wiki.tcl.tk/13849) и yieldto (http://wiki.tcl.tk/25230), предоставляющих поддержку сопрограмм и новые возможности по обеспечению параллелизма в Tcl-скриптах;
- Для обработки исключений добавлены новые команды try (http://wiki.tcl.tk/8293) и throw (http://wiki.tcl.tk/22121), а также дополнительные средства для учёта кодов ошибок;- Поставка коллекции сторонних модулей, собранных и установленных в поддиректорию pkgs;
- Готовность для создания и выполнения многопоточных программ. По умолчанию Tcl собран с поддержкой многопоточности и включает в поставку пакет Thread (http://wiki.tcl.tk/2770), а также реализацию новой команды interp cancel (http://wiki.tcl.tk/20550);
- В поставку добавлен пакет с интерфейсом Tcl DataBase Connectivity (tdbc (http://wiki.tcl.tk/20343)), позволяющим использовать в скриптах SQL без учёта специфики конкретных СУБД. Для работы с базами в формате SQLite добавлены модули sqlite3 и tdbc::sqlite3;
- Обеспечена поддержка IPv6, функция socket теперь в штатном режиме распознаёт IPv6-адреса;
- Встроенная поддержка сжатия с использованием Zlib, для работы со сжатыми потоками и данными представлена новая команда zlib (http://wiki.tcl.tk/4610);- Добавлены новые команды для обработки именованных списков (хэшей): lmap (http://wiki.tcl.tk/13920) и dict map (http://wiki.tcl.tk/37114);
- Поддержка работы со стековыми каналами (Stacked Channels) без написания кода на языке Си при помощи новых команд chan push (http://wiki.tcl.tk/21282) и chan pop (http://wiki.tcl.tk/21281);
- Дополнительные возможности: создание временных файлов, улучшенные методы сортировки, фильтрация словарей, поддержка закрытия одного из направлений двунаправленных каналов, средства для кодирования и декодирования бинарных последовательностей, более точный контроль выполнения команды load и многое другое (http://wiki.tcl.tk/21276).
Основные новшества (http://wiki.tcl.tk/37461) Tk 8.6:
- Встроенная поддержка чтения и записи изображений в формате PNG, в том числе с возможностью установки альфа-канала для прозрачных областей;
- Новая команда "tk busy", представляющая собой вариант blt::busy для временного замораживания интерактивных операций в окне;
- Новый интерфейс "tk fontchooser" для реализаций диалоговых окон выбора шрифтов;
- Поддержка вывода текста с наклоном (вращением). Угол наклона определяется через опцию "-angle $degrees" в $canvas;
- Поддержка перемещения элементов на холсте через использование новых команд "$canvas moveto", "$canvas imove" и "$canvas rchars";
- Средства для контроля за курсором для виджетов ввода текста;
- Поддержка дополнительных хинтов оконных менеджеров.
URL: http://www.tcl.tk/software/tcltk/8.6.html
Новость: http://www.opennet.me/opennews/art.shtml?num=35661
Самый главный вопрос: Tk перестал уже выглядеть, как "привет из 80х"? В остальном, изменения радуют.
Как захотите так и будет выглядит, привет из 80x это без gui
Ну ок, уболтали, выглядит как привет из конца 80-х - начала 90-х. Т.е. страшный что пи...!
> Самый главный вопрос: Tk перестал уже выглядеть, как "привет из 80х"? В остальном, изменения радуют.
> Ну ок, уболтали, выглядит как привет из конца 80-х - начала 90-х. Т.е. страшный что пи...!Что тот, что другой - одного поля ягоды.
Один думает, что все знает о времени, полагаясь только на свои глаза.> Как захотите так и будет выглядит, привет из 80x это без gui
Другой ушел лишь чуть чуть дальше, но на самом деле лишь в обратную сторону. Он думает, что если что-то нельзя увидеть глазами, то это типа вконец устарело.
Компьютерные системы нужно _видеть_ разумом, а не глазами _смотреть_.
А время - это вообще вещь нелинейная.
Хочу чтобы в линуксе UI был не аля мотиф, а с текущей темой GTK(KDE) и стюардессами.
У TK на маке есть кокоа и поэтессы, на виндовсе -- аэро и феи.А на линкусе -- мотиф и доярки.
будет выглядеть
> привет из 80x это без guiага, Smalltalk'а, значит — где современные принципы GUI и зародились, — не было.
> Самый главный вопрос: Tk перестал уже выглядеть, как "привет из 80х"?Здрасьте, ещё б лет через пять спросили. :)
Подскажите какие причины могут заставить не использовать python+tk для написания GUI и отдать предпочтение C++/Qt под Mac OS X и Windows?
Причина не использовать python+tk - использовать PyQt
>какие причины могут заставить не использовать python+tk для написания GUIТакие же, как и "не есть жёлтый снег"
> отдать предпочтение C++/Qt под Mac OS X и Windows?На кутях нет гемора с версиями питона. И программа не выглядит как г-но. И не тормозит как г-но.
1. Питон и tk необходимо устанавливать в систему пользователя. Иногда такой возможности может не быть. С Qt можно ничего не устанавливать в систему.
2. GIL я отношу к минусам питона.
3. Документация, субъективно, у Qt лучше(все собрано в одном месте).
4. Юзер установил другую версию библиотек и появилась вероятность того что особенности питона пересекутся с особенностями tk.
5. Компилятор лучше детектит ошибки в коде чем интерпретатор.
6. Qt пытается ползти на мобильные платформы - возможный плюс.Да и для многоплатформенного gui-я лучше испольщовать web.
Посмотрел на сайте Tcl/Tk, там в примерах Tk подхватывает нативный дизайн виджетов, а линуксе всё какое-то нескладное.
небось опять на сайт wxWidgets зашли и народ баламутите
Как вышла версия 8.5 (4 года назад), с кривым дизайном у Tk ни разу не сталкивался, в линуксе тоже все в порядке.
Ура!
> Переход на модель вычислений без использования стека (Stackless Evaluation)Теперь можно не бояться использвать goto ))))
> Теперь можно не бояться использвать goto ))))Так goto и на сях не боятся использовать. Просто оно ломает структуру программы. За что его и не любят. Наглядность страдает. А так JMP <label> было еще в ассемблере.
> А так JMP <label> было еще в ассемблереБыло? А куда делось?
И да - switch/case по сути тот же самый goto
>> А так JMP <label> было еще в ассемблере
> Было? А куда делось?
> И да - switch/case по сути тот же самый gotoНу да, похоже, но только в отличие от goto переход с условием как и у if
А где вы видели goto БЕЗ УСЛОВИЯ?! :)
> А где вы видели goto БЕЗ УСЛОВИЯ?! :)В GCC
> Для обработки исключений добавлены новые команды try и throw, а также дополнительные средства для учёта кодов ошибок;Про catch уже можно забыть? Или эти команды идут в дополнение?
Лучшая новость за последние n месяцев!
*убежал переписывать кучу кода на использование coroutine*
>Переход на модель вычислений без использования стека (Stackless Evaluation)Это как? Заменили в рекурсии стек на список?
>>Переход на модель вычислений без использования стека (Stackless Evaluation)
> Это как? Заменили в рекурсии стек на список?
Кстати, можно ли использовать coroutines как аналог threads? Либо это все происходит в рамках одного потока и одного процесса?
Кто использует какие техники для распределения "тяжелых" задач по процессорам (ядрам) в тикле?