Введение 4
1. Постановка задачи 6
2. Обзор 7
2.1. Обзор языков программирования 7
2.2. Обзор к архитектуре сервера 7
2.3. Используемые библиотеки 9
3. Архитектура 12
3.1. Сервера 12
3.2. Библиотека для интерпретатора языка 12
3.3. Библиотека JsonLanguageUtils 14
4. Реализация 15
4.1. Сервер 15
4.2. Библиотека для интерпретатора языка 17
4.3. Библиотека JsonLanguageUtils 18
5. Тестирование 20
5.1. Тестирование сервера 20
5.2. Тестирование библиотек 21
6. Конфигурационное управление 24
6.1. Установочные файлы 24
6.2. CI и ReadMe 25
Заключение 26
Список литературы 27
В настоящее время продолжается процесс компьютеризации. Люди пытаются автоматизировать все больше и больше процессов, для этих целей они используют множество разных языков программирования. Как мы знаем, каждый язык программирования имеет свои особенности и различия. Одни языки используются в разработке вебприложений, например в сервисной части или в визуализации страниц в браузере, вторые — в разработке игр, третьи — в разработке софтов и программных обеспечений. Данный список можно продолжать очень долго, что демонстрирует разнообразие языков программирования и сфер их применения.
Сам по себе процесс создания языка программирования — это трудная, кропотливая и объемная задача, требующая значительных усилий и времени. Она включает в себя разработку архитектуры языка, его реализацию, оптимизацию для достижения высокой производительности и обеспечения различной функциональности. Кроме того, необходимо решить множество технических и концептуальных проблем для того, чтобы создать язык, который будет эффективно работать и соответствовать потребностям разработчиков. На кафедре параллельных алгоритмов было принято решение рассмотреть такой формат передачи данных, как JSON и взять его за основу нового языка программирования. JSON (JavaScript Object Notation) [6] изначально предназначен для обмена данными между веб-приложениями. Он представляет собой легко читаемый формат, который стал широко используемым в вебразработке и не только. На данный момент язык программирования, основанный на расширенном JSON, позволяет рассматривать файлы, как последовательность команд, подобных инструкциям языка ассемблера. Однако, он умеет работать только с данными, которые хранятся на стеке: целочисленные числа, символы, числа с плавающей запятой. Как можно заметить в перечислении не хватает массивов, объектов и строк. Но какой язык программирования в настоящее время можно представить без ссылочных типов?
Возникает вопрос: какие архитектурные решения следует принять для эффективной реализации ссылочных типов, которые в будущем помогут ускорить и увеличить возможности параллельных вычислений и обработку больших объемов данных? Для этого необходимо первоначально создать в языке архитектуру, позволяющую эффективно работать со ссылочными объектами. Мы рассматриваем идею внедрения распределенных указателей, которые будут располагаться на удаленных компьютерах, при этом сами указатели будут иметь человекочитаемый вид. Это позволит увеличить доступное хранилище данных и расширить возможности для обработки.
Для достижения данной цели предлагается создать REST-сервер в виде приложения и библиотеку по работе с указателями, которая будет являться готовым компонентом языка и максимально облегчит внедрение данной логики в интерпретатор. Сервер будет принимать и отправлять JSON-объекты, массивы или конкретные значения, сохраняя их. Библиотека для интерпретатора должна самостоятельно работать со ссылочными объектами, а также на основе входящих параметров определять, куда необходимо обратиться для получения или записи данных.
В ходе работы были выполнены следующие задачи.
1. Спроектирован и реализован сервер.
2. Реализованы библиотеки для работы с сервером.
3. Протестированы сервер и библиотеки, как отдельные компоненты, так и единые.
4. Сервер упакован в установочный пакет операционной системы Windows.
5. Сервер упакован в установочный пакет операционной системы Linux на базе Debian.