Мы считаем, что затруднения, подобные перечисленным выше, могут быть преодолены путём многомерной стратификации семантики наиболее типических компьютерных языков. Подчеркнём, что мы ведём речь именно о многомерной стратификации семантики, когда в качестве одного из измерений может выступать, например, образовательная семантика, в качестве другого — реализационная и так далее.
Так, образовательная семантика компьютерного языка может делить язык на 2-3 образовательных уровня. Эти уровни можно условно назвать элементарным, основным (или базовым) и экспертным (или мастерским), причём элементарный и основной уровни или основной и экспертный уровни могут иногда совпадать. Элементарный образовательный уровень компьютерного языка — это учебный диалект для изучения основ языка человеком (возможно, даже без использования компьютера), с очень простой и прозрачной формальной семантикой в виде виртуальной машины языка. Основной образовательный уровень компьютерного языка — это диалект языка для регулярного использования, предполагающий понимание со стороны пользователя, как основные конструкции языка могут быть определены (в принципе) в терминах виртуальной машины языка. Экспертный образовательный уровень компьютерного языка — это язык в полном объеме с пониманием того, какие конструкции языка соответствуют формальной семантике, а какие нет, но имеют семантику обусловленную особенностями и эффективностью реализации (т.е. практикой использования). Обращаем внимание, что здесь речь идёт не о машинных языках, автокодах (или ассемблерах) и языках высокого уровня, а об образовательном аспекте языка.
Реализационная семантика компьютерного языка может делить язык на 2-3 или более слоя. Обычно можно условно выделить ядро, несколько промежуточных слоёв и полный язык. Ядерный слой имеет эффективную реализационную семантику для класса платформ и достаточные средства для реализации методом раскрутки, интерпретации или трансформаций конструкций промежуточных слоёв. Полный язык может иметь только частичную трансформационную семантику в более низкие (промежуточные или ядерный) слои, часть конструкций полного языка может иметь свою индивидуальную реализационную семантику для каждой конкретной платформы. В качестве примера слоёв языка можно сослаться на «уровни» языка C# [1].
Прагматика компьютерных языков (в отличие от синтаксиса и формальной семантики) — это неформализованные представления людей, вовлечённых в жизненный цикл языка (авторов и реализаторов, «экспертов» и простых пользователей) о происхождении, назначении и использовании этого языка. Другими словами, прагматика компьютерных языков — это человеческие «знания» о компьютерных языках.
Здесь, однако, уместно напомнить, что хотя мы и ведём речь о «знаниях», но на самом деле надо говорить только о представлениях или мнениях (beliefs), т.к. (согласно традиции, восходящей к Платону) знания — это представления о реальности, соответствующие действительности (т.е. истинные представления); «знания» разных людей, вовлечённых в жизненный цикл компьютерного языка, могут быть просто противоречивыми (и, следовательно, не могут соответствовать действительности одновременно).
Тем не менее, описанная интерпретация прагматики компьютерных языков естественно приводит к идее явного использования формальных онтологий для представления прагматики компьютерных языков.
Формальная «онтология — это теория объектов и их связей. Онтология предусматривает критерии для выделения различных типов объектов (конкретных и абстрактных, существующих и несуществующих, реальных и идеальных, зависимых и независимых) и связей между ними (отношений, зависимостей и предшествования)» [19]. Поэтому под онтологией предметной области (прагматики компьютерных языков в том числе) мы будем понимать формальную онтологию, представляющую мнения «экспертов» об объектах этой области, их классах и отношениях между ними. Будем говорить, что онтология задана явно, если она явно представлена в виде графа, вершины которого — объекты онтологии, а дуги — отношения между объектами; в противном случае будем говорить о неявной онтологии. Наиболее известная неявная онтология — это Wikipedia. Наиболее популярный инструмент создания явных онтологий — это платформа Protege
Здесь уместно сформулировать ещё несколько требований к онтологическому представлению прагматики компьютерных языков:это должна быть открытая эволюционирующая темпоральная формальная онтология. Под открытостью мы понимаем доступ для получения данных и внесения изменений без ограничений и привилегий пользователей: любой участник жизненного цикла компьютерного языка может обратиться к онтологии (на правах анонимности или добровольной самоидентификации) с любым допустимым запросом для получения данных, удовлетворяющих запросу, и может добавить любые данные, соответствующие поддерживаемым форматам. Под эволюционностью мы понимаем не только развитие онтологии во времени, но и поддержку историй правок, хронику её развития, так что в любой момент можно получить справку о её состоянии в любой момент в прошлом. И, наконец, темпоральность означает не только наличие штампов времени у правок, но и возможность формулировки запросов с привязкой ко времени и темпоральных конструкций (например «до тех пор пока», «в следующей правке» и так далее). Wikipedia может служить хорошим примером открытой эволюционирующей онтологии, язык запросов к этой неявной онтологии не поддерживает темпоральных конструкций.
История развития программирования в России
- Леонид Федотов
- Информатика
Диплом777
Email: info@diplom777.ru
Phone: +7 (800) 707-84-52
Url: https://diplom777.ru/
Никольская 10
Москва, RU 109012
Содержание
Леонид Федотов
Окончил НИУ ВШЭ факультет компьютерных наук. Сам являюсь кандидатом наук. По специальности работаю 13 лет, за это время создал 8 научных статей и 2 диссертации. В компании подрабатываю в свободное от работы время уже более 5 лет. Нравится помогать школьникам и студентам в решении контрольных работ и написании курсовых проектов. Люблю свою профессию за то, что это направление с каждым годом становится все более востребованным и актуальным.