Санкт-Петербургский Государственный Университет Математико-механический факультет





НазваниеСанкт-Петербургский Государственный Университет Математико-механический факультет
страница9/13
Дата публикации16.08.2013
Размер0.61 Mb.
ТипДипломная работа
100-bal.ru > Информатика > Дипломная работа
1   ...   5   6   7   8   9   10   11   12   13

Глава 3. Реализация


Разработка данной технологии проводилась в несколько этапов:

  1. Описание дизайна языка асинхронных вызовов, расширяющих язык Java

  2. Реализация этого языка в стиле try-catch

  3. Осознание необходимости добавления в этот язык блока finally, реализация

  4. Представление дизайна IDL для сообщений

  5. Создание языка для сообщений

  6. Поддержка удобства редактирования: проверка корректности кода, реализованы доступные действия для пользователя

  7. Реализован генератор в язык Java с простейшим кодированием в JSON

  8. Произведены исследования по оптимизациям данного кодирования в рамках JSON: пулы объектов, массивы без разделителей (так как известно как разбирать каждое сообщение в массиве), другие мелкие оптимизации

  9. Составление дизайна языка для сервисов так, чтобы он был максимально простым. На данном этапе был произведен отказ от удаленных объектов и были выбраны именно сервисы

  10. Реализован генератор сервисов в язык Java

  11. Реализован первый тестовый сервер, который позволял проводить исследования

  12. Был создан дизайн для исключений и произведена их реализация на сервере и клиенте

  13. Далее были реализованы генераторы в язык Objective C [25], что позволило проверить корректность выбора дизайна

  14. Введена возможность создавать абстрактные сервисы, поддержано наследование

  15. Реализовано наследование сообщений: возможность наследовать поля, при этом при указании типа поля желательно указывать точный тип, а не тип предка: это позволит добиться ускорения кодирования и уменьшения объема сообщений

  16. Произведена работа по реализации другого кодирования

  17. Реализована возможность создавать события, тем самым уменьшая нагрузку на сервер и на сеть: не нужно делать однотипные запросы, чтобы узнать изменения системы

  18. Проведение тестирования качества реализованной технологии

  19. Интегрирование с проектом производилось по всему хожу работы


Выбор платформы


Было решено, что данная технология должна быть реализовано с помощью метапрограммирования. Это позволяет вынести множество стереотипного кода в отдельные абстрактные функции, избавляет от необходимости писать один и тот же код по несколько раз, просто задав правила генерации. Таким образом, программа становится понятной и легкосопровождаемой, изменение части генерации требует лишь замены небольшого фрагмента генератора. Кроме того, практически всегда существует среда разработки для метапрораммирования, а это означает, что возможно динамически давать программисту подсказки, проверять правильность кода, создавать подсветку для синтаксиса, а так же пользоваться другими возможностями среды. Для рассмотренных реализаций RPC, которые поддерживают сразу несколько языков программирования, нет среды для разработки.

Именно по этим причинам был произведен отказ от написания на Java парсеров для IDL, а реализация производилась с помощью метапрограммирования. Платформой для этого был выбран MPS (Meta Programming System), которая была реализована JetBrains. Данная система позволяет:

  • Описывать концепты и их взаимосвязь

  • Описывать редакторы для них

  • Поддерживать систему типов

  • Поддерживать проверку правильности кода

  • Автоматически поддерживать подсказки

  • Создавать «горячие клавиши» для различных действий пользователя

  • Реализовывать отображения из одного языка в другой, т.е. из описанного нами языка создавать генераторы в другие

Кроме того основной проект, для которого требовалась система удаленного вызова процедур, большей частью был реализован на MPS, поскольку это помогает расширять стандартные механизмы языка Java: расширенные возможности коллекций, closure, расширения типов, более удобные тесты, возможность создавать другие расширения. При этом остается полная интеграция с языком Java: можно подключать сторонние библиотеки, использовать сторонний код, генерировать обычные java-классы и собирать их в библиотеки.

Разработка MPS была начала в 2003 году и сейчас работа продолжается. Однако данная технология уже стала применима в жизни. При работе с этой системой достаточно часто возникают различные трудности: некорректный разбор какого-либо случая, замедление работы при определенных ситуациях, а также другие мелкие проблемы. Однако они все решаются в кратчайшие сроки, так как есть система обратной связи и есть возможность зайти на трекер и добавить новую ошибку или пожелание к системе.

Система находится в состоянии разработки и не существует доступной и полной документации, так как набор функций постоянно меняется, производятся рефакторинги и прочие изменения. Поэтому к изучению данной системы приходится подходить основательно, практически невозможно найти готовое решение в точности поставленной задачи. Таким образом, написание языка требует изучения других реализованных языков, разборе исходных кодов, высокого уровня понимания алгоритмов работы MPS, а также понимание всех концепций метапрограммирования. Чтобы приступить к разработке серьёзного языка, требуется получить необходимый опыт, поскольку невозможно сразу же понять всех возможностей языка и всех альтернатив реализаций.

Некоторые разработчики сводятся к мнению, что программисту нужно строго знать, что и как делается, предоставление альтернатив мешает разработке кода. Однако в ходе работы с системой MPS было выяснено, что наличие различных подходов к решению одной и той же задачи позволяет лучше понять задачу и выбрать самое оптимальное решение для именно той задачи, которая стоит, а не для задачи похожей на шаблонную. Также разработка с помощью метапрограммирование вынуждает изучать существующие языки, синтаксисы, дизайны, решения, тем самым заметно расширяя кругозор разработчика и позволяя тем самым создавать наиболее оптимальные решения. Таким образом, изначальное время на изучение и понимание всех концепций занимает гораздо большее время, нежели изучение одного языка программирования, но скорость и качество разработки в дальнейшем намного выше, поскольку программист практически всегда заранее знает несколько возможных решений поставленной задачи.

Кроме того, использование данной системы не требует от программиста какой-то дополнительной настройки: изучение параметров, которые надо передать генератору в командной строке, написание конфигурационных файлов. Всё это сделано с помощью пользовательского интерфейса. Также есть возможность интегрироваться с системой контроля версий. Всё это позволяет разработчику меньше тратить времени на задачи, которые не связаны напрямую с программированием.

Таким образом, в ходе данной работы был получен опыт разработки языков, изучения множества других языков, а также опыт применения метапрограммирования для решения задач, требующих абстрактность.
1   ...   5   6   7   8   9   10   11   12   13

Похожие:

Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский государственный университет Математико-механический факультет
Министерством образования и науки Российской Федерации. В 2012-2013 учебном году литературное образование в школе на базовом уровне...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский государственный морской технический университет...
Рецензия на книгу: С. А. Остроумов "Биотический механизм самоочищения пресных и морских вод: элементы теории и приложения" (Москва,...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconМатематико-механический факультет
Государственное образовательное учреждение высшего профессионального образования
Санкт-Петербургский Государственный Университет Математико-механический факультет icon«Санкт-Петербургский государственный университет» (СПбГУ) Исторический факультет утверждаю
Краснодарский государственный историко-археологический музей-заповедник им. Е. Д. Фелицына
Санкт-Петербургский Государственный Университет Математико-механический факультет iconОбзор современных систем управления бизнес-процессами
Агапова Татьяна, математико-механический факультет, 2 курс
Санкт-Петербургский Государственный Университет Математико-механический факультет iconПсихическое здоровье в Германии и России: Клиническая и исследовательская инициатива
Санкт-Петербургский научно-исследовательский Санкт-Петербургский государственный университет
Санкт-Петербургский Государственный Университет Математико-механический факультет iconМатематико-механический факультет asmpy ассемблер python compiled (*. pyc ) файлов
Государственное образовательное учреждение высшего профессионального образования
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-петербургский Государственный университет Восточный факультет Филиппов Е. А. Аннотация
Метадическая разработка интегрированного урока с использованием возможностей интерактивной доски
Санкт-Петербургский Государственный Университет Математико-механический факультет iconПравительство Российской Федерации Санкт Петербургский государственный...
Муниципальное автономное образовательное учреждение «Средняя общеобразовательная школа №21»
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский центр научно-технической информации «Прогресс»,...
Особенности размещения государственного заказа в связи с изменениями в федеральном
Санкт-Петербургский Государственный Университет Математико-механический факультет icon«Санкт-Петербургский государственный университет» (СПбГУ) Исторический факультет утверждаю
Учебно-методический комплекс по дисциплине «Биохимия молока и мяса» составлен на основе
Санкт-Петербургский Государственный Университет Математико-механический факультет iconПрограмма по формированию навыков безопасного поведения на дорогах...
Санкт-Петербургский Государственный Политехнический Университет, Факультет Иностранных Языков
Санкт-Петербургский Государственный Университет Математико-механический факультет iconРоссийской Федерации Санкт Петербургский государственный университет Физический факультет
Цель изучения дисциплины: Обучение магистрантов аналитическим методам анализа структуры и эволюции нелинейных полей
Санкт-Петербургский Государственный Университет Математико-механический факультет iconОсновная образовательная программа (ооп) бакалавриата, реализуемая...
«Санкт-Петербургский государственный университет телекоммуникаций им проф. М. А. Бонч-Бруевича» (СПбгут) по направлению подготовки...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconОсновная образовательная программа (ооп) бакалавриата, реализуемая...
«Санкт-Петербургский государственный университет телекоммуникаций им проф. М. А. Бонч-Бруевича» (СПбгут) по направлению подготовки...
Санкт-Петербургский Государственный Университет Математико-механический факультет iconСанкт-Петербургский государственный университет Факультет философии и политологии
Контрольная работа по дисциплине «Культура речи и деловое общение» является допуском студента заочной формы обучения к зачету


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск