stringtranslate.com

Языко-ориентированное программирование

Языково-ориентированное программирование ( LOP ) [1] — это парадигма разработки программного обеспечения, где «язык» — это строительный блок программного обеспечения с тем же статусом, что и объекты, модули и компоненты, [2] и вместо того, чтобы решать проблемы на языках программирования общего назначения , программист сначала создает один или несколько предметно-ориентированных языков (DSL) для проблемы и решает проблему на этих языках. Языково-ориентированное программирование впервые было подробно описано в статье Мартина Уорда 1994 года « Языково-ориентированное программирование» . [1]

Концепция

Концепция языково-ориентированного программирования предполагает подход, позволяющий фиксировать требования в терминах пользователя, а затем попытаться создать язык реализации, максимально изоморфный описаниям пользователя, чтобы отображение между требованиями и реализацией было максимально прямым. Мерой близости этого изоморфизма является «избыточность» языка, определяемая как количество операций редактирования, необходимых для реализации отдельного изменения требований. Априори не предполагается, какой язык является лучшим для реализации нового языка. Вместо этого разработчик может выбирать среди вариантов, созданных путем анализа информационных потоков — какая информация приобретается, какова ее структура, когда она приобретается, от кого и что с ней делается. [3]

Разработка

Язык программирования Racket и RascalMPL были разработаны для поддержки языково-ориентированного программирования с нуля. [2] Другие языковые инструменты [4], такие как JetBrains MPS , Kermeta или Xtext, предоставляют инструменты для проектирования и внедрения DSL и языково-ориентированного программирования. [5]

Смотрите также

Ссылки

  1. ^ аб
    • Уорд, Мартин (1994). «Языково-ориентированное программирование». Software - Concepts and Tools . 15 (4): 147–161 . Получено 15 мая 2019 г.
    • Пикеринг, Роберт (2010). «Языково-ориентированное программирование». Beginning F# . Berkeley: Apress. стр. 327–349. doi :10.1007/978-1-4302-2390-0_12. ISBN 978-1-4302-2389-4.
  2. ^ ab Felleisen, Matthias; Findler, Robert Bruce; Flatt, Matthew; Krishnamurthi, Shriram; Barzilay, Eli; McCarthy, Jay; Tobin-Hochstadt, Sam (март 2018 г.). "Программируемый язык программирования". Communications of the ACM . 61 (3): 62–71. doi :10.1145/3127323. S2CID  3887010 . Получено 15 мая 2019 г. .
  3. ^ Данлавей (1994). Создание лучших приложений: теория эффективной разработки программного обеспечения . International Thomson Publishing . ISBN 0-442-01740-5.
  4. ^ Фаулер, Мартин (12 июня 2005 г.). «Языковые верстаки: убийственное приложение для доменно-специфических языков?» . Получено 14 апреля 2015 г.
  5. ^ Эрдвег, Себастьян (2013). «Современное состояние языковых верстаков». Программная языковая инженерия . Конспект лекций по информатике. Том 8225. С. 197–217. doi :10.1007/978-3-319-02654-1_11. ISBN 978-3-319-02653-4. S2CID  5234848 . Получено 4 июля 2023 г. .

Внешние ссылки