Введение
Субтекст — это умеренно визуальный язык программирования и среда разработки прикладного программного обеспечения. Это экспериментальная исследовательская попытка создать новую модель программирования, называемую программированием, ориентированным на примеры, рассматривая скопированные блоки как прототипы первого класса для организации структуры программы. Он использует динамически обновляемый текст, подобный тому, что используется в электронных таблицах при изменении ячеек, для обеспечения быстрой обратной связи. Предполагается, что в конечном итоге он будет достаточно развит, чтобы стать практичным языком для повседневного использования. Планируется, что это будет программное обеспечение с открытым исходным кодом; лицензия пока не определена. Субтекст был создан Джонатаном Эдвардсом, который представил статью об этом языке на OOPSLA. Статья была принята для участия в конференции 2005 года.
Окружающая среда
Ранние видеодемонстрации среды Subtext были опубликованы примерно в 2006 году и демонстрировали семантику программ Subtext, а также тесную интеграцию со средой Subtex и средой выполнения. Программы Subtext объявляются и обрабатываются (или изменяются) путем добавления и связывания элементов различных типов с синтаксическим деревом и ввода необходимых значений или имен, в отличие от написания текстовых программ. Благодаря архитектуре языка и среды Subtext, нет различий между представлением программы и её выполнением. Как и в электронных таблицах, программы Subtext представляют собой активные вычисления в среде и среде выполнения, а программирование – это непосредственное управление этими вычислениями через графический интерфейс. В отличие от типичных функциональных языков программирования, Subtext обладает простой семантикой и легко применим к реактивным системам, требующим изменяемого состояния, ввода-вывода и параллелизма, в рамках модели, известной как "Реактивное программирование". Консольный ввод ("вызовы") может использоваться посредством потока данных внутри программы Subtext, позволяя пользователям интерактивно изменять значения.
Соответствие
Coherence — это продолжение и подмножество языка Subtext, использующее иные принципы. Это экспериментальный язык программирования и среда, использующая новую модель вычислений, управляемых изменениями, под названием «Когерентная реакция», для интерактивной координации эффектов и побочных эффектов программ в процессе их разработки. Язык специализируется на интерактивном прикладном программном обеспечении и разрабатывается создателем Subtext, Джонатаном Эдвардсом, который публикует белые книги, описывающие ход разработки. Побочные эффекты — одновременно суть и слабость императивного программирования. Программисту необходимо тщательно координировать действия, чтобы управлять взаимным влиянием их побочных эффектов. Такая координация сложна, чревата ошибками и ненадежна. Когерентная реакция — это новая модель вычислений, управляемых изменениями, которая автоматически координирует эффекты. Автоматическая координация действий позволяет программисту описывать, *что* нужно сделать, а не *когда*. Изменения состояния запускают события, называемые реакциями, которые, в свою очередь, изменяют другие состояния. Когерентный порядок выполнения — это порядок, в котором каждая реакция выполняется до всех остальных, на которые влияют её изменения. Когерентный порядок определяется итеративно, путем обнаружения несогласованностей по мере их возникновения и отката их последствий. Фундаментальным строительным блоком Coherence является динамически типизированное изменяемое дерево. Основным механизмом абстракции является виртуальное дерево, значение которого вычисляется лениво, а поведение генерируется когерентными реакциями.