/part1.tex (1090bb59a385adc0e757d999ee939e3671e08f7b) (16029 bytes) (mode 100644) (type blob)

% первая часть

\section{Обзор средств разработки и библиотек}

\subsection{Язык программирования Python}

Python — это высокоуровневый язык программирования общего назначения с динамической строгой типизацией и автоматическим управлением памятью. Ориентирован на повышение производительности разработчика, читаемости кода и его качества, а также на обеспечение переносимости написанных на нём программ. Он является полностью объектно-ориентированным в том плане, что всё является объектами, даже значения, относящиеся к элементарным типам, наподобие чисел и строк, а также сами типы данных \cite{prohor}. Необычной особенностью данного языка является выделение блоков кода пробельными отступами. Согласно стандарту, для выделения блоков необходимо использовать четыре пробела \cite{prohor}. Синтаксис ядра минималистичен, за счёт чего на практике редко возникает необходимость обращаться к документации. Сам же язык известен как интерпретируемый и используется в том числе для написания скриптов. Недостатками языка являются зачастую более низкая скорость работы и более высокое потребление памяти написанных на нём программ по сравнению с аналогичным кодом, написанным на компилируемых языках, таких как Си или C++.

Python представляет из себя мультипарадигмальный язык программирования. Он поддерживает объектно-ориентированное программирование, императивное, структурное, процедурное, метапрограммирование и функциональное программирование. Задачи обобщённого программирования решаются за счёт динамической типизации. Аспектно-ориентированное программирование частично поддерживается через декораторы, более полноценная поддержка обеспечивается дополнительными фреймворками. Такие методики как контрактное и логическое программирование можно реализовать с помощью библиотек или расширений. Основные архитектурные черты — динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений с глобальной блокировкой интерпретатора (GIL), высокоуровневые структуры данных. Поддерживается разбиение программ на модули, которые, в свою очередь, могут объединяться в пакеты.

Стандартная библиотека включает большой набор полезных переносимых функций, начиная от функционала для работы с текстом и заканчивая средствами для написания сетевых приложений. Дополнительные возможности, такие как математическое моделирование, работа с оборудованием, написание веб-приложений или разработка игр, могут реализовываться посредством обширного количества сторонних библиотек, а также интеграцией библиотек, написанных на Си или C++, при этом и сам интерпретатор Python может интегрироваться в проекты, написанные на этих языках. Существует и специализированный репозиторий программного обеспечения, написанного на Python, — PyPI. Данный репозиторий предоставляет средства для простой установки пакетов в операционную систему и стал стандартом де-факто для Python. По состоянию на 2019 год в нём содержалось более 175 тысяч пакетов.

Python стал одним из самых популярных языков, он используется в анализе данных, машинном обучении, DevOps и веб-разработке, а также в других сферах, включая разработку игр. За счёт читабельности, простого синтаксиса и отсутствия необходимости в компиляции язык хорошо подходит для обучения программированию, позволяя концентрироваться на изучении алгоритмов, концептов и парадигм. Отладка же и экспериментирование в значительной степени облегчаются тем фактом, что язык является интерпретируемым. Применяется язык многими крупными компаниями, такими как Google или Facebook. По состоянию на октябрь 2021 года Python занимает первое место в рейтинге TIOBE популярности языков программирования с показателем 11,27\%. «Языком года» по версии TIOBE Python объявлялся в 2007, 2010, 2018 и 2020 годах.

\subsection{Библиотека Pandas}

Pandas — программная библиотека на языке Python для обработки и анализа данных. Работа pandas с данными строится поверх библиотеки NumPy, являющейся инструментом более низкого уровня. Предоставляет специальные структуры данных и операции для манипулирования числовыми таблицами и временными рядами \cite{plas}.

Основная область применения — обеспечение работы в рамках среды Python не только для сбора и очистки данных, но для задач анализа и моделирования данных, без переключения на более специфичные для статобработки языки.

Основные возможности библиотеки:

\begin{itemize}
\item объект DataFrame для манипулирования индексированными массивами двумерных данных;

\item инструменты для обмена данными между структурами в памяти и файлами различных форматов;

\item встроенные средства совмещения данных и способы обработки отсутствующей информации;

\item переформатирование наборов данных, в том числе создание сводных таблиц;

\item срез данных по значениям индекса, расширенные возможности индексирования, выборка из больших наборов данных;

\item вставка и удаление столбцов данных;

\item возможности группировки позволяют выполнять трёхэтапные операции типа «разделение, изменение, объединение»;

\item слияние и объединение наборов данных;

\item иерархическое индексирование позволяет работать с данными высокой размерности в структурах меньшей размерности;

\item работа с временными рядами: формирование временных периодов и изменение интервалов и так далее.
\end{itemize}

\subsection{Библиотека NumPy}

NumPy (сокращенно от Numerical Python)— библиотека с открытым исходным кодом для языка программирования Python. Возможности:

\begin{itemize}
\item поддержка многомерных массивов (включая матрицы);

\item поддержка высокоуровневых математических функций, предназначенных для работы с многомерными массивами.
\end{itemize}

Математические алгоритмы, реализованные на интерпретируемых языках (например, Python), часто работают гораздо медленнее тех же алгоритмов, реализованных на компилируемых языках (например, Фортран, Си, Java). Библиотека NumPy предоставляет реализации вычислительных алгоритмов (в виде функций и операторов), оптимизированные для работы с многомерными массивами. В результате любой алгоритм, который может быть выражен в виде последовательности операций над массивами (матрицами) и реализованный с использованием NumPy, работает так же быстро, как эквивалентный код, выполняемый в MATLAB.

\subsection{Библиотека SciPy}

SciPy — библиотека для языка программирования Python с открытым исходным кодом, предназначенная для выполнения научных и инженерных расчётов.

Возможности:
\begin{itemize}
\item поиск минимумов и максимумов функций;

\item вычисление интегралов функций;

\item поддержка специальных функций;

\item обработка сигналов;

\item обработка изображений;

\item работа с генетическими алгоритмами;

\item решение обыкновенных дифференциальных уравнений.
\end{itemize}
Для визуализации результатов расчётов часто применяется библиотека Matplotlib.

\subsection{Библиотека Matplotlib}

Matplotlib — библиотека на языке программирования Python для визуализации данных двумерной и трёхмерной графикой. Получаемые изображения могут быть использованы в качестве иллюстраций в публикациях.

Matplotlib написан и поддерживался в основном Джоном Хантером и распространяется на условиях BSD-подобной лицензии \cite{albon}. Генерируемые в различных форматах изображения могут быть использованы в интерактивной графике, в научных публикациях, графическом интерфейсе пользователя, веб-приложениях, где требуется построение диаграмм.

Matplotlib является гибким, легко конфигурируемым пакетом, который вместе с NumPy, SciPy и IPython предоставляет возможности, подобные MATLAB. В настоящее время пакет работает с несколькими графическими библиотеками, включая wxWindows и PyGTK.

Пакет поддерживает многие виды графиков и диаграмм:
\begin{itemize}
\item графики (line plot);

\item диаграммы разброса (scatter plot);

\item столбчатые диаграммы (bar chart) и гистограммы (histogram);

\item круговые диаграммы (pie chart);

\item ствол-лист диаграммы (stem plot);

\item контурные графики (contour plot);

\item поля градиентов (quiver);

\item спектральные диаграммы (spectrogram).
\end{itemize}


\subsection{Пользовательский интерфейс JupyterLab}

JupyterLab — это интерактивная среда разработки для работы с блокнотами, кодом и данными. JupyterLab позволяет использовать текстовые редакторы, терминалы, средства просмотра файлов данных и другие настраиваемые компоненты рядом с блокнотами в разбитой на вкладки рабочей области.

JupyterLab позволяет организовать рабочую зону с помощью блокнотов, текстовых файлов, терминалов и выводов блокнотов.

JupyterLab обеспечивает высокий уровень интеграции между блокнотами, документами и действиями:
\begin{itemize}
\item используется drag-and-drop для того чтобы можно было переупорядочить ячейки и скопировать их между блокнотами;

\item блоки кода выполняются интерактивно прямо из текстовых файлов (.py, .R, .md, .tex и т. д.);

\item консоль кода можно связать с ядром блокнота, чтобы изучать код в интерактивном режиме, не загромождая блокнот временными правками;

\item Возможность редактирования популярных форматов файлов с предварительным просмотром в реальном времени, такие как Markdown, JSON, CSV, Vega, VegaLite и другие.
\end{itemize}

Mode Type Size Ref File
100644 blob 2417 510e4b9b541cb4dff706c24d686390cd7ca5c73b .gitignore
100644 blob 9960 4caa1844d393ca4510e1d3393fff8dfa4412f65a BAK_vkr.tex
100644 blob 9741 2a955984838e297dc5b48dc2c2af796190ccf2b8 MAG_disser.tex
100644 blob 11531 b25e54dfc03d39cf85aa34333744cde900167852 MSKMAG_disser.tex
100644 blob 8542 cf60b2f41242fa933b6f03da68f1de06ca58c7ac NIR2_otchet.tex
100644 blob 8593 98b95848d84c91d10685ff8f46febda49b577f9b NIR_otchet.tex
100644 blob 565 39af52c077c0d4c3bc7730b362592e0bf7f635db README.md
100644 blob 1103 e324e682d186c9278d63677e9e1f301be365c1eb intro.tex
100644 blob 16029 1090bb59a385adc0e757d999ee939e3671e08f7b part1.tex
100644 blob 11276 125ec47afe0c33ff4aa089072033e201b260f9b5 part2.tex
040000 tree - 9bb61da76dde58a398880f5506908c24b34ba5ac pics
100644 blob 2779 eaf790a32045e6cad104eff64174cc0f469c0986 rbiblio.bib
100644 blob 4172 0adbcfb598851bcac78231e0e0ca84d022b52b73 vkriate.sty
100644 blob 4245 5ca7abdf60d50010184e1e457ce356feb415632b vkriate2.sty
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/oami/yanir2

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/oami/yanir2

Clone this repository using git:
git clone git://git.rocketgit.com/user/oami/yanir2

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main