Языко-ориентированное программирование ( LOP ) [1] — это парадигма разработки программного обеспечения, в которой «язык» — это строительный блок программного обеспечения, имеющий тот же статус, что и объекты, модули и компоненты, [2] и а не решение проблем на языках программирования общего назначения. , программист сначала создает один или несколько предметно-ориентированных языков (DSL) для решения проблемы и решает проблему на этих языках. Языко-ориентированное программирование было впервые подробно описано в статье Мартина Уорда « Языково-ориентированное программирование» в 1994 году , [1] , опубликованной в журнале Software – Concepts and Tools , Vol.15, No.4, стр. 147–161, 1994.
Концепция языково-ориентированного программирования предполагает подход к описанию требований в терминах пользователя, а затем попытку создать язык реализации, максимально изоморфный описаниям пользователя, чтобы сопоставление между требованиями и реализацией было как можно более прямым. Мерой близости этого изоморфизма является «избыточность» языка, определяемая как количество операций редактирования, необходимых для реализации отдельного изменения требований. Априори не предполагается, какой язык лучше всего подходит для реализации нового языка. Скорее, разработчик может выбирать среди вариантов, созданных в результате анализа информационных потоков — какая информация будет получена, какова ее структура, когда она получена, от кого и что с ней делается. [3]
Язык программирования Racket и RascalMPL были разработаны для поддержки языково-ориентированного программирования с нуля. [2] Другие языковые инструменты [4] , такие как JetBrains MPS , Kermeta или Xtext , предоставляют инструменты для проектирования и реализации DSL и языково-ориентированного программирования. Эрдвег, Себастьян (2013). «Состояние языковых средств». Языковая инженерия программного обеспечения . Конспекты лекций по информатике. Том. 8225. стр. 197–217. дои : 10.1007/978-3-319-02654-1_11. ISBN 978-3-319-02653-4. S2CID 5234848 . Проверено 4 июля 2023 г.