Предметно-ориентированное программирование направлено на программирование в
уникальной и даже очень конкретной области. Под такое программирование
разрабатывают уникальные языки с собственным синтаксисом — предметно-
ориентированные (на английском DSL – «domain-specific language»). Такие языки
являются полным противопоставлением языкам широкого назначения, которые могут
применяться где угодно и решать разные миссии. Предметные языки могут решать
небольшое количество проблем, а иногда даже только одну.
Предметно-ориентированное программирование имеет одну особенность — это его
основной принцип. А принцип говорит, что нужно всегда фокусироваться на одной
какой-то миссии, для которой разработан конкретный, специализированный,
используемый язык программирования и решать эту поставленную миссию лучше
всех известных методов.
Сферы предметно ориентированного программирования и его языки
DSL языки применяются в узкой сфере, учитывая все ее специфические моменты.
Их основная задача — это разрешение всех проблем области применения, для
которой они были созданы. Поэтому предметно-ориентированное программирование
это довольно специфическая сфера разработки. Оно завязано вокруг какой-то
определенной деятельности и с каким-то уникальным языком.
Сферы предметно-ориентированного программирования и его языки:
- Подготовка текстовой документации для десктопной верстки — языки TeX и LaTeX.
- Манипулирование текстами — язык Perl.
- Подготовка документов по аппаратному обеспечению — языки Verilog и VHDL.
- Вычисления значений различных символов — языки Mathematica и Maple.
- Компьютерное моделирование — язык AutoLips.
- Для решения проблем, использующих понятия исчисления предикатов — язык
Prolog. - Команды операционным системам — язык JLC.
- Структурирование информации — язык XML.
- Макетирование — языки UML и GPSS;
- и др.
Также к предметно-ориентированному программированию относятся языки,
встроенные в администрирование средствами крупных компаний:
- АВАР;
- Парсус;
- 1С;
- и др.
На самом деле, таких «микросфер», где применяется отдельный предметный язык
программирования, очень много. В основном предметно-ориентированное программирование затрагивает сферы, куда «не добраться» языками широкого
назначения или просто нецелесообразно их использование. Очень часто ПОП
применяется, как дополнение к основным языкам программирования, расширяя их
возможности и сферу влияния.
Достоинства и недостатки предметно-ориентированного программирования
Сложно давать определение достоинствам и недостаткам предметно-
ориентированного программирования, хотя бы потому, что оно функционирует в
очень специфичных областях, где «по-другому» бы просто не получилось. Это тоже
самое, если оценивать достоинства хирургии или стоматологии, как области
медицины. То есть, есть область применения и без нее никуда не деться и все что
можно оценивать, так это специалистов «внутри» самой области. В нашем случае,
мы можем дать оценку, какие преимущества и недостатки даст вам изучение
предметно-ориентированного программирования и языков DSL в частности, но не
всему ПОП.
Преимущества от изучения предметно-ориентированного программирования:
- есть возможность применять программирование в «узких» и специфичных сферах и решать задачи, на которые языки общего назначения не способны;
- языки DSL проще в изучении и освоении;
- низкая конкуренция в специальности;
- высокая оплата труда из-за специфичности языков программирования и малого количества достойных специалистов;
- есть возможность реализовать себя в сфере, которая близка по духу, если «программирование» в широком смысле не сильно привлекает; Недостатки от изучения предметно-ориентированного программирования:
- невысокая востребованность на знания конкретного языка DSL, поэтому тут изучение должно быть построено «от обратного», то есть сначала искать вакансию, а потом изучать соответствующий язык;
- нет возможности применять полученные знания в других сферах программирования, то есть, если выучили какой-нибудь язык DSL, то вы вынуждены будете работать только в сфере, где он применяется;
- небольшое или полное отсутствие сообщества, то есть, у некоторых DSL языков напрочь отсутствует сообщество, а это значит, что с трудностями нужно будет справляться самостоятельно или используя официальную документацию языка.
Возможно вам будет интересно почитать статью “Cтилизованные изображения. Векторный формат”
Заключение
Предметно-ориентированное программирование — это широкое понятие со
множеством мелких и уникальных сфер, где можно использовать собственные
знания. Единственное, прежде чем приступить к изучению какого-нибудь
предметного языка, нужно подыскать себе вакансию, чтобы иметь возможность сразу
получить работу, а не ждать «свободного» места. Потому что в некоторых случаях,
ждать придется очень долго.