From 365256ed477e6ace3d57321a608289054e3bcd35 Mon Sep 17 00:00:00 2001 From: LeterZP Date: Thu, 1 Oct 2026 23:44:56 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D0=B8=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B3=D0=BE=D0=BB=D0=BE=D0=B2=D0=BA=D0=B8=20=D0=B2?= =?UTF-8?q?=D0=BD=D1=83=D1=82=D1=80=D0=B8=20=D1=84=D0=B0=D0=B9=D0=BB=D0=BE?= =?UTF-8?q?=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Еще не компьютеры. Реле.md | 58 ++++++------- ...½формационные и управляющие системы. Понятия системы и архитектуры.md | 66 +++++++-------- .../Общие стандарты и протоколы сети Интернет.md | 82 +++++++++---------- .../Вероятностное пространство.md | 16 ++-- .../Условные вероятности. Независимость.md | 14 ++-- .../Парадигмы и машинная модель вычислений.md | 32 ++++---- .../Формальные грамматики и теория автоматов.md | 54 ++++++------ 7 files changed, 161 insertions(+), 161 deletions(-) diff --git a/2 курс/Архитектура компьютера/Еще не компьютеры. Реле.md b/2 курс/Архитектура компьютера/Еще не компьютеры. Реле.md index b30ee08..d9fda25 100644 --- a/2 курс/Архитектура компьютера/Еще не компьютеры. Реле.md +++ b/2 курс/Архитектура компьютера/Еще не компьютеры. Реле.md @@ -1,32 +1,32 @@ ## Содержание -- [Решение задач компьютеров без компьютеров](#Решение%20задач%20компьютеров%20без%20компьютеров) - - [Отдельные операции](#Отдельные%20операции) - - [Таблицы значений](#Таблицы%20значений) - - [Устройства](#Устройства) - - [Механизмы](#Механизмы) - - [Сравнение устройств и механизмов](#Сравнение%20устройств%20и%20механизмов) - - [Современность](#Современность) - - [Информационные системы](#Информационные%20системы) - - [Эффективное решение](#Эффективное%20решение) - - [Достоинства](#Достоинства) - - [Практика](#Практика) - - [Системы управления](#Системы%20управления) - - [Жаккард](#Жаккард) - - [Проблема создания станка](#Проблема%20создания%20станка) - - [Жаккардовый ткацкий станок](#Жаккардовый%20ткацкий%20станок) - - [Программное обеспечение](#Программное%20обеспечение) - - [Другие примеры](#Другие%20примеры) - - [Поиск кратчайшего пути на взвешенном графе](#Поиск%20кратчайшего%20пути%20на%20взвешенном%20графе) - - [Задача коммивояжера](#Задача%20коммивояжера) - - [Приставка Dendy и пистолет](#Приставка%20Dendy%20и%20пистолет) -- [Реле и релейные диаграммы](#Реле%20и%20релейные%20диаграммы) - - [Электрическое реле](#Электрическое%20реле) - - [Релейная диаграмма](#Релейная%20диаграмма) - - [Управление двигателем](#Управление%20двигателем) - - [Практика применения реле](#Практика%20применения%20реле) - - [Реле и состояние](#Реле%20и%20состояние) - - [RS-триггер](#RS-триггер) - - [От реле к транзистору](#От%20реле%20к%20транзистору) +- [[#Решение задач компьютеров без компьютеров]] + - [[#Отдельные операции]] + - [[#Таблицы значений]] + - [[#Устройства]] + - [[#Механизмы]] + - [[#Сравнение устройств и механизмов]] + - [[#Современность]] + - [[#Информационные системы]] + - [[#Эффективное решение]] + - [[#Достоинства]] + - [[#Практика]] + - [[#Системы управления]] + - [[#Жаккард]] + - [[#Проблема создания станка]] + - [[#Жаккардовый ткацкий станок]] + - [[#Программное обеспечение]] + - [[#Другие примеры]] + - [[#Поиск кратчайшего пути на взвешенном графе]] + - [[#Задача коммивояжера]] + - [[#Приставка Dendy и пистолет]] +- [[#Реле и релейные диаграммы]] + - [[#Электрическое реле]] + - [[#Релейная диаграмма]] + - [[#Управление двигателем]] + - [[#Практика применения реле]] + - [[#Реле и состояние]] + - [[#RS-триггер]] + - [[#От реле к транзистору]] ## Решение задач компьютеров без компьютеров Несмотря на то, что сейчас компьютеры являются неотъемлемой частью нашей жизни, основные задачи, которые они решают, схожи с задачами, которые ставились еще несколько столетий назад. И все же, люди в прошлом такие задачи решали даже без компьютеров. @@ -34,7 +34,7 @@ Еще до создания компьютеров существовали примитивные вычислительные алгоритмы. Такие с одной стороны простые, но в тоже время сложные, алгоритмы могли выполнять те же задачи без электрических схем и компьютеров, используя при этом различные способы. ### Отдельные операции -Самым примитивным методом для вычисления являются простейшие устройства, способные вычислять заранее заданные функции для заранее заданных параметрах (обычно такое задание включает либо точное количество используемых значений, либо какой-то промежуток значений). Но даже они не оставались неизменными со временем - из изначального вычисления с помощью дискретных и цифровых величин ([таблиц](#Таблицы%20значений)) осуществлялся постепенный переход к аналоговым [устройствам](#Устройства), а позже возвращение обратно к цифровым [механизмам](#Механизмы). +Самым примитивным методом для вычисления являются простейшие устройства, способные вычислять заранее заданные функции для заранее заданных параметрах (обычно такое задание включает либо точное количество используемых значений, либо какой-то промежуток значений). Но даже они не оставались неизменными со временем - из изначального вычисления с помощью дискретных и цифровых величин ([[#Таблицы%20значений|таблиц]])) осуществлялся постепенный переход к аналоговым [[#Устройства|устройствам]]), а позже возвращение обратно к цифровым [[#Механизмы|механизмам]]. #### Таблицы значений Таблицы значений отражают в себе какую-то зависимость, которую можно представить в виде математической функции. diff --git a/2 курс/Архитектура компьютера/Информационные и управляющие системы. Понятия системы и архитектуры.md b/2 курс/Архитектура компьютера/Информационные и управляющие системы. Понятия системы и архитектуры.md index b918c59..94c528a 100644 --- a/2 курс/Архитектура компьютера/Информационные и управляющие системы. Понятия системы и архитектуры.md +++ b/2 курс/Архитектура компьютера/Информационные и управляющие системы. Понятия системы и архитектуры.md @@ -1,28 +1,28 @@ ## Содержание -- [Компьютерные системы](#Компьютерные%20системы) - - [Системы с преобладающей программной составляющей](#Системы%20с%20преобладающей%20программной%20составляющей) - - [Классификация компьютерных систем](#Классификация%20компьютерных%20систем) - - [Информационные системы](#Информационные%20системы) - - [Управляющие системы](#Управляющие%20системы) -- [Система. Системная инженерия](#Система.%20Системная%20инженерия) - - [Системная инженерия](#Системная%20инженерия) - - [Понятие системы](#Понятие%20системы) - - [Система как совокупность частей](#Система%20как%20совокупность%20частей) - - [Система как функциональное место](#Система%20как%20функциональное%20место) - - [Операционное окружение](#Операционное%20окружение) - - [Представление и точка зрения](#Представление%20и%20точка%20зрения) - - [Система как жизненный цикл](#Система%20как%20жизненный%20цикл) - - [Обеспечивающие системы](#Обеспечивающие%20системы) - - [Требования для разработки успешной системы](#Требования%20для%20разработки%20успешной%20системы) - - [Архитектура](#Архитектура) - - [Классическое определение архитектуры](#Классическое%20определение%20архитектуры) - - [Определение архитектуры в системной инженерии](#Определение%20архитектуры%20в%20системной%20инженерии) - - [Сущностные определения системы](#Сущностные%20определения%20системы) - - [Проблема коммуникации при разработке компьютерных систем](#Проблема%20коммуникации%20при%20разработке%20компьютерных%20систем) - - [Причины важности архитектуры](#Причины%20важности%20архитектуры) - - [Риск откладывания управления рисками](#Риск%20откладывания%20управления%20рисками) - - [V-диаграмма](#V-диаграмма) - - [Эффект архитектурного проектирования](#Эффект%20архитектурного%20проектирования) +- [[#Компьютерные системы]] + - [[#Системы с преобладающей программной составляющей]] + - [[#Классификация компьютерных систем]] + - [[#Информационные системы]] + - [[#Управляющие системы]] +- [[#Система. Системная инженерия]] + - [[#Системная инженерия]] + - [[#Понятие системы]] + - [[#Система как совокупность частей]] + - [[#Система как функциональное место]] + - [[#Операционное окружение]] + - [[#Представление и точка зрения]] + - [[#Система как жизненный цикл]] + - [[#Обеспечивающие системы]] + - [[#Требования для разработки успешной системы]] + - [[#Архитектура]] + - [[#Классическое определение архитектуры]] + - [[#Определение архитектуры в системной инженерии]] + - [[#Сущностные определения системы]] + - [[#Проблема коммуникации при разработке компьютерных систем]] + - [[#Причины важности архитектуры]] + - [[#Риск откладывания управления рисками]] + - [[#V-диаграмма]] + - [[#Эффект архитектурного проектирования]] ## Компьютерные системы @@ -32,7 +32,7 @@ На самом деле, это довольно общее определение, и в современном понятие компьютерных систем определяется намного строже. Иногда бывают случаи, когда очень сложно определить, является ли что-либо компьютерной системой или нет. -В стандартных компьютерных системах в основном [преобладает программная составляющая](#Системы%20с%20преобладающей%20программной%20составляющей). +В стандартных компьютерных системах в основном [[#Системы с преобладающей программной составляющей|преобладает программная составляющая]]. ### Системы с преобладающей программной составляющей >**Software-intensive systems** are systems in which software development and/or integration are dominant considerations. This includes computer-based systems ranging from individual software applications, information systems, embedded systems, software product lines and product families and systems-of-systems --- [ISO/IEC/IEEE 42010](https://en.wikipedia.org/wiki/ISO/IEC_42010). (*Системы с преобладающей программной составляющей - это такие системы, в которых основной упор делается на разработку и/или внедрение программного обеспечения. Это включает в себя такие компьютерные системы, как отдельное программное обеспечение, информационные системы, встроенные системы, линейки и семейства программного обеспечения и системы систем.*) @@ -40,7 +40,7 @@ В настоящее время такие системы преобладают. В современном мире около половины стоимости всей разработки какого-либо оборудования уходит на разработку программного обеспечения. ### Классификация компьютерных систем -В основе своей, вся [вычислительная техника](Вычислительные%20платформы.md) создана для того, чтобы либо быстро обрабатывать данные - [информационные системы](#Информационные%20системы), либо точно управлять данными - [управляющие системы](#Управляющие%20системы). Оба этих класса обладают разными требованиями к своим составляющим, и это в конечном итоге выливается в различие между внутренней составляющей таких систем. +В основе своей, вся [вычислительная техника](Вычислительные%20платформы.md) создана для того, чтобы либо быстро обрабатывать данные - [[#Информационные системы|информационные системы]], либо точно управлять данными - [[#Управляющие системы|управляющие системы]]. Оба этих класса обладают разными требованиями к своим составляющим, и это в конечном итоге выливается в различие между внутренней составляющей таких систем. #### Информационные системы Основная цель информационных систем - получить данные, преобразовать или накопить их каким-либо образом, и выдать их в измененном или обработанном виде. Приоритетом таких систем всегда является экономия времени и скорость обработки данных, и даже не важно насколько - даже если можно сэкономить одну лишнюю миллисекунду, это нужно сделать (если можно быстрее, то нужно быстрее). @@ -72,7 +72,7 @@ Отсюда вытекает и роль системной инженерии. Системный инженер способен взаимодействовать с покупателем (заказчиком), понимая и анализируя его требования, передавая эти требования в нужном виде команде разработчиков для внедрения, а также поддерживая всю систему на протяжении всего ее жизненного цикла. Системная инженерия фокусируется на том, чтобы удостоверится в достижении целей и задач системы связыванием всех ее частей воедино. ### Понятие системы -Понятие системы можно рассматривать с трех разных точек зрения. С одной стороны, система - это [совокупность частей](#Система%20как%20совокупность%20частей) (различные небольшие элементы образуют полноценную систему). С другой, система - это [функциональное место](#Система%20как%20функциональное%20место) (система - это место, откуда мы получаем результат, и не важно, что происходит внутри этой системы). С третьей, система - это [жизненный цикл](#Система%20как%20жизненный%20цикл) (то, как система рождается и умирает). +Понятие системы можно рассматривать с трех разных точек зрения. С одной стороны, система - это [[#Система как совокупность частей|совокупность частей]] (различные небольшие элементы образуют полноценную систему). С другой, система - это [[#Система как функциональное место|функциональное место]] (система - это место, откуда мы получаем результат, и не важно, что происходит внутри этой системы). С третьей, система - это [[#Система как жизненный цикл|жизненный цикл]] (то, как система рождается и умирает). #### Система как совокупность частей Система - это комбинация взаимодействующих между собой элементов, организованных для достижения одной или нескольких установленных целей. Такую систему можно рассматривать как готовый продукт или услугу, которую она предоставляет. @@ -129,16 +129,16 @@ ### Требования для разработки успешной системы Разработка успешной системы требует -1. рассмотрения ее [структуры](#Система%20как%20совокупность%20частей) -2. рассмотрения ее [функционального места](#Система%20как%20функциональное%20место) -3. рассмотрения ее [операционного окружения](#Операционное%20окружение) -4. рассмотрения ее [жизненного цикла](#Система%20как%20жизненный%20цикл) -5. рассмотрения ее [обеспечивающих систем](#Обеспечивающие%20системы) +1. рассмотрения ее [[#Система как совокупность частей|структуры]] +2. рассмотрения ее [[#Система как функциональное место|функционального места]] +3. рассмотрения ее [[#Операционное окружение|операционного окружения]] +4. рассмотрения ее [[#Система как жизненный цикл|жизненного цикла]] +5. рассмотрения ее [[#Обеспечивающие системы|обеспечивающих систем]] Аналогичные результаты были получены в ряде других исследований, и такой же вывод можно найти, к примеру, в [OMG Essence](https://www.omg.org/spec/Essence/1.2) (стандарт задающий общее ядро понятий для описания, сравнения и разработки ПО) или в [СМД-методологии](https://web.archive.org/web/20220409190315/https://ru.wikipedia.org/wiki/СМД-методология) (системомыследеятельностный подход по Г. П. Щедровицкому). ### Архитектура -При разработке компьютерных систем часто возникают [проблемы коммуникации](#Проблема%20коммуникации%20при%20разработке%20компьютерных%20систем). Одной из основных причин возникновения таких проблем является взгляд на систему только с какой-то одной [точки зрения](#Представление%20и%20точка%20зрения). Из-за этого становится важным навык видеть все вопросы и проблемы, возникающие при разработке. Как говорил [Барри Боэм](https://ru.wikipedia.org/wiki/Боэм,_Барри) (Barry W. Boehm): "Poor management can increase software costs more rapidly than any other factor. (*Плохой менеджмент может увеличить стоимость программного обеспечения намного стремительнее, чем любой другой фактор.*)". Именно поэтому при разработке очень важна архитектура. +При разработке компьютерных систем часто возникают [[#Проблема коммуникации при разработке компьютерных систем|проблемы коммуникации]]. Одной из основных причин возникновения таких проблем является взгляд на систему только с какой-то одной [[#Представление и точка зрения|точки зрения]]. Из-за этого становится важным навык видеть все вопросы и проблемы, возникающие при разработке. Как говорил [Барри Боэм](https://ru.wikipedia.org/wiki/Боэм,_Барри) (Barry W. Boehm): "Poor management can increase software costs more rapidly than any other factor. (*Плохой менеджмент может увеличить стоимость программного обеспечения намного стремительнее, чем любой другой фактор.*)". Именно поэтому при разработке очень важна архитектура. >**Архитектура** - формальный способ зафиксировать множественность точек зрения на систему и передать ее другим. diff --git a/2 курс/Веб-программирование/Общие стандарты и протоколы сети Интернет.md b/2 курс/Веб-программирование/Общие стандарты и протоколы сети Интернет.md index 6bd18c9..dfb353a 100644 --- a/2 курс/Веб-программирование/Общие стандарты и протоколы сети Интернет.md +++ b/2 курс/Веб-программирование/Общие стандарты и протоколы сети Интернет.md @@ -1,53 +1,53 @@ ## Содержание -- [Введение](#Введение) -- [Клиент-серверное взаимодействие. Протокол HTTP](#Клиент-серверное%20взаимодействие.%20Протокол%20HTTP) - - [HTTP](#HTTP) - - [Структура запроса HTTP](#Структура%20запроса%20HTTP) - - [Структура ответа HTTP](#Структура%20ответа%20HTTP) - - [Методы HTTP](#Методы%20HTTP) - - [Коды состояния](#Коды%20состояния) - - [Заголовки HTTP](#Заголовки%20HTTP) - - [Кеширование](#Кеширование) - - [URI, URN и URL](#URI,%20URN%20и%20URL) - - [REST](#REST) -- [Разметка страниц. Язык HTML](#Разметка%20страниц.%20Язык%20HTML) - - [HTML](#HTML) - - [Структура HTML-документа](#Структура%20HTML-документа) - - [HTML-формы](#HTML-формы) - - [HTML5](#HTML5) - - [Браузер](#Браузер) - - [DOM](#DOM) -- [Стилизация страниц. Основы CSS](#Стилизация%20страниц.%20Основы%20CSS) - - [CSS](#CSS) - - [Источники CSS](#Источники%20CSS) - - [Структура CSS](#Структура%20CSS) - - [Приоритеты стилей](#Приоритеты%20стилей) - - [LESS & Sass / SCSS](#LESS%20&%20Sass%20/%20SCSS) - - [LESS](#LESS) - - [Sass](#Sass) - - [SCSS](#SCSS) +- [[#Введение]] +- [[#Клиент-серверное взаимодействие. Протокол HTTP]] + - [[#HTTP]] + - [[#Структура запроса HTTP]] + - [[#Структура ответа HTTP]] + - [[#Методы HTTP]] + - [[#Коды состояния]] + - [[#Заголовки HTTP]] + - [[#Кеширование]] + - [[#URI, URN и URL]] + - [[#REST]] +- [[#Разметка страниц. Язык HTML]] + - [[#HTML]] + - [[#Структура HTML-документа]] + - [[#HTML-формы]] + - [[#HTML5]] + - [[#Браузер]] + - [[#DOM]] +- [[#Стилизация страниц. Основы CSS]] + - [[#CSS]] + - [[#Источники CSS]] + - [[#Структура CSS]] + - [[#Приоритеты стилей]] + - [[#LESS & Sass / SCSS]] + - [[#LESS]] + - [[#Sass]] + - [[#SCSS]] ## Введение В основном все держится на 4 вещах: -- [Hypertext Transfer Protocol (HTTP)](#Клиент-серверное%20взаимодействие.%20Протокол%20HTTP) - предназначен для передачи гипертекста между клиентом и сервером -- [Hypertext Markup Language (HTML)](#Разметка%20страниц.%20Язык%20HTML) - язык разметки гипертекста -- [Cascade StyleSheets (CSS)](#Стилизация%20страниц.%20Основы%20CSS) - язык описания внешнего вида HTML-документов +- [[#Клиент-серверное взаимодействие. Протокол HTTP|Hypertext Transfer Protocol (HTTP)]] - предназначен для передачи гипертекста между клиентом и сервером +- [[#Разметка страниц. Язык HTML|Hypertext Markup Language (HTML)]] - язык разметки гипертекста +- [[#Стилизация страниц. Основы CSS|Cascade StyleSheets (CSS)]] - язык описания внешнего вида HTML-документов - JavaScript - язык для написания динамических сценариев, выполняемых на стороне клиента ## Клиент-серверное взаимодействие. Протокол HTTP ### HTTP -Сам по себе HTTP - протокол прикладного уровня. В его основе лежит технология "клиент-сервер". Он может использоваться в качестве "транспорта" для других протоколов прикладного уровня. Основной объект манипуляций этого протокола - ресурс, на который указывает [URI](#URI,%20URN%20и%20URL). Обмен сообщениями в этом протоколе идет по схеме "запрос-ответ". Сам по себе протокол не сохраняет состояние (stateless-протокол), поэтому для реализации сессий используется cookies. +Сам по себе HTTP - протокол прикладного уровня. В его основе лежит технология "клиент-сервер". Он может использоваться в качестве "транспорта" для других протоколов прикладного уровня. Основной объект манипуляций этого протокола - ресурс, на который указывает [[#URI, URN и URL|URI]]. Обмен сообщениями в этом протоколе идет по схеме "запрос-ответ". Сам по себе протокол не сохраняет состояние (stateless-протокол), поэтому для реализации сессий используется cookies. #### Структура запроса HTTP -Первая строка запроса HTTP является стартовой, в ней содержится основное описание необходимого действия (команда). При ее составлении через пробел указывают три основные для протокола вещи: [метод](#Методы%20HTTP), [URI](#URI,%20URN%20и%20URL) и версию протокола HTTP (в формате HTTP/Версия). +Первая строка запроса HTTP является стартовой, в ней содержится основное описание необходимого действия (команда). При ее составлении через пробел указывают три основные для протокола вещи: [[#Методы HTTP|метод]], [[#URI, URN и URL|URI]] и версию протокола HTTP (в формате HTTP/Версия). -За первой строкой следует следующий раздел - заголовки. Этот раздел содержит, как ни странно, [заголовки](#Заголовки%20HTTP). +За первой строкой следует следующий раздел - заголовки. Этот раздел содержит, как ни странно, [[#Заголовки HTTP|заголовки]]. Последним разделом запроса является тело (или сущность) сообщения. Чаще всего в запросе тело остается пустым. В теле сообщения может находится что угодно, что необходимо передать с помощью протокола на другую сторону. Вся информация о теле, необходимая другой стороне, должна быть указана в заголовках. #### Структура ответа HTTP -Ответ мало чем отличается от [запроса](#Структура%20запроса%20HTTP). Единственным отличием является стартовая строка. Эта строка составляется тем же образом, что и стартовая строка запроса, перечисляя через пробел основную информацию запроса: версию протокола HTTP (в формате HTTP/Версия), [код состояния](#Код%20состояния) и пояснение кода состояния. По сути, в пояснении можно указать что угодно, но лучше придерживаться стандартных шаблонов сообщений. +Ответ мало чем отличается от [[#Структура запроса HTTP|запроса]]. Единственным отличием является стартовая строка. Эта строка составляется тем же образом, что и стартовая строка запроса, перечисляя через пробел основную информацию запроса: версию протокола HTTP (в формате HTTP/Версия), [[#Код состояния|код состояния]] и пояснение кода состояния. По сути, в пояснении можно указать что угодно, но лучше придерживаться стандартных шаблонов сообщений. #### Методы HTTP Методов HTTP довольно много, поэтому перечислим только используемые чаще всего. @@ -55,7 +55,7 @@ - GET - получение данных с ресурса (запрос содержимого ресурса) - HEAD - аналог GET, но в ответе не передается (отсутствует) тело - POST - передача данных ресурсу -- PUT - загрузка содержимого запроса на указанный [URI](#URI,%20URN%20и%20URL) +- PUT - загрузка содержимого запроса на указанный [[#URI, URN и URL|URI]] - DELETE - удаление данных с сервера #### Коды состояния @@ -89,7 +89,7 @@ > **REST (Representation State Transformer)** - передача состояния представления - подход к архитектуре сетевых протоколов, обеспечивающих доступ к информационным ресурсам. Он описывает взаимодействие между клиентом и сервером, а также между front-end и back-end частями. Основные концепции REST: -- данные должны передаваться в виде небольшого числа стандартных форматов (к примеру, [HTML](#HTML), [XML](https://ru.wikipedia.org/wiki/XML?ysclid=mu8vgeju1m2168967), [JSON](https://ru.wikipedia.org/wiki/JSON?ysclid=mu8vgmwdcz833033530)) +- данные должны передаваться в виде небольшого числа стандартных форматов (к примеру, [[#HTML]], [XML](https://ru.wikipedia.org/wiki/XML?ysclid=mu8vgeju1m2168967), [JSON](https://ru.wikipedia.org/wiki/JSON?ysclid=mu8vgmwdcz833033530)) - сетевой протокол должен поддерживать кеширование, не должен зависеть от сетевого слоя, не должен сохранять информацию о состоянии между парами "запрос-ответ" Существует подход, противоположный REST, который основан на вызове удаленных процедур (RPC - Remote Process Call). @@ -99,31 +99,31 @@ >**HyperText Markup Language** (HTML) - стандартный декларативный язык разметки документов в интернете. -В основном, он интерпретируется [браузером](#Браузер) и отображается в виде документа. Изначально, он являлся частным случаем SGML (стандартного обобщенного языка разметки). +В основном, он интерпретируется [[#Браузер|браузером]] и отображается в виде документа. Изначально, он являлся частным случаем SGML (стандартного обобщенного языка разметки). Этот язык был разработан [Тимом Бернерсом-Ли](https://ru.wikipedia.org/wiki/Бернерс-Ли,_Тим?ysclid=mu8uowzcj46005688) в 1989-1991 годах. #### Структура HTML-документа -В начале документа всегда находится строка с объявлением версии HTML. Хотя чаще всего для версии [HTML5](#HTML5) это правило игнорируется, так как такой стандарт используется неявно. +В начале документа всегда находится строка с объявлением версии HTML. Хотя чаще всего для версии [[#HTML5]] это правило игнорируется, так как такой стандарт используется неявно. По синтаксису он очень напоминает [XML](https://ru.wikipedia.org/wiki/XML?ysclid=mu8urdj3jm497572817), и даже существует отдельная нотация [XHTML](https://ru.wikipedia.org/wiki/XHTML?ysclid=mu8urty7p0976864513), которая является частным случаем этого языка. В частности, документ также состоит в основном из элементов, начало и конец которых обозначаются тегами. Теги однозначно определяют закрытие или открытие того или иного элемента. Это позволяет вкладывать теги друг в друга, при этом сохраняя строгую структуру. В то же время теги могут быть одинарными (или пустыми) - то есть только открываться, не закрываясь. Также теги могут содержать атрибуты - специальные переменные, указанные в открывающем теге. Начало и конец документа обозначаются специальными тегами. Внутри этих тегов должны находится два других тега, которые определяют заголовок и тело документа соответственно. -В заголовке чаще всего указывают, помимо самого заголовка, мета-информацию и различные необходимые для работы сайта файлы, к примеру файлы [css](#Стилизация%20страниц.%20Основы%20CSS) или js. +В заголовке чаще всего указывают, помимо самого заголовка, мета-информацию и различные необходимые для работы сайта файлы, к примеру файлы [[#Стилизация страниц. Основы CSS|css]] или js. #### HTML-формы Основное предназначение форм - обмен данными между пользователем и сервером. Приятной особенностью таких форм является то, что они могут работать без JavaScript. Сам HTML-документ может содержать любое число форм, но на сервер одновременно может быть отправлена только одна. При этом вложенные формы запрещены. -Границы формы в документе, как и границы любого другого элемента, задаются тегами. В атрибутах формы можно отдельно указать [метод HTTP](#Методы%20HTTP) и ссылку, куда отправляется форма. При этом в конце формы обязательно должна находится отдельная кнопка для ее отправки. +Границы формы в документе, как и границы любого другого элемента, задаются тегами. В атрибутах формы можно отдельно указать [[#Методы HTTP|метод HTTP]] и ссылку, куда отправляется форма. При этом в конце формы обязательно должна находится отдельная кнопка для ее отправки. #### HTML5 HTML5 - как следует из названия, пятая версия спецификации языка HTML. Стандарт такого языка был принят в 2014 году (в то время как HTML4 - в 1999 году). -Конечно, за это время в язык добавили много новых синтаксических особенностей. В первую очередь, изменения были внесены для более удобного управления мультимедийным содержимым страницы. Это включает в себя добавление таких тегов, как аудио и видео. Несмотря на то, что они сами по себе достаточно просты (в них присутствует всего три кнопки - старт, стоп и перемотка), они универсальны и работают на любом [браузере](#Браузер). +Конечно, за это время в язык добавили много новых синтаксических особенностей. В первую очередь, изменения были внесены для более удобного управления мультимедийным содержимым страницы. Это включает в себя добавление таких тегов, как аудио и видео. Несмотря на то, что они сами по себе достаточно просты (в них присутствует всего три кнопки - старт, стоп и перемотка), они универсальны и работают на любом [[#Браузер|браузере]]. Помимо этого были добавлены новые семантические теги - замена для стандартных и универсальных. В основном они редко где используются, но иногда могут помочь в решении проблем доступности (к примеру, для слепых) или для более точного пояснения к содержимому тега. diff --git a/2 курс/Теория вероятностей/Вероятностное пространство.md b/2 курс/Теория вероятностей/Вероятностное пространство.md index 72cb1ac..9ec094a 100644 --- a/2 курс/Теория вероятностей/Вероятностное пространство.md +++ b/2 курс/Теория вероятностей/Вероятностное пространство.md @@ -1,9 +1,9 @@ ## Содержание -- [Случайные события. Статическая вероятность](#Случайные%20события.%20Статическая%20вероятность) -- [События](#События) -- [Вероятность](#Вероятность) -- [Дискретное вероятностное пространство](#Дискретное%20вероятностное%20пространство) -- [Геометрические вероятности](#Геометрические%20вероятности) +- [[#Случайные события. Статическая вероятность]] +- [[#События]] +- [[#Вероятность]] +- [[#Дискретное вероятностное пространство]] +- [[#Геометрические вероятности]] ## Случайные события. Статическая вероятность @@ -58,7 +58,7 @@ >**Измеримое пространство** - пара ($\Omega, \mathcal{F}$), состоящая из множества $\Omega$ и $\sigma$-алгебры $\mathcal{F}$ подмножеств $\Omega$. ## Вероятность -Далее будем использовать такие понятия, как [алгебра](#События), [событие](#События), [измеримое пространство](#События). +Далее будем использовать такие понятия, как [[#События|алгебра]], [[#События|событие]], [[#События|измеримое пространство]]. >**Мера** - числовая функция $\mu : \mathcal{F} \to \mathbb{R}$, заданная на $\sigma$-алгебре событий $\mathcal{F}$, удовлетворяющая условиям > 1) $\mu(\varnothing) = 0$ @@ -101,7 +101,7 @@ >***Теорема***. Система аксиом P1), P2), P3), P4) равносильна системе аксиом P1), P2), P3*). ## Дискретное вероятностное пространство -Далее будем использовать такие понятия, как [вероятностное пространство](#Вероятность). +Далее будем использовать такие понятия, как [[#Вероятность|вероятностное пространство]]. >**Конечное вероятностное пространство** - вероятностное пространство, построенное следующим образом. Пусть $\Omega$ = $\{ \omega_1, \dots, \omega_n \}$ - конечное множество, $\mathcal{A}$ - алгебра всех подмножеств множества $\Omega$ (так как $\Omega$ конечно, то $\mathcal{A}$ - $\sigma$-алгебра), $p_i, i = 1, \dots, n$ - положительные числа, $\sum\limits_{i=1}^{n} p_i = 1$. Для события A положим $\text{P}(A) = \sum\limits_{\omega_i \in A} p_i = 1$. Для невозможного события положим $\text{P}(\varnothing) = 0$. Нетрудно доказать, что данное вероятностное пространство удовлетворяет всем аксиомам. @@ -112,7 +112,7 @@ >**Дискретное вероятностное пространство** - обобщение конечного вероятностного пространства, построенное следующим образом. Пусть $\Omega = \{ \omega_1, \omega_2, \dots \}$ - счетное множество, $\mathcal{F}$ - набор всех подмножеств $\Omega$, $p_n, n = 1, 2, \dots,$ - неотрицательные числа, такие что выполнено условие $\sum\limits_{n=1}^{\infty} p_n = 1$. $\forall A \in \mathcal{F}$ положим $\text{P}(A) = \sum\limits_{n \in \{ n: \omega_n \in A \}}^{\infty} p_n$. Нетрудно доказать, что вероятностное пространство $(\Omega, \mathcal{F}, \text{P})$ удовлетворяет всем аксиомам. ## Геометрические вероятности -Далее будем использовать такие понятия, как [вероятностное пространство](#Вероятность). +Далее будем использовать такие понятия, как [[#Вероятность|вероятностное пространство]]. >Определим вероятностное пространство, служащее моделью задач, в которых частица случайном образом бросается в какую-либо область евклидова n-мерного пространства с конечным n-мерным объемом (предполагается, что вероятность попасть частице в какую-либо область этого пространства пропорциональна n-мерному объему этой области). Пусть $\Omega$ - область евклидова n-мерного пространства с конечным n-мерным объемом, а событие - подмножество $\Omega$, для которых можно определить n-мерный объем, множество событий - $\sigma$-алгебра $\mathcal{B}$ борелевских подмножеств $\Omega$. Положим вероятность события A $\text{P}(A) = \frac{|A|}{|\Omega|}$, где $|A|, |\Omega|$ - n-мерный объем соответствующего множества. Нетрудно понять, что вероятностное пространство ($\Omega, \mathcal{B}, \text{P}$) удовлетворяет всем аксиомам. diff --git a/2 курс/Теория вероятностей/Условные вероятности. Независимость.md b/2 курс/Теория вероятностей/Условные вероятности. Независимость.md index 9902ab2..2814b24 100644 --- a/2 курс/Теория вероятностей/Условные вероятности. Независимость.md +++ b/2 курс/Теория вероятностей/Условные вероятности. Независимость.md @@ -1,8 +1,8 @@ ## Содержание -- [Условные вероятности](#Условные%20вероятности) -- [Формула полной вероятности](#Формула%20полной%20вероятности) -- [Формула Байеса](#Формула%20Байеса) -- [Независимость событий](#Независимость%20событий) +- [[#Условные вероятности]] +- [[#Формула полной вероятности]] +- [[#Формула Байеса]] +- [[#Независимость событий]] ## Условные вероятности Далее будем использовать такие понятия, как [событие](Вероятностное%20пространство.md#События), [вероятность](Вероятностное%20пространство.md#Вероятность) ($P$). @@ -16,7 +16,7 @@ >*Доказательство*. Из условия теоремы следует существование всех условных вероятностей в требуемом уравнении. Индукция по $n$. При $n = 2$ требуемое равенство вытекает из определения теоремы умножения. Пусть требуемое равенство справедливо для $n = k$. Докажем его при $n = k + 1$. Подставляя в определение теоремы умножения $B = A_1 \dots A_k$ и $A = A_{k+1}$, получим $P(A_1 \dots A_k A_{k+1}) = P(A_1 \dots A_k) P(A_{k+1}|A_1 \dots A_k)$. Из этого равенства и индукционного предположения следует требуемое равенство при $n = k+1$. $\blacksquare$ ## Формула полной вероятности -Далее будем использовать такие понятия, как [пространство элементарных событий](Вероятностное%20пространство.md#События) ($\Omega$), [событие](Вероятностное%20пространство.md#События), [вероятность](Вероятностное%20пространство.md#Вероятность) ($P$), [условная вероятность](#Условные%20вероятности), [теорема умножения](#Условные%20вероятности). +Далее будем использовать такие понятия, как [пространство элементарных событий](Вероятностное%20пространство.md#События) ($\Omega$), [событие](Вероятностное%20пространство.md#События), [вероятность](Вероятностное%20пространство.md#Вероятность) ($P$), [[#Условные вероятности|условная вероятность]], [[#Условные вероятности|теорема умножения]]. >**Конечное разбиение** (пространства $\Omega$) - система событий $B_1, B_2, \dots, B_n$ таких, что они попарно несовместимы и $B_1 + B_2 + \dots + B_n = \Omega$. @@ -25,14 +25,14 @@ >*Доказательство*. Из определения конечного разбиения следует разложения $A$ на сумму $A = A \Omega = AB_1 + AB_2 + \dots + AB_n$. События $AB_1, AB_2, \dots, AB_n$ попарно независимы. Из конечной аддитивности $P$ и теоремы умножения получаем $P(A) = \sum\limits_{k=1}^{n} P(AB_k) = \sum\limits_{k=1}^{n} P(B_k) P(A|B_k)$. $\blacksquare$ ## Формула Байеса -Далее будем использовать такие понятия, как [событие](Вероятностное%20пространство.md#События), [конечное разбиение](#Формула%20полной%20вероятности), [вероятность](Вероятностное%20пространство.md#Вероятность) ($P$), [условная вероятность](#Условные%20вероятности), [теорема умножения](#Условные%20вероятности), [формула полной вероятности](#Формула%20полной%20вероятности). +Далее будем использовать такие понятия, как [событие](Вероятностное%20пространство.md#События), [[#Формула полной вероятности|конечное разбиение]], [вероятность](Вероятностное%20пространство.md#Вероятность) ($P$), [[#Условные вероятности|условная вероятность]], [[#Условные вероятности|теорема умножения]], [[#Формула полной вероятности|формула полной вероятности]]. >***Теорема***. Пусть события $B_1, \dots, B_n$ образуют конечное разбиение $\Omega$ и все $P(B_k) > 0$. Тогда для любого события $A, P(A) > 0$, справедливы формулы $P(B_k|A) = \frac{P(B_k) P(A|B_k)}{\sum\limits_{i=1}^{n} P(B_i) P(A|B_i)}, k = 1, \dots , n$, называемые формулами Байеса. > >*Доказательство*. По теореме умножения $P(AB_k) = P(B_k) P(A|B_k) = P(A) P(B_k|A)$. Следовательно $P(B_k|A) = \frac{P(B_k)P(A|B_k)}{P(A)}$. Применяя к знаменателю $P(A)$ формулу полной вероятности, получаем требуемое равенство. $\blacksquare$ ## Независимость событий -Далее будем использовать такие понятия, как [событие](Вероятностное%20пространство.md#События), [вероятность](Вероятностное%20пространство.md#Вероятность) ($P$), [условная вероятность](#Условные%20вероятности). +Далее будем использовать такие понятия, как [событие](Вероятностное%20пространство.md#События), [вероятность](Вероятностное%20пространство.md#Вероятность) ($P$), [[#Условные вероятности|условная вероятность]]. >**Независимые события** ($A, B$) - события, для которых верно $P(AB) = P(A)P(B)$. diff --git a/2 курс/Языки программирования/Парадигмы и машинная модель вычислений.md b/2 курс/Языки программирования/Парадигмы и машинная модель вычислений.md index a2df543..065c33f 100644 --- a/2 курс/Языки программирования/Парадигмы и машинная модель вычислений.md +++ b/2 курс/Языки программирования/Парадигмы и машинная модель вычислений.md @@ -2,20 +2,20 @@ >К сожалению, данная лекция на данный момент не доведена до завершения, и в ней отсутствуют некоторые моменты. >Недостающие материалы будут дополнены позже. ## Содержание -- [Парадигмы](#Парадигмы) - - [Императивная парадигма](#Императивная%20парадигма) - - [Объектно-ориентированная парадигма](#Объектно-ориентированная%20парадигма) - - [Функциональная парадигма](#Функциональная%20парадигма) - - [Логическая парадигма](#Логическая%20парадигма) -- [Машинная модель вычислений](#Машинная%20модель%20вычислений) - - [Регистры](#Регистры) - - [Память](#Память) - - [Стек](#Стек) - - [Система команд](#Система%20команд) -- [Способы исполнения программы](#Способы%20исполнения%20программы) - - [Компиляция](#Компиляция) - - [Интерпретация](#Интерпретация) - - [JIT](#JIT) +- [[#Парадигмы]] + - [[#Императивная парадигма]] + - [[#Объектно-ориентированная парадигма]] + - [[#Функциональная парадигма]] + - [[#Логическая парадигма]] +- [[#Машинная модель вычислений]] + - [[#Регистры]] + - [[#Память]] + - [[#Стек]] + - [[#Система команд]] +- [[#Способы исполнения программы]] + - [[#Компиляция]] + - [[#Интерпретация]] + - [[#JIT]] ## Парадигмы @@ -23,10 +23,10 @@ Парадигма задает "основную единицу" программы, а также выражение потока управления, параллельно с этим работая с состоянием программы определенным образом. Каждый язык программирования использует одну или несколько парадигм. -До 1957 года код писался напрямую в машинных кодах. Созданный в это время [Fortran](https://ru.wikipedia.org/wiki/Фортран) стал первым массовым языком высокого уровня, закрепив [императивный стиль](#Императивная%20парадигма). В 1958 году [Lisp](https://ru.wikipedia.org/wiki/Лисп) ввел функции как данные, а также рекурсию, что закрепило [функциональную парадигму](#Функциональная%20парадигма). +До 1957 года код писался напрямую в машинных кодах. Созданный в это время [Fortran](https://ru.wikipedia.org/wiki/Фортран) стал первым массовым языком высокого уровня, закрепив [[#Императивная парадигма|императивный стиль]]. В 1958 году [Lisp](https://ru.wikipedia.org/wiki/Лисп) ввел функции как данные, а также рекурсию, что закрепило [[#Функциональная парадигма|функциональную парадигму]]. (История создания) -При этом не стоит путать парадигмы с такими вещами, как процедурное программирование (в рамках [императивной парадигмы](#Императивная%20парадигма), с акцентом на процедурах как единицах декомпозиции), структурное программирование (в рамках [императивной парадигмы](#Императивная%20парадигма)), паттерны проектирования (типовые решения в [ООП](#Объектно-ориентированная%20парадигма)), архитектурные стили (REST, микросервисы), мультипоточность и асинхронность. +При этом не стоит путать парадигмы с такими вещами, как процедурное программирование (в рамках [[#Императивная парадигма|императивной парадигмы]], с акцентом на процедурах как единицах декомпозиции), структурное программирование (в рамках [[#Императивная парадигма|императивной парадигмы]]), паттерны проектирования (типовые решения в [[#Объектно-ориентированная парадигма|ООП]]), архитектурные стили (REST, микросервисы), мультипоточность и асинхронность. Есть пара советов, в связи с которыми можно выбрать основную парадигму для задачи. Но редко бывает, что задача решается исключительно одной парадигмой, поэтому чаще всего в проекте есть основная парадигма, а остальные используются "точечно", там где нужно. diff --git a/2 курс/Языки программирования/Формальные грамматики и теория автоматов.md b/2 курс/Языки программирования/Формальные грамматики и теория автоматов.md index 3206617..9a850a0 100644 --- a/2 курс/Языки программирования/Формальные грамматики и теория автоматов.md +++ b/2 курс/Языки программирования/Формальные грамматики и теория автоматов.md @@ -1,24 +1,24 @@ ## Содержание -- [Формальные грамматики](#Формальные%20грамматики) - - [Основы](#Основы) - - [Форма Бэкуса-Наура](#Форма%20Бэкуса-Наура) - - [Пример вывода строки](#Пример%20вывода%20строки) - - [Спецификация языка](#Спецификация%20языка) -- [Теория автоматов](#Теория%20автоматов) - - [История](#История) - - [Иерархия Хомского](#Иерархия%20Хомского) - - [Конечный автомат](#Конечный%20автомат) - - [ДКА и НКА](#ДКА%20и%20НКА) - - [Регулярные выражения и автоматы](#Регулярные%20выражения%20и%20автоматы) - - [Построение Томпсона](#Построение%20Томпсона) - - [Минимизация](#Минимизация) - - [Границы конечных автоматов](#Границы%20конечных%20автоматов) - - [Формы представления конечного автомата](#Формы%20представления%20конечного%20автомата) - - [Примеры конечных автоматов](#Примеры%20конечных%20автоматов) - - [Автомат для идентификаторов](#Автомат%20для%20идентификаторов) - - [Автомат для комментариев](#Автомат%20для%20комментариев) - - [Автомат для регулярного выражения](#Автомат%20для%20регулярного%20выражения) - - [Автомат для четного числа символов "a"](#Автомат%20для%20четного%20числа%20символов%20"a") +- [[#Формальные грамматики]] + - [[#Основы]] + - [[#Форма Бэкуса-Наура]] + - [[#Пример вывода строки]] + - [[#Спецификация языка]] +- [[#Теория автоматов]] + - [[#История]] + - [[#Иерархия Хомского]] + - [[#Конечный автомат]] + - [#ДКА и НКА]] + - [[#Регулярные выражения и автоматы]] + - [[#Построение Томпсона]] + - [[#Минимизация]] + - [[#Границы конечных автоматов]] + - [[#Формы представления конечного автомата]] + - [[#Примеры конечных автоматов]] + - [[#Автомат для идентификаторов]] + - [[#Автомат для комментариев]] + - [[#Автомат для регулярного выражения]] + - [[#Автомат для четного числа символов "a"]] ## Формальные грамматики @@ -98,20 +98,20 @@ ::= "{" * "}" ``` -Про звезду * в последней строке после `` поговорим [чуть позже](#Построение%20Томпсона). +Про звезду * в последней строке после `` поговорим [[#Построение Томпсона|чуть позже]]. -В примере видно, что `` ссылается сам на себя, используя для этого `` и ``. Такая рекурсивная вложенность в грамматике и делает синтаксис язык [контекстно-свободным, а не регулярным](#Иерархия%20Хомского). +В примере видно, что `` ссылается сам на себя, используя для этого `` и ``. Такая рекурсивная вложенность в грамматике и делает синтаксис язык [[#Иерархия Хомского|контекстно-свободным, а не регулярным]]. ## Теория автоматов ### История Изначально, теория автоматов родилась не из программирования, а из вопроса "что вообще значит вычислять?". Программирование появилось позже, как массовая практика, и унаследовало уже готовый аппарат. -В самом начале, в 1943 году, [Уоррен Маккаллок](https://ru.wikipedia.org/wiki/Мак-Каллок,_Уоррен) и [Уолтер Питтс](https://ru.wikipedia.org/wiki/Питтс,_Уолтер) создали [формальную модель нейрона](https://ru.wikipedia.org/wiki/Искусственный_нейрон), которая по своей сути является переключательным автоматом. В 1950-ых годах [Стивен Клини](https://ru.wikipedia.org/wiki/Клини,_Стивен_Коул) вывел [связь регулярных выражений и конечных автоматов](#Регулярные%20выражения%20и%20автоматы). В 1956 году [Ноам Хомский](https://ru.wikipedia.org/wiki/Хомский,_Ноам) предложил [иерархию формальных грамматик](#Иерархия%20Хомского). В 1959 году [Михаэль Рабин](https://ru.wikipedia.org/wiki/Рабин,_Михаэль) и [Дана Скотт](https://ru.wikipedia.org/wiki/Скотт,_Дана) дали [строгое определение НКА](#ДКА%20и%20НКА), а также доказали его эквивалентность с ДКА. +В самом начале, в 1943 году, [Уоррен Маккаллок](https://ru.wikipedia.org/wiki/Мак-Каллок,_Уоррен) и [Уолтер Питтс](https://ru.wikipedia.org/wiki/Питтс,_Уолтер) создали [формальную модель нейрона](https://ru.wikipedia.org/wiki/Искусственный_нейрон), которая по своей сути является переключательным автоматом. В 1950-ых годах [Стивен Клини](https://ru.wikipedia.org/wiki/Клини,_Стивен_Коул) вывел [[#Регулярные выражения и автоматы|связь регулярных выражений и конечных автоматов]]. В 1956 году [Ноам Хомский](https://ru.wikipedia.org/wiki/Хомский,_Ноам) предложил [[#Иерархия Хомского|иерархию формальных грамматик]]. В 1959 году [Михаэль Рабин](https://ru.wikipedia.org/wiki/Рабин,_Михаэль) и [Дана Скотт](https://ru.wikipedia.org/wiki/Скотт,_Дана) дали [[#ДКА и НКА|строгое определение НКА]], а также доказали его эквивалентность с ДКА. ### Иерархия Хомского В своей теории Хомский делит грамматику языка на четыре типа - от 3 до 0. Чем ниже номер типа, тем мощнее грамматика и тем сложнее устройство, нужное для распознавания. -Тип 3 - **регулярные** грамматики. Примерами языка с такой грамматикой будут являться различные идентификаторы или числа. Для распознавания такой грамматики в основном используется [конечный автомат](#Конечный%20автомат). +Тип 3 - **регулярные** грамматики. Примерами языка с такой грамматикой будут являться различные идентификаторы или числа. Для распознавания такой грамматики в основном используется [[#Конечный автомат|конечный автомат]]. Тип 2 - **контекстно-свободные** грамматики. Примером языка с такой грамматикой может быть синтаксис любого языка программирования. Для распознавания такой грамматики используется [автомат с магазинной памятью](https://ru.wikipedia.org/wiki/Автомат_с_магазинной_памятью). @@ -124,7 +124,7 @@ Строка принимается автоматом, если, начав в $q_0$ и применяя $\delta$ символ за символом, автомат оказывается в одном из состояний $F$. -Такие автоматы можно встретить в лексическом анализе (разбивает текст программы на токены), сетевых протоколах (разбирает TCP-состояние, парсит [HTTP-заголовки](../Веб-программирование/Общие%20стандарты%20и%20протоколы%20сети%20Интернет.md#Заголовки%20HTTP)), играх (поведение NPC), [регулярных выражениях](#Регулярные%20выражения%20и%20автоматы) и схемотехнике (сам по себе конечный автомат является стандартной моделью цифровых схем управления). +Такие автоматы можно встретить в лексическом анализе (разбивает текст программы на токены), сетевых протоколах (разбирает TCP-состояние, парсит [HTTP-заголовки](../Веб-программирование/Общие%20стандарты%20и%20протоколы%20сети%20Интернет.md#Заголовки%20HTTP)), играх (поведение NPC), [[#Регулярные выражения и автоматы|регулярных выражениях]] и схемотехнике (сам по себе конечный автомат является стандартной моделью цифровых схем управления). #### ДКА и НКА >**Детерминированный конечный автомат** (ДКА) - конечный автомат, в котором существует ровно один возможный переход из определенного состояния по данному символу. @@ -153,7 +153,7 @@ Именно по такому алгоритму работает большинство движков для регулярных выражений в стандартных библиотеках языков программирования. #### Минимизация -[Построение Томпсона](#Построение%20Томпсона) очень хорошо работает для построения автомата, но обычно дает автомат с избыточным числом состояний. Именно поэтому существуют методы минимизации полученного конечного автомата. +[[#Построение Томпсона]] очень хорошо работает для построения автомата, но обычно дает автомат с избыточным числом состояний. Именно поэтому существуют методы минимизации полученного конечного автомата. >**Теорема Майхилла-Нероуда** - для каждого регулярного языка существует единственный минимальный ДКА. @@ -170,7 +170,7 @@ Формально такую ограниченность конечных автоматов можно доказать через [лемму о накачке](https://en.wikipedia.org/wiki/Pumping_lemma_for_regular_languages). -Почти в любом языке программирования синтаксис представляет собой [контекстно-свободный, а не регулярный](#Иерархия%20Хомского) язык. Поэтому лексер (конечный автомат) сам по себе не может разобрать структуру программы целиком, для этого ему нужен парсер с дополнительной памятью (стеком). +Почти в любом языке программирования синтаксис представляет собой [[#Иерархия Хомского|контекстно-свободный, а не регулярный]] язык. Поэтому лексер (конечный автомат) сам по себе не может разобрать структуру программы целиком, для этого ему нужен парсер с дополнительной памятью (стеком). #### Формы представления конечного автомата Конечный автомат можно описать в виде пять разных форм.