О принципах реализации технологий информатики

Feb 06, 2024 09:52

Тут собираюсь написать небольшое мемо себе для того, чтобы закрыть гештальт по своим подходам (конечно же не моим, а уже тысячу раз сделанным) к разработке ПО.

Итак, какие принципы должны быть реализованы в ПО?
1. Информатика, как наука занимается двумя задачами:
1.1. Теорией информатики как отдельной дисциплины, которая создаёт теории и реализует на их основе практические инструменты программирования.
1.2. Практическими задачами по автоматизации реальных процессов жизни.
2. Теоретическая информатика должна работать с алгоритмами. Алгоритмы могут быть как императивные, то есть рассказывать средствам ИКТ как делать, так и декларативными, то есть рассказывать средствам ИКТ что делать.
3. Практические задачи должны решаться на основе только декларативного подхода, то есть рассказывать средствам ИКТ что делать. А уже средства ИКТ должны сами подбирать императивные и декларативные алгоритмы для решения задачи.
4. Вследствие пункта 3 разработка информационных систем (ИС) должна вестись аналитиками, которые средствами описания реальных процессов, должны задавать декларативные алгоритмы, которые должны составлять смысл ИС.
5. Декларативные алгоритмы бывают нескольких типов:
5.1. Онтология - схема объектов и связей между ними. Объект - это цифровой двойник объекта реальности, который имитирует работу этого объекта в необходимом для задач ИС объёме.
5.2. Математическое описание - набор соотношений, который описывает вычислительную модель объекта реальности.
5.3. Машина вывода - набор логических правил, которые формальным образом обеспечивают реализацию логики принятия решений.
5.4. Конечный автомат - набор состояний и правил перехода между ними.
5.5. Нейросеть - набор регрессионных функций, которые обеспечивают вывод на основе предварительно установленных путём тренировки коэффициентов регрессии.
6. ИС проектируется, как онтология, которая состоит из объектов, которые представляют собой алгоритмические "чёрные ящики" одного из типов пункта 5, которые связаны между собой каналами связи, через которые объекты обмениваются между собой сообщениями определённого вида.
7. Любая работа ИС всегда начинается в реальном мире и заканчивается в нём же. То есть источником данных в системе могут быть только датчики реального мира, а конечными точками являются актуаторы, которые изменяют что-то в реальном мире.
8. Данные делятся на оперативные и аналитические. Оперативные данные - это текущие транзакции, которые обрабатывает ИС, аналитические данные - это часть оперативных данных, которые должны быть помещены в некоторое хранилище для того, чтобы обеспечить их коммулятивную обработку для целей ИС.
9. Оперативные данные никогда не буферизируются, ИС должна обрабатывать их в темпе их поступления из реального мира и отдавать в реальный мир в том же темпе.
10. Приоритизация - уровень приоритета выполнения задач ИС. Приоритизация всегда работает относительно онтологий, которые начинаются в реальном мире и заканчиваются в нём. Отдельные объекты не приоритизируются.
12. Хранилище аналитических данных - объект ИС, который обеспечивает накопление оперативных данных ИС. В пределе данные в хранилище не должны изменяться, в том числе и удаляться, а должны лишь добавляться. Изменения данных работают путём установления их сроков актуальности, то есть изменения данных являются лишь их временными параметрами актуальности. Таким образом, мы храним всю историю данных, которая привела к текущему состоянию ИС.
13. Аппаратный комплекс представляет собой сеть вычислительных узлов, связанных каналами связи. Процессор построен по принципу транспьютера, имеет набор каналов связи для коммуникаций между процессорами, без стека и команд перехода (проект процессора BIND, систолическая архитектура). Процессор может обладать несколькими уровнями локальной памяти разного типа, скорости и стоимости по иерархии SRAM-DRAM-EEPROM-HDD-Лента-Стекло/Пластик.
14. Каждый узел имеет "стоимость", зависящую от его вычислительной мощности, объема памяти, загруженности и весового коэффициента, учитывающего затраты на его создание и поддержание.
15. Каждый канал связи имеет "стоимость", зависящую от его пропускной способности, загруженности и весового коэффициента, учитывающего затраты на его создание и поддержание.
16. Операционная система обеспечивает запуск процессов в ответ на поступающие сообщения и маршрутизацию сообщений.
17. Операционная система обеспечивает распределение процессов и сообщений по вычислительным узлам, оптимизируя функцию f(cpu,mem,chan) на сетевой топологии с учётом стоимости передачи кода процесса и сообщений на узел.
18. С учётом построения системы, всегда можно точно вычислить необходимое количество памяти для процесса. Необходимое количество времени счёта можно точно вычислить на основе анализа алгоритма.
19. Программный комплекс декларирует несколько типов языков программирования разных уровней по типу МЭК 61131-3.
19.1. Язык ассемблера виртуальной машины.
19.2. Императивный язык программирования для задания базовых частей кода.
19.3. Функциональный язык программирования типа Хаскелл, для задания алгоритмов в функциональном стиле.
19.4. Алгебраический язык программирования для задания алгоритмов в математическом стиле.
19.5. Логический язык программирования для задания алгоритмов как правил логического вывода.
19.6. Диаграмма функциональных блоков - язык задания схем объектов и связей между ними.
19.7. Язык конечных автоматов - язык задания алгоритмов в виде машин состояний.
19.8. Язык проектирование интерфейсов - язык задания форм различного вида в виде шаблонизатора по типу XForms (Orbeon), postsript, TeX|LaTeX.
19.9. DSL - специализированные языки, транслируемые в один из вышеупомянутых, которые реализуют описание конкретной предметной области, позволяя экспертам в этой области работать аналитиками и в значительной степени разработчиками.
20. Языки комплекса компилируются на виртуальную машину, которая работает в каждом узле аппаратного комплекса, что позволяет отвязаться от оборудования. Машина является бесстековой, включает в себя каналы связи для организации IPC на основе обмена сообщениями.
21. Базовое ПО построено на принципах микроядерной архитектуры по типу QNX.

Литература:
1. Стек и очередь - две плохих парадигмы и что можно с этим сделать: escalibur - ЖЖ (livejournal.com)
2. Будущее дизайна веб-систем, попытка прогноза : escalibur - ЖЖ (livejournal.com)
3. Алгоритмы как основа цивилизации: escalibur - ЖЖ (livejournal.com)
4. О стратегии и формате хранения данных в эпоху Hadoop: escalibur - ЖЖ (livejournal.com)
5. О процессорах и языках программирования здорового человека: escalibur - ЖЖ (livejournal.com)
6. О DSL: escalibur - ЖЖ (livejournal.com)
7. Модель акторов - Википедия (wikipedia.org)
8. Конвейер (Unix) - Википедия (wikipedia.org)
9. IEC 61131-3 - Википедия (wikipedia.org)
10. Вычислительные системы с систолической структурой (sbras.ru)

ИКТ, ИИ, ИТ, компьютеры, инженерия

Previous post Next post
Up