Изменены ссылки на заголовки внутри файлов
This commit is contained in:
@@ -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пистолет)
|
- [[#Приставка Dendy и пистолет]]
|
||||||
- [Реле и релейные диаграммы](#Реле%20и%20релейные%20диаграммы)
|
- [[#Реле и релейные диаграммы]]
|
||||||
- [Электрическое реле](#Электрическое%20реле)
|
- [[#Электрическое реле]]
|
||||||
- [Релейная диаграмма](#Релейная%20диаграмма)
|
- [[#Релейная диаграмма]]
|
||||||
- [Управление двигателем](#Управление%20двигателем)
|
- [[#Управление двигателем]]
|
||||||
- [Практика применения реле](#Практика%20применения%20реле)
|
- [[#Практика применения реле]]
|
||||||
- [Реле и состояние](#Реле%20и%20состояние)
|
- [[#Реле и состояние]]
|
||||||
- [RS-триггер](#RS-триггер)
|
- [[#RS-триггер]]
|
||||||
- [От реле к транзистору](#От%20реле%20к%20транзистору)
|
- [[#От реле к транзистору]]
|
||||||
## Решение задач компьютеров без компьютеров
|
## Решение задач компьютеров без компьютеров
|
||||||
|
|
||||||
Несмотря на то, что сейчас компьютеры являются неотъемлемой частью нашей жизни, основные задачи, которые они решают, схожи с задачами, которые ставились еще несколько столетий назад. И все же, люди в прошлом такие задачи решали даже без компьютеров.
|
Несмотря на то, что сейчас компьютеры являются неотъемлемой частью нашей жизни, основные задачи, которые они решают, схожи с задачами, которые ставились еще несколько столетий назад. И все же, люди в прошлом такие задачи решали даже без компьютеров.
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
Еще до создания компьютеров существовали примитивные вычислительные алгоритмы. Такие с одной стороны простые, но в тоже время сложные, алгоритмы могли выполнять те же задачи без электрических схем и компьютеров, используя при этом различные способы.
|
Еще до создания компьютеров существовали примитивные вычислительные алгоритмы. Такие с одной стороны простые, но в тоже время сложные, алгоритмы могли выполнять те же задачи без электрических схем и компьютеров, используя при этом различные способы.
|
||||||
### Отдельные операции
|
### Отдельные операции
|
||||||
|
|
||||||
Самым примитивным методом для вычисления являются простейшие устройства, способные вычислять заранее заданные функции для заранее заданных параметрах (обычно такое задание включает либо точное количество используемых значений, либо какой-то промежуток значений). Но даже они не оставались неизменными со временем - из изначального вычисления с помощью дискретных и цифровых величин ([таблиц](#Таблицы%20значений)) осуществлялся постепенный переход к аналоговым [устройствам](#Устройства), а позже возвращение обратно к цифровым [механизмам](#Механизмы).
|
Самым примитивным методом для вычисления являются простейшие устройства, способные вычислять заранее заданные функции для заранее заданных параметрах (обычно такое задание включает либо точное количество используемых значений, либо какой-то промежуток значений). Но даже они не оставались неизменными со временем - из изначального вычисления с помощью дискретных и цифровых величин ([[#Таблицы%20значений|таблиц]])) осуществлялся постепенный переход к аналоговым [[#Устройства|устройствам]]), а позже возвращение обратно к цифровым [[#Механизмы|механизмам]].
|
||||||
#### Таблицы значений
|
#### Таблицы значений
|
||||||
|
|
||||||
Таблицы значений отражают в себе какую-то зависимость, которую можно представить в виде математической функции.
|
Таблицы значений отражают в себе какую-то зависимость, которую можно представить в виде математической функции.
|
||||||
|
|||||||
+33
-33
@@ -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-диаграмма)
|
- [[#V-диаграмма]]
|
||||||
- [Эффект архитектурного проектирования](#Эффект%20архитектурного%20проектирования)
|
- [[#Эффект архитектурного проектирования]]
|
||||||
|
|
||||||
## Компьютерные системы
|
## Компьютерные системы
|
||||||
|
|
||||||
@@ -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). (*Системы с преобладающей программной составляющей - это такие системы, в которых основной упор делается на разработку и/или внедрение программного обеспечения. Это включает в себя такие компьютерные системы, как отдельное программное обеспечение, информационные системы, встроенные системы, линейки и семейства программного обеспечения и системы систем.*)
|
>**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частей)
|
1. рассмотрения ее [[#Система как совокупность частей|структуры]]
|
||||||
2. рассмотрения ее [функционального места](#Система%20как%20функциональное%20место)
|
2. рассмотрения ее [[#Система как функциональное место|функционального места]]
|
||||||
3. рассмотрения ее [операционного окружения](#Операционное%20окружение)
|
3. рассмотрения ее [[#Операционное окружение|операционного окружения]]
|
||||||
4. рассмотрения ее [жизненного цикла](#Система%20как%20жизненный%20цикл)
|
4. рассмотрения ее [[#Система как жизненный цикл|жизненного цикла]]
|
||||||
5. рассмотрения ее [обеспечивающих систем](#Обеспечивающие%20системы)
|
5. рассмотрения ее [[#Обеспечивающие системы|обеспечивающих систем]]
|
||||||
|
|
||||||
Аналогичные результаты были получены в ряде других исследований, и такой же вывод можно найти, к примеру, в [OMG Essence](https://www.omg.org/spec/Essence/1.2) (стандарт задающий общее ядро понятий для описания, сравнения и разработки ПО) или в [СМД-методологии](https://web.archive.org/web/20220409190315/https://ru.wikipedia.org/wiki/СМД-методология) (системомыследеятельностный подход по Г. П. Щедровицкому).
|
Аналогичные результаты были получены в ряде других исследований, и такой же вывод можно найти, к примеру, в [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. (*Плохой менеджмент может увеличить стоимость программного обеспечения намного стремительнее, чем любой другой фактор.*)". Именно поэтому при разработке очень важна архитектура.
|
||||||
|
|
||||||
>**Архитектура** - формальный способ зафиксировать множественность точек зрения на систему и передать ее другим.
|
>**Архитектура** - формальный способ зафиксировать множественность точек зрения на систему и передать ее другим.
|
||||||
|
|
||||||
|
|||||||
@@ -1,53 +1,53 @@
|
|||||||
## Содержание
|
## Содержание
|
||||||
- [Введение](#Введение)
|
- [[#Введение]]
|
||||||
- [Клиент-серверное взаимодействие. Протокол HTTP](#Клиент-серверное%20взаимодействие.%20Протокол%20HTTP)
|
- [[#Клиент-серверное взаимодействие. Протокол HTTP]]
|
||||||
- [HTTP](#HTTP)
|
- [[#HTTP]]
|
||||||
- [Структура запроса HTTP](#Структура%20запроса%20HTTP)
|
- [[#Структура запроса HTTP]]
|
||||||
- [Структура ответа HTTP](#Структура%20ответа%20HTTP)
|
- [[#Структура ответа HTTP]]
|
||||||
- [Методы HTTP](#Методы%20HTTP)
|
- [[#Методы HTTP]]
|
||||||
- [Коды состояния](#Коды%20состояния)
|
- [[#Коды состояния]]
|
||||||
- [Заголовки HTTP](#Заголовки%20HTTP)
|
- [[#Заголовки HTTP]]
|
||||||
- [Кеширование](#Кеширование)
|
- [[#Кеширование]]
|
||||||
- [URI, URN и URL](#URI,%20URN%20и%20URL)
|
- [[#URI, URN и URL]]
|
||||||
- [REST](#REST)
|
- [[#REST]]
|
||||||
- [Разметка страниц. Язык HTML](#Разметка%20страниц.%20Язык%20HTML)
|
- [[#Разметка страниц. Язык HTML]]
|
||||||
- [HTML](#HTML)
|
- [[#HTML]]
|
||||||
- [Структура HTML-документа](#Структура%20HTML-документа)
|
- [[#Структура HTML-документа]]
|
||||||
- [HTML-формы](#HTML-формы)
|
- [[#HTML-формы]]
|
||||||
- [HTML5](#HTML5)
|
- [[#HTML5]]
|
||||||
- [Браузер](#Браузер)
|
- [[#Браузер]]
|
||||||
- [DOM](#DOM)
|
- [[#DOM]]
|
||||||
- [Стилизация страниц. Основы CSS](#Стилизация%20страниц.%20Основы%20CSS)
|
- [[#Стилизация страниц. Основы CSS]]
|
||||||
- [CSS](#CSS)
|
- [[#CSS]]
|
||||||
- [Источники CSS](#Источники%20CSS)
|
- [[#Источники CSS]]
|
||||||
- [Структура CSS](#Структура%20CSS)
|
- [[#Структура CSS]]
|
||||||
- [Приоритеты стилей](#Приоритеты%20стилей)
|
- [[#Приоритеты стилей]]
|
||||||
- [LESS & Sass / SCSS](#LESS%20&%20Sass%20/%20SCSS)
|
- [[#LESS & Sass / SCSS]]
|
||||||
- [LESS](#LESS)
|
- [[#LESS]]
|
||||||
- [Sass](#Sass)
|
- [[#Sass]]
|
||||||
- [SCSS](#SCSS)
|
- [[#SCSS]]
|
||||||
## Введение
|
## Введение
|
||||||
|
|
||||||
В основном все держится на 4 вещах:
|
В основном все держится на 4 вещах:
|
||||||
- [Hypertext Transfer Protocol (HTTP)](#Клиент-серверное%20взаимодействие.%20Протокол%20HTTP) - предназначен для передачи гипертекста между клиентом и сервером
|
- [[#Клиент-серверное взаимодействие. Протокол HTTP|Hypertext Transfer Protocol (HTTP)]] - предназначен для передачи гипертекста между клиентом и сервером
|
||||||
- [Hypertext Markup Language (HTML)](#Разметка%20страниц.%20Язык%20HTML) - язык разметки гипертекста
|
- [[#Разметка страниц. Язык HTML|Hypertext Markup Language (HTML)]] - язык разметки гипертекста
|
||||||
- [Cascade StyleSheets (CSS)](#Стилизация%20страниц.%20Основы%20CSS) - язык описания внешнего вида HTML-документов
|
- [[#Стилизация страниц. Основы CSS|Cascade StyleSheets (CSS)]] - язык описания внешнего вида HTML-документов
|
||||||
- JavaScript - язык для написания динамических сценариев, выполняемых на стороне клиента
|
- JavaScript - язык для написания динамических сценариев, выполняемых на стороне клиента
|
||||||
## Клиент-серверное взаимодействие. Протокол HTTP
|
## Клиент-серверное взаимодействие. Протокол HTTP
|
||||||
|
|
||||||
### HTTP
|
### HTTP
|
||||||
|
|
||||||
Сам по себе HTTP - протокол прикладного уровня. В его основе лежит технология "клиент-сервер". Он может использоваться в качестве "транспорта" для других протоколов прикладного уровня. Основной объект манипуляций этого протокола - ресурс, на который указывает [URI](#URI,%20URN%20и%20URL). Обмен сообщениями в этом протоколе идет по схеме "запрос-ответ". Сам по себе протокол не сохраняет состояние (stateless-протокол), поэтому для реализации сессий используется cookies.
|
Сам по себе HTTP - протокол прикладного уровня. В его основе лежит технология "клиент-сервер". Он может использоваться в качестве "транспорта" для других протоколов прикладного уровня. Основной объект манипуляций этого протокола - ресурс, на который указывает [[#URI, URN и URL|URI]]. Обмен сообщениями в этом протоколе идет по схеме "запрос-ответ". Сам по себе протокол не сохраняет состояние (stateless-протокол), поэтому для реализации сессий используется cookies.
|
||||||
#### Структура запроса HTTP
|
#### Структура запроса HTTP
|
||||||
|
|
||||||
Первая строка запроса HTTP является стартовой, в ней содержится основное описание необходимого действия (команда). При ее составлении через пробел указывают три основные для протокола вещи: [метод](#Методы%20HTTP), [URI](#URI,%20URN%20и%20URL) и версию протокола HTTP (в формате HTTP/Версия).
|
Первая строка запроса HTTP является стартовой, в ней содержится основное описание необходимого действия (команда). При ее составлении через пробел указывают три основные для протокола вещи: [[#Методы HTTP|метод]], [[#URI, URN и URL|URI]] и версию протокола HTTP (в формате HTTP/Версия).
|
||||||
|
|
||||||
За первой строкой следует следующий раздел - заголовки. Этот раздел содержит, как ни странно, [заголовки](#Заголовки%20HTTP).
|
За первой строкой следует следующий раздел - заголовки. Этот раздел содержит, как ни странно, [[#Заголовки HTTP|заголовки]].
|
||||||
|
|
||||||
Последним разделом запроса является тело (или сущность) сообщения. Чаще всего в запросе тело остается пустым. В теле сообщения может находится что угодно, что необходимо передать с помощью протокола на другую сторону. Вся информация о теле, необходимая другой стороне, должна быть указана в заголовках.
|
Последним разделом запроса является тело (или сущность) сообщения. Чаще всего в запросе тело остается пустым. В теле сообщения может находится что угодно, что необходимо передать с помощью протокола на другую сторону. Вся информация о теле, необходимая другой стороне, должна быть указана в заголовках.
|
||||||
#### Структура ответа HTTP
|
#### Структура ответа HTTP
|
||||||
|
|
||||||
Ответ мало чем отличается от [запроса](#Структура%20запроса%20HTTP). Единственным отличием является стартовая строка. Эта строка составляется тем же образом, что и стартовая строка запроса, перечисляя через пробел основную информацию запроса: версию протокола HTTP (в формате HTTP/Версия), [код состояния](#Код%20состояния) и пояснение кода состояния. По сути, в пояснении можно указать что угодно, но лучше придерживаться стандартных шаблонов сообщений.
|
Ответ мало чем отличается от [[#Структура запроса HTTP|запроса]]. Единственным отличием является стартовая строка. Эта строка составляется тем же образом, что и стартовая строка запроса, перечисляя через пробел основную информацию запроса: версию протокола HTTP (в формате HTTP/Версия), [[#Код состояния|код состояния]] и пояснение кода состояния. По сути, в пояснении можно указать что угодно, но лучше придерживаться стандартных шаблонов сообщений.
|
||||||
#### Методы HTTP
|
#### Методы HTTP
|
||||||
|
|
||||||
Методов HTTP довольно много, поэтому перечислим только используемые чаще всего.
|
Методов HTTP довольно много, поэтому перечислим только используемые чаще всего.
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
- GET - получение данных с ресурса (запрос содержимого ресурса)
|
- GET - получение данных с ресурса (запрос содержимого ресурса)
|
||||||
- HEAD - аналог GET, но в ответе не передается (отсутствует) тело
|
- HEAD - аналог GET, но в ответе не передается (отсутствует) тело
|
||||||
- POST - передача данных ресурсу
|
- POST - передача данных ресурсу
|
||||||
- PUT - загрузка содержимого запроса на указанный [URI](#URI,%20URN%20и%20URL)
|
- PUT - загрузка содержимого запроса на указанный [[#URI, URN и URL|URI]]
|
||||||
- DELETE - удаление данных с сервера
|
- DELETE - удаление данных с сервера
|
||||||
#### Коды состояния
|
#### Коды состояния
|
||||||
|
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
> **REST (Representation State Transformer)** - передача состояния представления - подход к архитектуре сетевых протоколов, обеспечивающих доступ к информационным ресурсам. Он описывает взаимодействие между клиентом и сервером, а также между front-end и back-end частями.
|
> **REST (Representation State Transformer)** - передача состояния представления - подход к архитектуре сетевых протоколов, обеспечивающих доступ к информационным ресурсам. Он описывает взаимодействие между клиентом и сервером, а также между front-end и back-end частями.
|
||||||
|
|
||||||
Основные концепции REST:
|
Основные концепции 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).
|
Существует подход, противоположный REST, который основан на вызове удаленных процедур (RPC - Remote Process Call).
|
||||||
@@ -99,31 +99,31 @@
|
|||||||
|
|
||||||
>**HyperText Markup Language** (HTML) - стандартный декларативный язык разметки документов в интернете.
|
>**HyperText Markup Language** (HTML) - стандартный декларативный язык разметки документов в интернете.
|
||||||
|
|
||||||
В основном, он интерпретируется [браузером](#Браузер) и отображается в виде документа. Изначально, он являлся частным случаем SGML (стандартного обобщенного языка разметки).
|
В основном, он интерпретируется [[#Браузер|браузером]] и отображается в виде документа. Изначально, он являлся частным случаем SGML (стандартного обобщенного языка разметки).
|
||||||
|
|
||||||
Этот язык был разработан [Тимом Бернерсом-Ли](https://ru.wikipedia.org/wiki/Бернерс-Ли,_Тим?ysclid=mu8uowzcj46005688) в 1989-1991 годах.
|
Этот язык был разработан [Тимом Бернерсом-Ли](https://ru.wikipedia.org/wiki/Бернерс-Ли,_Тим?ysclid=mu8uowzcj46005688) в 1989-1991 годах.
|
||||||
#### Структура HTML-документа
|
#### Структура HTML-документа
|
||||||
|
|
||||||
В начале документа всегда находится строка с объявлением версии HTML. Хотя чаще всего для версии [HTML5](#HTML5) это правило игнорируется, так как такой стандарт используется неявно.
|
В начале документа всегда находится строка с объявлением версии HTML. Хотя чаще всего для версии [[#HTML5]] это правило игнорируется, так как такой стандарт используется неявно.
|
||||||
|
|
||||||
По синтаксису он очень напоминает [XML](https://ru.wikipedia.org/wiki/XML?ysclid=mu8urdj3jm497572817), и даже существует отдельная нотация [XHTML](https://ru.wikipedia.org/wiki/XHTML?ysclid=mu8urty7p0976864513), которая является частным случаем этого языка. В частности, документ также состоит в основном из элементов, начало и конец которых обозначаются тегами.
|
По синтаксису он очень напоминает [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-формы
|
#### HTML-формы
|
||||||
|
|
||||||
Основное предназначение форм - обмен данными между пользователем и сервером. Приятной особенностью таких форм является то, что они могут работать без JavaScript.
|
Основное предназначение форм - обмен данными между пользователем и сервером. Приятной особенностью таких форм является то, что они могут работать без JavaScript.
|
||||||
|
|
||||||
Сам HTML-документ может содержать любое число форм, но на сервер одновременно может быть отправлена только одна. При этом вложенные формы запрещены.
|
Сам HTML-документ может содержать любое число форм, но на сервер одновременно может быть отправлена только одна. При этом вложенные формы запрещены.
|
||||||
|
|
||||||
Границы формы в документе, как и границы любого другого элемента, задаются тегами. В атрибутах формы можно отдельно указать [метод HTTP](#Методы%20HTTP) и ссылку, куда отправляется форма. При этом в конце формы обязательно должна находится отдельная кнопка для ее отправки.
|
Границы формы в документе, как и границы любого другого элемента, задаются тегами. В атрибутах формы можно отдельно указать [[#Методы HTTP|метод HTTP]] и ссылку, куда отправляется форма. При этом в конце формы обязательно должна находится отдельная кнопка для ее отправки.
|
||||||
#### HTML5
|
#### HTML5
|
||||||
|
|
||||||
HTML5 - как следует из названия, пятая версия спецификации языка HTML. Стандарт такого языка был принят в 2014 году (в то время как HTML4 - в 1999 году).
|
HTML5 - как следует из названия, пятая версия спецификации языка HTML. Стандарт такого языка был принят в 2014 году (в то время как HTML4 - в 1999 году).
|
||||||
|
|
||||||
Конечно, за это время в язык добавили много новых синтаксических особенностей. В первую очередь, изменения были внесены для более удобного управления мультимедийным содержимым страницы. Это включает в себя добавление таких тегов, как аудио и видео. Несмотря на то, что они сами по себе достаточно просты (в них присутствует всего три кнопки - старт, стоп и перемотка), они универсальны и работают на любом [браузере](#Браузер).
|
Конечно, за это время в язык добавили много новых синтаксических особенностей. В первую очередь, изменения были внесены для более удобного управления мультимедийным содержимым страницы. Это включает в себя добавление таких тегов, как аудио и видео. Несмотря на то, что они сами по себе достаточно просты (в них присутствует всего три кнопки - старт, стоп и перемотка), они универсальны и работают на любом [[#Браузер|браузере]].
|
||||||
|
|
||||||
Помимо этого были добавлены новые семантические теги - замена для стандартных и универсальных. В основном они редко где используются, но иногда могут помочь в решении проблем доступности (к примеру, для слепых) или для более точного пояснения к содержимому тега.
|
Помимо этого были добавлены новые семантические теги - замена для стандартных и универсальных. В основном они редко где используются, но иногда могут помочь в решении проблем доступности (к примеру, для слепых) или для более точного пояснения к содержимому тега.
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
## Содержание
|
## Содержание
|
||||||
- [Случайные события. Статическая вероятность](#Случайные%20события.%20Статическая%20вероятность)
|
- [[#Случайные события. Статическая вероятность]]
|
||||||
- [События](#События)
|
- [[#События]]
|
||||||
- [Вероятность](#Вероятность)
|
- [[#Вероятность]]
|
||||||
- [Дискретное вероятностное пространство](#Дискретное%20вероятностное%20пространство)
|
- [[#Дискретное вероятностное пространство]]
|
||||||
- [Геометрические вероятности](#Геометрические%20вероятности)
|
- [[#Геометрические вероятности]]
|
||||||
|
|
||||||
## Случайные события. Статическая вероятность
|
## Случайные события. Статическая вероятность
|
||||||
|
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
>**Измеримое пространство** - пара ($\Omega, \mathcal{F}$), состоящая из множества $\Omega$ и $\sigma$-алгебры $\mathcal{F}$ подмножеств $\Omega$.
|
>**Измеримое пространство** - пара ($\Omega, \mathcal{F}$), состоящая из множества $\Omega$ и $\sigma$-алгебры $\mathcal{F}$ подмножеств $\Omega$.
|
||||||
## Вероятность
|
## Вероятность
|
||||||
|
|
||||||
Далее будем использовать такие понятия, как [алгебра](#События), [событие](#События), [измеримое пространство](#События).
|
Далее будем использовать такие понятия, как [[#События|алгебра]], [[#События|событие]], [[#События|измеримое пространство]].
|
||||||
|
|
||||||
>**Мера** - числовая функция $\mu : \mathcal{F} \to \mathbb{R}$, заданная на $\sigma$-алгебре событий $\mathcal{F}$, удовлетворяющая условиям
|
>**Мера** - числовая функция $\mu : \mathcal{F} \to \mathbb{R}$, заданная на $\sigma$-алгебре событий $\mathcal{F}$, удовлетворяющая условиям
|
||||||
> 1) $\mu(\varnothing) = 0$
|
> 1) $\mu(\varnothing) = 0$
|
||||||
@@ -101,7 +101,7 @@
|
|||||||
>***Теорема***. Система аксиом P1), P2), P3), P4) равносильна системе аксиом P1), P2), P3*).
|
>***Теорема***. Система аксиом 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$. Нетрудно доказать, что данное вероятностное пространство удовлетворяет всем аксиомам.
|
>**Конечное вероятностное пространство** - вероятностное пространство, построенное следующим образом. Пусть $\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})$ удовлетворяет всем аксиомам.
|
>**Дискретное вероятностное пространство** - обобщение конечного вероятностного пространства, построенное следующим образом. Пусть $\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}$) удовлетворяет всем аксиомам.
|
>Определим вероятностное пространство, служащее моделью задач, в которых частица случайном образом бросается в какую-либо область евклидова 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}$) удовлетворяет всем аксиомам.
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
## Содержание
|
## Содержание
|
||||||
- [Условные вероятности](#Условные%20вероятности)
|
- [[#Условные вероятности]]
|
||||||
- [Формула полной вероятности](#Формула%20полной%20вероятности)
|
- [[#Формула полной вероятности]]
|
||||||
- [Формула Байеса](#Формула%20Байеса)
|
- [[#Формула Байеса]]
|
||||||
- [Независимость событий](#Независимость%20событий)
|
- [[#Независимость событий]]
|
||||||
## Условные вероятности
|
## Условные вероятности
|
||||||
|
|
||||||
Далее будем использовать такие понятия, как [событие](Вероятностное%20пространство.md#События), [вероятность](Вероятностное%20пространство.md#Вероятность) ($P$).
|
Далее будем использовать такие понятия, как [событие](Вероятностное%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$
|
>*Доказательство*. Из условия теоремы следует существование всех условных вероятностей в требуемом уравнении. Индукция по $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$.
|
>**Конечное разбиение** (пространства $\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$
|
>*Доказательство*. Из определения конечного разбиения следует разложения $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$, называемые формулами Байеса.
|
>***Теорема***. Пусть события $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$
|
>*Доказательство*. По теореме умножения $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)$.
|
>**Независимые события** ($A, B$) - события, для которых верно $P(AB) = P(A)P(B)$.
|
||||||
|
|
||||||
|
|||||||
@@ -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, микросервисы), мультипоточность и асинхронность.
|
||||||
|
|
||||||
Есть пара советов, в связи с которыми можно выбрать основную парадигму для задачи. Но редко бывает, что задача решается исключительно одной парадигмой, поэтому чаще всего в проекте есть основная парадигма, а остальные используются "точечно", там где нужно.
|
Есть пара советов, в связи с которыми можно выбрать основную парадигму для задачи. Но редко бывает, что задача решается исключительно одной парадигмой, поэтому чаще всего в проекте есть основная парадигма, а остальные используются "точечно", там где нужно.
|
||||||
|
|
||||||
|
|||||||
@@ -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 @@
|
|||||||
|
|
||||||
<block> ::= "{" <statement>* "}"
|
<block> ::= "{" <statement>* "}"
|
||||||
```
|
```
|
||||||
Про звезду * в последней строке после `<statement>` поговорим [чуть позже](#Построение%20Томпсона).
|
Про звезду * в последней строке после `<statement>` поговорим [[#Построение Томпсона|чуть позже]].
|
||||||
|
|
||||||
В примере видно, что `<statement>` ссылается сам на себя, используя для этого `<if-statement>` и `<block>`. Такая рекурсивная вложенность в грамматике и делает синтаксис язык [контекстно-свободным, а не регулярным](#Иерархия%20Хомского).
|
В примере видно, что `<statement>` ссылается сам на себя, используя для этого `<if-statement>` и `<block>`. Такая рекурсивная вложенность в грамматике и делает синтаксис язык [[#Иерархия Хомского|контекстно-свободным, а не регулярным]].
|
||||||
## Теория автоматов
|
## Теория автоматов
|
||||||
### История
|
### История
|
||||||
|
|
||||||
Изначально, теория автоматов родилась не из программирования, а из вопроса "что вообще значит вычислять?". Программирование появилось позже, как массовая практика, и унаследовало уже готовый аппарат.
|
Изначально, теория автоматов родилась не из программирования, а из вопроса "что вообще значит вычислять?". Программирование появилось позже, как массовая практика, и унаследовало уже готовый аппарат.
|
||||||
|
|
||||||
В самом начале, в 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 до 0. Чем ниже номер типа, тем мощнее грамматика и тем сложнее устройство, нужное для распознавания.
|
||||||
|
|
||||||
Тип 3 - **регулярные** грамматики. Примерами языка с такой грамматикой будут являться различные идентификаторы или числа. Для распознавания такой грамматики в основном используется [конечный автомат](#Конечный%20автомат).
|
Тип 3 - **регулярные** грамматики. Примерами языка с такой грамматикой будут являться различные идентификаторы или числа. Для распознавания такой грамматики в основном используется [[#Конечный автомат|конечный автомат]].
|
||||||
|
|
||||||
Тип 2 - **контекстно-свободные** грамматики. Примером языка с такой грамматикой может быть синтаксис любого языка программирования. Для распознавания такой грамматики используется [автомат с магазинной памятью](https://ru.wikipedia.org/wiki/Автомат_с_магазинной_памятью).
|
Тип 2 - **контекстно-свободные** грамматики. Примером языка с такой грамматикой может быть синтаксис любого языка программирования. Для распознавания такой грамматики используется [автомат с магазинной памятью](https://ru.wikipedia.org/wiki/Автомат_с_магазинной_памятью).
|
||||||
|
|
||||||
@@ -124,7 +124,7 @@
|
|||||||
|
|
||||||
Строка принимается автоматом, если, начав в $q_0$ и применяя $\delta$ символ за символом, автомат оказывается в одном из состояний $F$.
|
Строка принимается автоматом, если, начав в $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).
|
Формально такую ограниченность конечных автоматов можно доказать через [лемму о накачке](https://en.wikipedia.org/wiki/Pumping_lemma_for_regular_languages).
|
||||||
|
|
||||||
Почти в любом языке программирования синтаксис представляет собой [контекстно-свободный, а не регулярный](#Иерархия%20Хомского) язык. Поэтому лексер (конечный автомат) сам по себе не может разобрать структуру программы целиком, для этого ему нужен парсер с дополнительной памятью (стеком).
|
Почти в любом языке программирования синтаксис представляет собой [[#Иерархия Хомского|контекстно-свободный, а не регулярный]] язык. Поэтому лексер (конечный автомат) сам по себе не может разобрать структуру программы целиком, для этого ему нужен парсер с дополнительной памятью (стеком).
|
||||||
#### Формы представления конечного автомата
|
#### Формы представления конечного автомата
|
||||||
|
|
||||||
Конечный автомат можно описать в виде пять разных форм.
|
Конечный автомат можно описать в виде пять разных форм.
|
||||||
|
|||||||
Reference in New Issue
Block a user