\documentclass{article} \input{settings/common-preamble} \input{settings/bmstu-preamble} \input{settings/fancy-listings-preamble} \author{Сидякин Иван Михайлович} \title{Программное обеспечение телекоммуникационных систем} \date{2023-02-09} \begin{document} \sloppy \fontsize{14}{18}\selectfont \maketitle \tableofcontents \newpage \section{Введение} Erlang -- специально разработан для телекоммуникационных систем. Позволяет избежать неописанных состояний, неожиданного поведения. Микропроцессы (делают минимальную задачу) объединены иерархически, над процессом есть процесс особого вида, который сам не делает, но управляет другими процессами. Самое главное, что делает процесс верхнего уровня - обрабатывает ошибки (останавливает работу, аналог выбрасывания исключения). Конкурентно-ориентированный язык программирования. В первую очередь применяется для распределенных вычислений и конкурентных операций. Способен исполнять много небольших легковесных процессов, т.е. тысячи, десятки тысяч, и более. Процессы выполняют маленькие задачи и обмениваются сообщениями, которые складываются в очереди сообщений. Кластеры маленьких процессов могут быть распределены. Процессы взаимодействуют друг с другом только с помощью сообщений. Отсутствуют критические секции и общая память. Основной упор сделан на защиту от сбоев и надежность. Процессы могут следить за ошибками в других процессах. Когда процесс завершается, он автоматически сигнализирует об этом всем связанным с ним процессам Функциональный ЯП, отсутствие side-effects. Программа сравнима с формулой или электрической схемой, вычисляется сразу целиком, нет промежуточных действий. Использует виртуальную машину и используется всегда в паре с OTP -- open telecom platform. В Erlang не очень много типов данных: целые, действительные, атомы (именованные символические константы), заполнители \code{_}, \code{@}. \end{document}