Разделы
  • Фантастика
  • Детективы
  • Поэзия
  • Приключения
  • Детские
  • Любовные книги
  • Периодика
  • Религия
  • Новые книги
    Епископ Кассиан - Христос и первое христианское Поколение
    Епископ Вениамин (Пушкарь) - Священная Библейская история Нового Завета
    Епископ Вениамин (Пушкарь) - Священная Библейская История Ветхого Завета
    Епископ Александр (Милеант) - Таинства Церкви
    Епископ Александр (Милеант) - Священное писание Нового Завета
    Епископ Александр (Милеант) - Священное Писание Ветхого Завета
    Епископ Александр (Милеант) - Изьяснение Божественной Литургии
    Житинский - Японский бог
    Житинский - Языковой барьер
    Житинский - Элтон Джон
    Популярные книги
    Журнал Вокруг Света 3 за 2005 год
    Журнал Вокруг Света 12 за 2004 год
    Журнал Вокруг Света 1 за 2005 года
    Журнал Вокруг Света 11 за 2004 год
    Журнал Вокруг Света 6 за 1998 год
    Журнал Вокруг Света 11 за 2003 год
    Житинский - На холмах Мисуно
    Житинский - Японский бог
    Журнал Вокруг Света 1 за 1999 год
    Житинский - Китайская мышь
    Лучшие книги
    Желязны - The Three Descents Of Jeremy Baker I
    Житинский - Глагол инженер
    Журнал Вокруг Света 2 за 2001 год
    Журнал Вокруг Света 12 за 1997 год
    Житинский - Прах
    Журнал Вокруг Света 7 за 1995 год
    Житинский - Прыжок в висоту
    Журнал Компьютерра 33 от 13 сентября 2005 года
    Журнал Вокруг Света 10 за 2004 год
    Желязны, Плахта - Год Плодородного Зерна
    Cтатистика
     

    Языки предметной области

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 
    35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 
    70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 
    105 

    Решение проблемы напрашивается само собой: может, сразу излагать бизнес-требования на формальном языке? Или хотя бы не бизнес-требования (это мы сильно замахнулись), а высокоуровневые абстракции предметной области, из которых и состоит проект системы?

    Да вот только где бы найти подходящий язык! Очевидно, что универсальные языки программирования для этой цели непригодны: в описании функций системы никогда не встречаются термины наподобие «класс» или «виртуальный метод». Диаграммы UML тоже хороши только в качестве красивых иллюстраций к техническому проекту системы[Справедливости ради нужно отметить, что диаграммы классов и взаимодействия могут быть полезны и на этапе реализации, но они опять-таки не содержат «правильных» абстракций]. Еще несколько лет назад казалось, что с этой ролью справится XML, однако сейчас понятно, что подобные проблемы ему не по зубам (более подробно по этому поводу см. врезку «XML и XSLT»).

    Вывод: подобные языки нужно создавать. Причем нужно создавать свой, особенный набор языков для каждого типа проектируемых систем, поскольку абстракции, на которых основана какая-нибудь бухгалтерская программа, сильно отличаются от абстракций системы по сбору данных для аналитической отчетности. Для таких языков даже существует устоявшийся термин – DSL (Domain-Specific Language, специализированный язык предметной области), – которым мы и будем пользоваться в дальнейшем.

    Идея языков предметной области стара как мир. Макросы, языки командных оболочек (shell-скрипты Unix, например), проблемно-ориентированные языки приложений (такие как встроенный язык известной в России системы «1С»), языки пользовательских интерфейсов (например, XUL, широко известный в сообществе Mozilla), даже «великий и могучий» SQL для работы с базами данных, – все вышеперечисленные языки относятся к категории DSL, поскольку каждый из них проектировался для своей предметной области. Вместе с тем, за редкими исключениями, DSL не используются в качестве средства разработки программных приложений. А ведь как было бы здорово: разработать DSL и записать на нем код проекта…

    «Создавать языки под каждый конкретный проект? Вздор!» – скажет вам любой специалист, хорошо знающий, как дорого обходится проектирование формальных языков с нуля. Действительно, при классической схеме разработки любого языка нужно написать много кода для распознавания исходных текстов на этом языке и их погружения в объектную модель, пригодную для дальнейших манипуляций. Кроме того, даже при условии, что эта работа проделана, возникает ряд вопросов.

    Как отображать и редактировать программы на таком языке? Понятно, что в век высоких скоростей и мощных сред разработки ограничиться простым текстовым редактором a-la «Блокнот» уже не получится: представления о производительности труда разработчика ныне совсем не те, что в «далекие» 90-е годы XX века.

    Какова стоимость внесения изменений в разработанный язык? Если для того, чтобы изменить какое-то понятие предметной области, нужно «перекроить» весь код распознавателя, выгода от использования такого подхода равна нулю.

    И главное: предположим, объектная модель получена. Что делать дальше? Ведь модель еще нужно связать с языком реализации системы, что является отдельной головной болью.

    baltchor.com
    Главная | Книги | Обратная связь
    © 2009 Книги на сайте представлены исключительно для ознакомления.