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



              

Специализированные языки - часть 2


  • они как-то «меньше» полнофункциональных языков программирования;
  • часто они не являются полными по Тьюрингу;
  • у них может отсутствовать формальная грамматика (и парсеры);
  • иногда они используются автономно, но часто входят в более сложную среду или объемлющую программу;
  • часто, но не всегда они интерпретируются;
  • обычно они разрабатываются для какой-либо одной цели, но часто (непредумышленно) способы их использования изменяются.

И у некоторых таких языков даже отсутствует название.

Наиболее важно то, что на использовании специализированных языков часто основывается значительная часть разработки крупных программных систем, таких как операционные системы. Они либо служат инструментами разработки, либо позволяют «склеивать» различные части более крупной среды. Поэтому особенно интересно «раскопать» некоторые малоизвестные подобные творения и взглянуть на их связи с нашими общими представлениями о языках программирования. В течение своей карьеры, работая над несколькими коммерческими операционными системами и крупными программными компонентами, я пришел к выводу, что постоянная разработка новых языков является неотъемлемой частью процесса развития и сопровождения широкомасштабных программных систем

Среда Unix с ее философией поддержки многочисленных легко связываемых мелких инструментальных средств была идеальной оранжереей для взращивания специализированных языков. Поверхностный просмотр руководств по ОС Unix начала 1980-х гг. показывает, что в это время активно использовалось более 20 мелких языков разного вида (см. рис. 1).




Рис. 1. Небольшие языки в Unix в начале 1980-х гг.

В состав этих языков входили полные языки программирования (sh), препроцессоры (yacc), командные языки (adb) для представления конечных автоматов и структур данных (регулярных выражений, отладочных «заглушек»). Двадцать лет спустя, когда Sun выпустила современную Unix-систему Solaris 10, почти для всех новых существенных средств операционной системы потребовалось введение новых специализированных языков:

  • для трассировки запросов в отладочном программном обеспечении DTrace был разработан язык D;
  • система Fault Management включала язык для описания распространения ошибок;
  • в средствах управления зонами и службами использовались основанные на XML языковые средства описания конфигураций и новые командные интерпретаторы.

История одного из этих небольших языков из мира Unix, а именно, того, который используется в отладчике adb, особенно хорошо иллюстрирует стихийное развитие и одновременную закоснелость мелкого языкового средства, полезного в крупной системе.




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