Семантически-ориентированное программирование (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), разработка которого ведётся по адресу . Технологически реализация подобна IP (Intentional Programming - ) и MPS (Meta-programming system, реализующая Language-oriented programming - ). Но именно технологически, потому как в плане идеологии эти системы больше ориентированы на расширение синтаксических возможностей и изначальной интеграции созданных DSL в IDE. А SOP предлагает намного больше, намного. Но об этом я напишу в следующий раз ;)
Вам это будет интересно!
Последние новости
Бхастрика
Техника бхастрики имеет много общего с капалабхати, но существуют и значительные различия между этими упражнениями. Йоги часто расценивают капалабхати как облегченную разновидность бхастрики, что позволяет использовать последнюю для освоения более сложного этапа очистительной дыхательной гимнастики. Для выполнения бхастрики наибо...Читать далее »
Дхарана и дхьяна, или концентрация и медитация
Дхарана и дхьяна – шестая и седьмая ступени системы Патанджали. Наряду с пратьяхарой и самадхи они составляют раджа-йогу. Чем отличается концентрация от медитации? При концентрации включается только разум; при медитации – сердце и все существо в целом. При концентрации разум фиксируется на каком-то определенном предмете. Меди...Читать далее »
Йога пальцев
В руках расположены удивительные энергетические каналы, связанные с целой функциональной системой и носящие название органа, на который они замыкаются. Положение рук – мудра, строго определено каноном и имеет тайный символический смысл. Знатоки мудры насчитывают сотни различных значений в комбинациях и фигурах, изображаемых пальцами. Йо...Читать далее »
Массаж глаз
Его выполняют, когда чувствуют, что глаза устали во время какой-либо работы (чтение, шитье). Это упражнение может входить в комплекс, но может быть и самостоятельным. 1. Через ноздри делают спокойный и полный вдох. Приближают ладони к глазам так, чтобы получился угол, равный 45°. 2. Через нос делают выдох. В этот момент начинают мас...Читать далее »
Заключение
Секрет йоги заключается в том, что она взаимодействует с человеком в целом, а не с какой-то одной сферой его физиологической и духовной жизни. Она сопряжена с физическим, умственным, нравственным и духовным развитием индивида. Она укрепляет силы, уже существующие внутри нас. Начиная с улучшения здоровья, благоприобретенного отличного физического состояния, она шаг за шагом охватывает ментальну...Читать далее »
Наули
Данное упражнение йоги называют устранением прямых мышц живота. Действие наули не имеет ничего общего с уддияной бандхой, хотя отдельные элементы выполнения обоих упражнений совпадают. Исходное положение для наули то же самое, что и для уддияны бандхи. Сначала нужно вдохнуть максимально полно, а затем выполнить уддияну баядху. После этого прямые мышцы живота напрягаются, а живот выпячиваетс...Читать далее »
Процедура полоскания горла
Необходимо также заботиться о здоровье горла. Миндалины, расположенные в горле, – часть иммунной системы. Они представляют собой барьер, защищающий организм от болезнетворных микробов, проникающих извне. Процедуры вамана-дхаоти и джаля-нети весьма благотворно влияют на состояние горла. Для борьбы с заболеваниями горла есть комплекс упражнений. Гигиеническое полоскание горла солонова...Читать далее »
