Семантически-ориентированное программирование (SOP), это новая парадигма программирования, хотя и не совсем в привычном понимании этого термина. Обычно мы к парадигмам программирования относим процедурное (императивное) программирование, функциональное, логическое и т.п. К ним можно также отнести ООП, мета-программирование и подобные концепци. Собственно говоря, само слово "парадигма" - означает устоявшийся набор приёмов, понятий, ценностей, способов решать задачу. И оказывается, что "парадигм" в процессе программирования используется несколько больше. Скажем, такой способ решать задачи как использование IDE, баг-трекинга, unit-тестов, методологий организации работы коллектива программистов и многое другое.

Основной задачей технологий, используемых в программировании, является, конечно, возможность создания всё более сложных программ, удешевление разработки программ, повышения их качества. Разумеется, и SOP призвана внести свою лепту в этот процесс развития средств программирования. И делать оно это будет за счёт повышения автоматизации труда программиста. По принципу - пусть человек думает, а компьютер считает. То есть за счёт перекладывания на компьютер рутинную, нетворческую часть нашей работы. Ведь они именно для этого и создавались, не так ли?

Судя по названию, парадигма Семантически-ориентированного программирования предполагает, что программист будет писать программы используя термины максимально приближённые к содержанию решаемой задачи. По существу - это написание DSL (domain-specific language) или eDSL (embedded DSL), с последующим решением задачи используя уже этот специально написанный для решения задачи язык. Это оно, спросит искушённый читатель? - Да, верно, но не только это.

Дело в том, что хотя средств для создания DSL вполне хватает - используют их достаточно редко, предпочитая пользоваться языками общего назначения - C++, Java, Haskell и др. Хотя казалось-бы, пусть мы будем долго запрягать, зато быстро доедем... Так-то оно так, но не совсем так. Раз уж мы не пишем эти языки так часто, то на это должны быть какие-то объективные причины. Вот некоторые из них. Например, то-же использование современных IDE позволяет в несколько раз повысить производительность труда программиста (конечно, в основном для больших проектов). Дело не только в удобстве редактирования и отладке, но и в том, что IDE позволяет ориентироваться в огромном по размере коду проекта. Да, написать собственный DSL можно сравнительно быстро и легко, и он позволит значительно увеличить производительность труда программиста. Но увы, при этом мы потеряем возможность работы в IDE, которое, в лучшем случае, превратиться в простой редактор. Не очень-то много мы и выиграем, а может и проиграем.

Другая возможность, сравнительно редко нами используемая - это мета-программирование. В каком-то смысле мета-программирование является просто средством для создания DSL (а чаще eDSL). Существуют языки которые изначально создавались с расчётом на постоянное расширение средствами мета-программирования, оно в них встроенно изначально. Это такие языки как Forth, Lisp и т.п. Цена их использования - менее удобный синтаксис, чем у языков не имеющих встроенных средств мета-программирования. И увы, они тоже "не пошли", хотя средств в их развитие вложено очень не мало. Возможно, в частности не пошли и потому, что при написании небольших и средних проектов - мета-программирование не особенно и нужно. А вот когда проект становится действительно большим, и тут-бы и использовать его в полный рост... Увы, вам понадобиться вначале переписать весь код на Lisp, и только потом вы получите возможности мета-программирования. Стоит ли говорить, что "за такие деньги" никто мета-программирование не купит.

Вот эти, и многие другие проблемы, возникающие при попытке перейти от программирования с использованием языков общего назначения к семантическому программированию, и призвано решить SOP. Дать в руки инструмент, не просто предназначенный для быстрого и легкого создания DSL/eDSL, но позволяющий использовать всю мощь мета-программирования не принося в жертву другие парадигмы и технологии (такие как IDE), позволяющий "плавно" войти в использование мета-программирования и так далее.

Для реализации этой парадигмы я пишу SymADE (Symbolic Adaptable Development Environment), разработка которого ведётся по адресу http://symade.tigris.org . Технологически реализация подобна IP (Intentional Programming - http://www.intentsoft.com) и MPS (Meta-programming system, реализующая Language-oriented programming - http://www.jetbrains.com/mps). Но именно технологически, потому как в плане идеологии эти системы больше ориентированы на расширение синтаксических возможностей и изначальной интеграции созданных DSL в IDE. А SOP предлагает намного больше, намного. Но об этом я напишу в следующий раз ;)
 



Вам это будет интересно!

  • Редактирование кода программы как дерево, а не текст
  • Моделирование?


  • Последние новости


    Бхастрика

    Техника бхастрики имеет много общего с капалабхати, но существуют и значительные различия между этими упражнениями. Йоги часто расценивают капалабхати как облегченную разновидность бхастрики, что позволяет использовать последнюю для освоения более сложного этапа очистительной дыхательной гимнастики. Для выполнения бхастрики наибо...
    Читать далее »

    Дхарана и дхьяна, или концентрация и медитация

    Дхарана и дхьяна – шестая и седьмая ступени системы Патанджали. Наряду с пратьяхарой и самадхи они составляют раджа-йогу. Чем отличается концентрация от медитации? При концентрации включается только разум; при медитации – сердце и все существо в целом. При концентрации разум фиксируется на каком-то определенном предмете. Меди...
    Читать далее »

    Йога пальцев

    В руках расположены удивительные энергетические каналы, связанные с целой функциональной системой и носящие название органа, на который они замыкаются. Положение рук – мудра, строго определено каноном и имеет тайный символический смысл. Знатоки мудры насчитывают сотни различных значений в комбинациях и фигурах, изображаемых пальцами. Йо...
    Читать далее »

    Массаж глаз

    Его выполняют, когда чувствуют, что глаза устали во время какой-либо работы (чтение, шитье). Это упражнение может входить в комплекс, но может быть и самостоятельным. 1. Через ноздри делают спокойный и полный вдох. Приближают ладони к глазам так, чтобы получился угол, равный 45°. 2. Через нос делают выдох. В этот момент начинают мас...
    Читать далее »

    Заключение

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

    Наули

    Данное упражнение йоги называют устранением прямых мышц живота. Действие наули не имеет ничего общего с уддияной бандхой, хотя отдельные элементы выполнения обоих упражнений совпадают. Исходное положение для наули то же самое, что и для уддияны бандхи. Сначала нужно вдохнуть максимально полно, а затем выполнить уддияну баядху. После этого прямые мышцы живота напрягаются, а живот выпячиваетс...
    Читать далее »

    Процедура полоскания горла

    Необходимо также заботиться о здоровье горла. Миндалины, расположенные в горле, – часть иммунной системы. Они представляют собой барьер, защищающий организм от болезнетворных микробов, проникающих извне. Процедуры вамана-дхаоти и джаля-нети весьма благотворно влияют на состояние горла. Для борьбы с заболеваниями горла есть комплекс упражнений. Гигиеническое полоскание горла солонова...
    Читать далее »