Средства разработки приложений



              

Симбиоз


При разработке крупных программных систем небольшие языки часто находятся в симбиотическом партнерстве с основным языком разработки или с самой системой. Описанный выше макроязык adb не выжил бы вне базы исходных кодов своего родителя – системы Unix. Другим примером является макроязык любимых многими электронных таблиц: он существует для обеспечения удобного способа манипулировать видимыми пользователями абстракциями содержащего их программного приложения.

В мире операционных систем моим любимым примером симбиоза является объединение языка Forth с языком ассемблера SPARC, созданное в Sun в ходе работы над встроенным программным обеспечением OpenBoot. Идея состояла в том, чтобы создать небольшой интерпретатор, используемый в качестве среды начальной загрузки рабочих станций SPARC. Для среды начальной загрузки был выбран язык Forth, поскольку ядро этого языка является крошечным и может быть моментально перенесено на новые процессор и платформу. Кроме того, с использованием словарей Forth в интерпретаторе можно «на лету» определять новые команды для отладки. Поскольку в языке Forth допускается, чтобы его словари подменяли определения слов (лексем) в интерпретаторе, возникла оригинальная идея использования интерпретатора как макроассемблера для аппаратуры. Был создан набор словарей для переопределения всех кодов операций SPARC (ld, move, add и т.д.) кодами Forth, которые вычисляли бинарное представление ассемблируемых команд и сохраняли его в памяти. Тем самым, все низкоуровневые функции можно было писать на языке, который выглядел как язык ассемблера, сопровождаемый Forth-заголовками. Текст вводился в крошечный интерпретатор, который ассемблировал его в объектный код в основной памяти по мере разбора лексем и выполнял результирующую подпрограмму.

В последние годы плодородной почвой для мутации и симбиоза стали Web-браузеры. Центральными фигурами в современной Web-разработке являются интерпретируемые JavaScript и XML. (XML является синтаксической основой для разнообразных других языков и богатым источников гибридных языков и мутаций.) В распространенной модели программирования Ajax объекты JavaScript могут сериализоваться в форме XML, и XML-кодировки могут использоваться для передачи на сервер обратных вызовов удаленных процедур.


Содержание  Назад  Вперед