Статьи

Начало Уроки Tk Файлы
Статьи Уроки Tcl Гостевая книга


Что же этакого в Tcl?

В этой статье будут рассмотрен Tcl в сравнении с другими существующими языками аналогичного класса.

Разговор о языке следует начать с того, объектный этот язык или нет. В отличие от большинства модных современных скриптовых языков, Tcl является структурным. Конечно, есть модули добавляющие объектность, например incrTcl и incrTk, но в своей основе Tcl процедурный.

Спорить о том что лучше, объектное программирование или структурное можно вести до бесконечности. На мой взгяд, по своей сути компьютеры чужды объектности, процессор выполняет команды подряд.

Реально я видел очень мало программ написанных правильно с точки зрения объектного программирования. Такие популярные языки как Delphi, Visual C++ предполагают, что вся программа представляет собой один объект, внутри которого есть другие объекты. Чтобы правильно писать ОО программы надо пользоваться инкапсуляцией, наследованием и остальными свойствами объектного подхода.

Объектные программы сложно изменять, так как если есть целое дерево наследования, то изменение родителя неизбежно потребует правки классов-наследников. Навигация по объектной программе тоже сложнее, чем в процедурной. По исследованиям в объектных программах в 2-3 раза больше ошибок. Конечно, профессионалы могут писать очень красивые и функциональные объектные программы. Но умных людей всегда было мало в этом несовершенном мире.

Синтаксис Tcl имеет очень много корней из C, и легко расширяется динамически загружаемыми библиотеками, лучше всего которые писать именно на С. При этом Tcl изначально разрабатывался с требованиями многоплатформенности, и механизм подключения библиотек аналогичен для всех платформ. Да, библиотеки приходится пересобирать при смене платформы, но компиляторы С есть на всех платформах, а самое тонкое для совместимости место - интерфейс - Tcl берёт на себя.

В отличие от большинства скриптовых языков в Tcl качественно реализована модель управления программой на основе событий. Можно задавать свои события, удобно сделано управление событиями. События могут генерироваться таймером, или при появлении данных в канале, или при изменении значения переменной, или при завершении какой-либо внешней программы, или просто при работе пользователя с интерфейсом Tk.

В Tcl есть всего один тип переменных - строка, это позволяет избавится от заморочки с типами, перевода из одного типа в другой, улучшает совместимость. Кроме того, для человека так намного понятнее и естественнее. Много раз объясняя ученикам, почему число 10 отличается от строки с содержимым "10" я ловил себя на мысли, что абсурдно об этом думать, это не нужно знать. Обработка типов данных должна быть заложена внутри. Ведь не обязательно знать устройство часов чтобы поставить время. Tcl более приближен к человеку, чем С, поэтому работать на нём удобнее. В большинстве программ до сих пор нельзя ввести в числовое поле значение 2+2, появится ошибка. А ведь сложно придумать для компьютера задачу проще, чем вычисление.

Но, всё-таки основные плюсы в Tcl - это расширяемость и открытость. Множество людей по всему миру могут разрабатывать компоненты самостоятельно или открыто, на сайтах подобных www.sourceforge.com. В Tcl уже исправлено много ошибок с русификацие благодаря открытой разработке и участию талантливых русских программистов. Популярность Delphi из-за легко добавления компонентов обеспечена и Tcl, в котором технология компонентов вышла на новый уровень - динамическая загрузка, многоплатформенность. Русифицировать иностранные программы на Tcl очень просто, и можно легко изменить интерфейс, если у вас есть какие-то специфические требования. С другой стороны, вся бизнес-логика и ресурсоёмкие операции может быть выполнена в бинарных модулях.

Есть ещё один довод для использования Tcl - цена. Tcl бесплатен, есть бесплатные среды разработки. Родная для Tcl платформа - Linux - тоже бесплатна. С помощью Tcl можно потихоньку начать переходить на другие платформы. В России не привыкли платить за программы. Для нас дико, когда половина стоимсти компьютера приходится на программное обеспечение, как в цивилизованном мире. Но рано или поздно, надо перестать воровать, надо покупать, тогда только мы вырастем в глазах мира и своих собственных.

автор: Юрий "Yurez" Горбачев

Юрий "Yurez" Горбачев  
Хостинг от uCoz