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