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


