Соглашение | Публикация статей

Языки описания сценариев
Категория: Статьи

Языки описания сценариев, такие как Perl, Python, Rexx, Tcl, Visual Basic и языки оболочек UNIX, предполагают стиль программирования, весьма отличный от характерного для языков системного уровня. Они предназначаются не для написания приложения с “нуля”, а для комбинирования компонентов, набор которых создается заранее при помощи других языков. Например, Tcl, Visual Basic могут использоваться для построения пользовательских интерфейсов из имеющихся элементов управления, а языки описания сценариев для оболочек UNIX применяются для формирования “конвейеров” обработки потоков данных из набора стандартных фильтров. Языки описания сценариев часто применяются и для дополнения готовых компонентов новыми возможностями; однако эта деятельность редко охватывает создание сложных алгоритмов или структур данных, которые уже обычно бывают уже заложены в компоненты. Иногда языки описания сценариев даже называют связующими или языками системной интеграции.
Для языков описания сценариев характерно отсутствие типизации, которая только усложнила бы задачу соединения компонентов. Все элементы в них выглядят и функционируют одинаково и являются полностью взаимозаменяемыми. Например, в Tcl или Visual Basic переменная может содержать в одной точке программы строку, а в другой – целое число. Код и данные также часто бывают взаимозаменяемы. Например, Tcl, Visual Basic переменная может содержать в одной точке программы строку, а в другой - целое число. Код и данные также часто бывают взаимозаменяемы, так что программа может генерировать другую программу -– и сразу же запускать ее исполнение. Обычно языки описания сценариев используют переменные строковых типов, которые обеспечивают единообразный механизм представления для различных сущностей.
Отсутствие в языке деления переменных на типы упрощает соединение компонентов между собой. Нет априорных ограничений на то, каким образом может использоваться тот или иной элемент, а все компоненты значения представляются в едином формате. Таким образом, компонент или значение могут быть использованы в любой ситуации; будучи спроектированы для одних способов применения, они могут оказаться задействованы совершенно иными, о которых их создатель никогда не помышлял. Например, в UNIX – оболочках работа любой программы – фильтра включает чтение данных из входного потока и запись их в выходной поток. Любые две такие программы могут быть связаны путем назначения выходного потока одной в качестве входного потока другой. Следующая команда оболочки представляет систему из трех фильтров, подсчитывающую в выделенном фрагменте текста строки, содержащие слово “scipting”:
Select | grep scripting | WC
Программа select считывает текст, выделенный в данный момент на экране, и выводит его свои выходной поток; фильтр grep считывает входной поток и пропускает на выход строки, содержащие слово “scripting”; а программа wc подсчитывает число строк в своем потоке. Любой из подобных компонентов может найти применение во множестве различных ситуации, решая каждый раз иную общую задачу. Сильная типизация языков программирования системного уровня затрудняет повторное использование кода. Она поощряет программистов к созданию большого количества несовместимых друг с другом интерфейсов, каждый из которых требует применение объектов своего типа. Компилятор не позволяет объектам других типов взаимодействовать с этим интерфейсом, не смотря на то, что результат, мог бы оказаться и весьма полезным. Таким образом, чтобы использовать новый объект с существующем интерфейсом, программисту приходится писать “переходник”, преобразующий объект к типу, на который рассчитан интерфейс. А применение “переходника” требует, в свою очередь, перекомпиляции части или даже всего приложения целиком. Доминирующий в настоящее время способ распространения ПО в виде двоичных файлов делает этот подход невозможным.
Чтобы оценить преимущества бес типового языка программирования, рассмотрим следующий пример на языке Tcl:
Button .b –text Hello! -font {Times 16} – command {puts hello} .
Эта команда создает на экране новую кнопку с надписью на ней Hello! шрифтом Times 16 пунктов, при нажатии, на которую выводится короткое сообщение hello . В одной строке здесь уместилось шесть элементов различных типов: название команды (button), название кнопки (. b), идентификаторы атрибутов (-text, -font, -command), простые строки (Hello! hello), спецификация шрифта (Times 16), состоящая из названия начертания (Times) и размера в пунктах (16), а также целый Tcl-сценарий (puts hello). Все элементы представляются единообразно – в виде строк. В данном примере атрибуты могли быть перечислены в произвольном порядке, а неупомянутым атрибутам (их насчитывается более 20) будут присвоены значения по умолчанию.
В случае реализации на Java тот же самый пример потребовал бы семи строк кода, составляющих два метода. Для С++ с использованием библиотеки Microsoft Foundation Classes (MFC) масштабы увеличились примерно до 25 строк кода, образующих три процедуры. Один только выбор шрифта требует нескольких обращении к функциямMFC
Cfont *fontPtr=new Cront ();
fontPtr->Crete Font (16, 0, 0, 0, 700,
0, 0, 0, ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH|
FF_DONTCARE,
“Times New Roman”);
buttonPtr->SetFont(fontPtr);
Можно было бы обойтись без значительной части этого кода, если бы не строгая типизация. Чтобы задать шрифт для кнопки, необходимо обратиться к методу Set Font; однако он требует передачи в качестве аргумента указателя на объект Cfont. Приходиться объявлять и инициализировать новый объект. Инициализацию объекта Cfont выполняет его метод Create Font, который имеет жесткий интерфейс, требующий задания 14 различных аргументов. В TCL существенные характеристики шрифта (начертание Times и кегль 16 пунктов) могут быть указаны непосредственно без каких-либо объявлений или преобразовании. Более того, TCL позволяет описать и поведение кнопки непосредственно в теле создающей ее команды, тогда как в С++ или Java для этого необходим отдельный метод.


Статьи по теме:

Копирование данных с компакт-диска
World Wide Web в России
Специальные панели Internet Explorer
APERTURE GRILLE
Трассировка процессов в UNIX
Друкувальні пристрої, графобудівники
Блокнот: Ведение журнала работы
Предмет кибернетики ее методы и цели
ОБЩАЯ ХАРАКТЕРИСТИКА ПРЕСТУПЛЕНИЙ В СФЕРЕ КОМПЬЮТЕРНОЙ ИНФОРМАЦИИ
Нейронный подход
ПРЕСТУПЛЕНИЯ В СФЕРЕ КОМПЬЮТЕРНОЙ ИНФОРМАЦИИ
Новый вид Windows Vista
Работа накопителя
Graycatsoft - Сайт Программного Обеспечения
Порты контроллера НГМД
Схема бесплатного ускорения Интернета
Таблицы параметров НМД и НГМД
Устройство Netping Cooler Board Поступило На Склад Компании Зао «Лайт Коммуникейшн»
Электронная почта
Три Тренинга От Известных Вендоров: Специально Для «Антивирусных Решений»
Установка Системы Видеонаблюдения В Офис
Рисование многоугольников
Работа Internet: организация, структура, методы
Компания Зао &Quot;Лайт Коммуникейшн&Quot; Получила Статус Gigabyte Authorized Partner
Черный Баннер - Угроза или новые технологии?
Стоимость CompactPCI-модуля
Робот Tartalo Стучится В Вашу Дверь
Первый взгляд на Windows Vista
WordPad: Выделение текста кеглем шрифта
Защита посредством назначения прав доступа и атрибутов
Периферийные устройства ПК
Системы электронной почты
Зао «Лайт Коммуникейшн» Сообщает О Начале Производства Устройств Netping Pwr-220 V2 И Netping 2/Pwr-220 V2
Элементарная теория процесса обучения нейросетей
Задача, решаемая с помощью использования пакета электронных таблиц
Критерий использования ЭС для решения задач
Просмотр видеодисков в формате MPEG 4 и DVD
Краткое описание назначения и возможностей Excel
Открытие документа двойным щелчком
ИСПОЛЬЗОВАНИЕ СУБД ACCESS 7.0
Алее Софтвер Создает Электронный Каталог Для Сзагс
ВЯЗКА ЖГУТОВ
Дополнительные программы Microsoft Internet Explorer
Средства Защиты Компьютера И Максимальная Его Безопасность
Информатизация
Компьютеры в сельском хозяйстве
Получение изображений со сканера или цифровой камеры
Последовательный и прямой доступ
Настройка параметров видеоустройства
РАЗНОВИДНОСТИ КОМПЬЮТЕРНЫХ ВИРУСОВ
РЕДАКТИРОВАНИЕ И ФОРМАТИРОВАНИЕ ТЕКСТА
Компания Janet Systems Проведет Круглый Стол «Будущее Соа-Проектов»
Внешние каналы украинского сегмента сети Іnternet
Понятие и концепции информационного общества
Микропроцессор