Владислав Жаринов писал(а):
Вот да, здесь и хотелось бы в духе сказанного в
этом посте потихоньку формировать систему языков. Отсюда вопросы:
* Можно ли понимать так, что эта система должна включать три класса языков - по одному для нижнего, промежуточного и верхнего уровня? условно говоря - ПРОЛОГ, ЛИСП, Оберон/КП ?
* Следует ли понимать, что реализация системы выглядит как определение хотя бы по одному языку в каждом классе и правил трансляции описания вышележащего уровня в следующий? Т.е. в итоге имеем императивную форму для всей модели (в частности, это м.б. программная реализация)? Или модель каждого уровня ведётся независимо, и высокоуровневые представления имеют отдельные "нижние" реализации, "спускающие управление" при работе реализованной системы по иерархии (ПРОЛОГ-единицы - ЛИСПовским, а те - Обероновским), причём все, ессно, могут иметь вид готовых машинных программ?
* Как должна обобщаться эта архитектура на число уровней, большее 3-х? увеличением числа промежуточных уровней?
Языков может быть больше трёх. Например, специализированные языки, типа SQL или языки/протоколы сетевого взаимодействия/общения... Но если говорить предметно, то есть три базовых класса языков: язык действия (императивные и функциональные языки), язык мысли (логика и...) и язык чувства (искусство). По мере роста систем, программных в том числе, мы постепенно переходим ко второй группе языков. Большие системы (3+) стоят дорого и способствуют решению жизненно важных задач, поэтому содержат не только действующие элементы, но и элементы самоконтроля (контроль собственного
состояния) и контроля
состояния внешней/окружающей среды. Здесь без логики не обойтись. Если на начальном этапе развития достаточно просто знать своё состояние и состояние внешней среды, то потом потребуется контролировать динамику изменения состояний, соответствие (внутреннего и внешнего), частоту смены состояний (внутри и вовне), скорость переходных процессов, установление причин и следствий изменений и т.д. и т.п. Другими словами, системы должны будут научиться чувствовать, а затем и пред-чувствовать. И для передачи чувственных образов потребуются развитые языки, точно также, как языки нужны для передачи мыслей и действий. Если кто-то думает, что разные сферы искусства появились "сами собой"... "случайно", то отнюдь... И науки появились совершенно закономерно, как и полезная (индивидуальная и совместная) деятельность людей. Но это так... повод к размышлению.
Для современных систем (3+) достаточно двух базовых языковых классов (деятельность + зачатки логики).
Каждый уровень системы независим от других уровней в плане своего создания и развития. Можно провести аналогию... Есть чипмейкеры (создатели элементной базы), а есть те, кто пишет операционные системы (ОС) для работы с "железом". Но очередная версия операционной системы следует за пожеланиями пользователей, а не за новыми чипами. Совместимость чипов с новой ОС определяется протоколами/интерфейсами, на основе которых создаются драйвера. Пока уровень развития недостаточно высок, что приводит к различным коллизиям при взаимодействии устройств и ОС. Но по мере развития, вопросами согласования будут заниматься отдельные органы стандартизации, которые принимают и утверждают протоколы взаимодействия, и контролируют их исполнение. Чипмейкеры успешно продвигают эту модель, в отличие от производителей ОС. Но подвижки есть.
Независимость уровней систем, открытость/доступность описаний интерфейсов - это залог успешного (быстрого, экономичного - эффективного) развития систем. И, наоборот, закрытость интерфейсов, связность уровней - это залог их краха. В свою очередь, независимость уровней + открытость интерфейсов открывает перед разработчиками перспективу в свободе выбора средств реализации любого уровня (эффективность разработки и реализации при установленных/заданных параметрах качества). Моноязычные системы - это нонсенс... в перспективе.
Промежуточные уровни не должны появляться, это ломает архитектуру системы (возможно, речь идёт о
подуровнях). Подуровни не имеют своего интерфейса, они должны соответствовать интерфейсу своего уровня. Введение подуровней - это нормальный процесс внутреннего развития уровня. А рост самой системы может быть только вверх (и иногда в процессе проектирования - вниз, за счёт дополнительной декомпозиции). В свою очередь, рост вверх, означает появление новых целей и задач, т.е. вычленения из внешней среды новых функций и... ресурсов.