Кіріспе
Субтекст – қолданбалы бағдарламалық жасақтаманы жазуға арналған, орташа дәрежеде визуализацияланған бағдарламалау тілі және ортасы. Бұл – бағдарламалаудың жаңа моделін, «Мысалға негізделген бағдарламалау» деп аталатынды әзірлеуге жасалған тәжірибелік зерттеу. Онда бағдарлама құрылымы үшін көшірілген блоктар бірінші дәрежелі прототиптер ретінде қарастырылады. Пайдаланушылар жасушаларды жаңартқанда электрондық кестелерде болатындай, жылдам кері байланыс алу үшін «тірі мәтін» қолданылады. Бұл тілдің күнделікті қолдануға ыңғайлы, тәжірибелік тілге жетілдірілуі жоспарлануда. Оның ашық кодты бағдарламалық жасақтама болуы көзделіп отыр, бірақ лицензиясы әлі бекітілмеген. Субтекстті Джонатан Эдвардс жасаған, ол OOPSLA конференциясына осы тіл туралы мақала ұсынған. Мақала 2005 жылғы конференцияға қабылданды.
Қоршаған орта
Subtext ортасының алғашқы бейне көріністері 2006 жыл шамасында жарияланды, олар Subtext бағдарламаларының семантикасын және Subtex ортасымен және орындалу уақытымен тығыз байланысын көрсетті. Subtext бағдарламалары мәтіндік бағдарламалар жазудың орнына, әртүрлі типтегі элементтерді синтаксистік ағашқа қосу және байланыстыру арқылы, сондай-ақ қажет болған жағдайда мәндерді немесе атауларды енгізу арқылы жарияланады және өңделеді (немесе өзгертіледі). Subtext тілі мен ортасының дизайнына сәйкес, бағдарламаның көрсетілісі мен орындалуы арасында ешқандай айырмашылық жоқ. Электрондық кестелер сияқты, Subtext бағдарламалары орта мен орындалу уақытында тікелей орындалады, ал бағдарламалау – бұл графикалық орта арқылы осы орындалуларды тікелей өңдеу. Типтік функционалдық бағдарламалау тілдерінен өзгеше, Subtext қарапайым семантикаға ие және "Реактивті бағдарламалау" деп аталатын модельде өзгертілетін жай-күйді, кіріс-шығысты (I/O) және параллелизмді қажет ететін реактивті жүйелерге оңай қолданылады. Subtext бағдарламасындағы деректер ағыны арқылы консольдік кіріс ("шақырулар") пайдаланылуы мүмкін, бұл пайдаланушыларға мәндерді интерактивті түрде өңдеуге мүмкіндік береді.
Бірлестік
Субтекст тілінің жалғасы және кіші жиынтығы болып табылатын, басқа принциптерге негізделген «Когеренттік», – жаңа бағдарламалау тілі және ортасы. Ол бағдарламалардың әсерлері мен жанама әсерлерін дамыту барысында өзара әрекеттестікте үйлестіру үшін «Когеренттік реакция» деп аталатын өзгерістерге негізделген есептеудің жаңа моделін қолданады. Бұл тіл интерактивті қолданбалық бағдарламалық жасақтамаға арналған және оны Subtext-тің авторы Джонатан Эдвардс әзірлеуде. Ол ақ қағаздар жариялау арқылы оның дамуы туралы хабарлайды. Жанама әсерлер – императивті бағдарламалаудың мәні де, кемшілігі де. Бағдарламашы бір-біріне әсер ететін жанама әсерлерін басқару үшін әрекеттерді мұқият үйлестіруі керек. Мұндай үйлестіру күрделі, қателіктерге бейім және тұрақсыз. Когеренттік реакция – әсерлерді автоматты түрде үйлестіретін өзгерістерге негізделген есептеудің жаңа моделі. Автоматты түрде әрекеттерді үйлестіру бағдарламашыға не істеу керектігін көрсетуге мүмкіндік береді, бірақ қашан істеу керектігін емес. Күй өзгерген кезде «реакция» деп аталатын оқиғалар туындайды, олар өз кезегінде басқа күйлерді өзгертеді. Когеренттік орындалу реті – әрбір реакцияның өзгерістеріне әсер ететін басқа реакциялардан бұрын орындалуы. Когеренттік рет қайталана тексеру арқылы анықталады: пайда болған тұрақсыздықтарды анықтап, олардың әсерін кері қайтару арқылы. Когеренттің негізгі құрылыс бөлігі – динамикалық типтегі өзгертілетін ағаш. Негізгі абстракция механизмі – «виртуалды ағаш», оның мәні кейіннен есептеледі және мінез-құлқы когеренттік реакциялар арқылы құралады.