Files
obsidian/Computer Science/Вычислительные системы/Модель вычислений.md
T
roma-dxunvrs fec7f50b3e
deploy / Pull and Restart (push) Successful in 16s
02.10.26
2026-10-02 22:58:53 +03:00

82 lines
5.6 KiB
Markdown

MoC - Model of Computation
1. MoC предоставляет язык для описания моделей процессов/программ/структур
2. MoC определяет возможности вычислительной машины
3. MoC характеризует, как исполняется модель (программа): возможные состояния вычислителя, их последовательность, правила переходов (детерменированные или нет)
4. MoC, обычно, минималистичны относительно реальных вычислителей
## Последовательные модели
Sequential models
Относительно просто реализуются в виде аппаратных схем
### Конечные автоматы
![](../../Attachments/FSM.png)
Несколько наборов состояний системы и условия переходов между ними
#### Автомат с магазинной памятью
![](../../Attachments/Автомат%20с%20магазинной%20памятью.png)
Например, парсеры
#### Достоинства
- Таблица состояний
- Верифицируемость переходов
- Простая реализация в схемотехнике и ПО
### Машина Тьюринга
Включает:
- Неограниченную двустороннюю ленту, разделенную на ячейки
- Устройство управления (головка записи-чтения), которое может находиться в конечном числе состояний
Управляющее устройство может:
- Перемещаться по ленте влево и вправо
- Читать и записывать в ячейки символы конечного алфавита
Машина Тьюринга
1. Не может быть реализована на практике (нет бесконечной ленты)
2. Обладает полнотой по Тьюрингу (можно реализовать любой известный алгоритм)
3. Проблема остановки
4. Данные и управление отделены
5. Ориентирована на реализацию
### Random Access Machine
![](../../Attachments/RAM.png)
## Функциональные модели
Functional models
Представление вычислительного процесса как совокупности символов и правил их преобразований
1. Арифметика
2. Лямбда исчисление (полнота по Тьюрингу)
3. Combinatory logic
4. General recursive functions
5. Abstract rewriting systems
Программа/данные - математический объект
Возможна Тьюринг неполнота
### Лямбда исчисление
#### 4 вида выражений
1. Переменная: $x, y\ \text{и} \ z$
2. Константа: $a,b,c$
3. Коминация (вызов): $s\ t$
4. Абстракция: $\lambda x.s$
#### 3 вида редукций/подстановки
1. Переименование переменных: $\lambda u.u\ v \xrightarrow{\alpha} \lambda w.w\ v$
2. Применение функции (подстановка аргумента): $(\lambda x.s)\ t \xrightarrow{\beta} s[t/x]$
3. Сокращение аргумента: $\lambda u.v\ u \xrightarrow{\eta} v$
## Параллельные модели
Системы, включающие несколько взаимодействующих процессов
- Kahn process networks - однонаправленные каналы с неограниченными буферами (+- как в гошке)
- Actor model - отправка сообщений в "почтовые ящики" (как в Erlang)
- Discrete Event - события в заданные моменты времени (цифровые схемы)
- Multi-Thread Model - общая память (как в джаве)
- Synchronous Data Flow - синхронизированные потоки данных
## Близкие понятия
### Парадигмы программирования
Способ классификации языков программирования на основе их функций. Языки могут относиться к нескольким парадигмам
### Стиль программирования
Это набор правил или рекомендации, используемых при написании исходного кода компьютерной программы
## Применение на практике
1. Computer Science. Формальные модели
2. Дизайн ЯПов
3. Ограничение творческого порыва, контроль сложности
4. Модель-ориентированная инженерия
## Model-Driven Engineering
1. Разработка через моделирование предметной области
2. Автоматическая генерация кода из моделей
3. Повышение уровня абстракции при разработке
4. Сокращение разрыва между требованиями и реализацией
5. Улучшение коммуникации между заинтересованными сторонами
6. Снижение сложности разработки масштабных систем