Другое

Предметно-ориентированное программирование. Достоинства и недостатки

Lorem ipsum dolor

Предметно-ориентированное программирование направлено на программирование в уникальной и даже очень конкретной области. Под такое программирование разрабатывают уникальные языки с собственным синтаксисом — предметно-ориентированные (на английском DSL «domain-specific language»). Такие языки являются полным противопоставлением языкам широкого назначения, которые могут применяться где угодно и решать разные миссии. Предметные языки могут решать небольшое количество проблем, а иногда даже только одну.

Предметно-ориентированное программирование имеет одну особенность — это его основной принцип. А принцип говорит, что нужно всегда фокусироваться на какой-то одной миссии, для которой разработан конкретный, специализированный язык программирования,используемый как раз для решения этой поставленной миссии лучше всех известных методов.

 

Предметно-ориентированное программирование

DSL-языки применяются в узкой сфере, учитывая все ее специфические моменты. Их основная задача — разрешение всех проблем области применения, для которой они были созданы. Поэтому предметно-ориентированное программирование это довольно специфическая сфера разработки. Оно завязано вокруг какой-то определенной деятельности и с каким-то уникальным языком.

Сферы предметно-ориентированного программирования и его языки:

  1. Подготовка текстовой документации для десктопной верстки — языки TeX и LaTeX.
  2. Манипулирование текстами — язык Perl.
  3. Подготовка документов по аппаратному обеспечению — языки Verilog и VHDL.
  4. Вычисления значений различных символов — языки Mathematica и Maple.
  5. Компьютерное моделирование — язык AutoLisp.
  6. Для решения проблем, использующих понятия исчисления предикатов, — язык Prolog.
  7. Команды операционным системам — язык JLC.
  8. Структурирование информации — язык XML.
  9. Макетирование — языки UML и GPSS.
  10. И др.

Также к предметно-ориентированному программированию относятся языки, встроенные в администрирование средствами крупных компаний:

  • АВАР;
  • Парус;
  • 1С;
  • и др.

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

 

Достоинства и недостатки предметно-ориентированного программирования

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

Преимущества от изучения предметно-ориентированного программирования:

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

Недостатки от изучения предметно-ориентированного программирования:

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

 

Заключение

Предметно-ориентированное программирование — это широкое понятие со множеством мелких и уникальных сфер, где можно использовать собственные знания. Единственное прежде чем приступить к изучению какого-нибудь предметного языка, нужно подыскать себе вакансию, чтобы иметь возможность сразу получить работу, а не ждать «свободного» места. Потому что в некоторых случаях ждать придется очень долго.

Схожие статьи

Центр приложений App Center. Обзор программы плюсы и минусы
Другое

Центр приложений App Center. Обзор программы плюсы и минусы

Плагины для Pycharm: список самых полезных и необходимых плагинов
Другое

Плагины для Pycharm: список самых полезных и необходимых плагинов

Компьютерная графика для начинающих: как создать компьютерную графику?
Другое

Компьютерная графика для начинающих: как создать компьютерную графику?

Pull Request на Git: определение, как сделать и его назначение
Другое

Pull Request на Git: определение, как сделать и его назначение