Тип работы:
Предмет:
Язык работы:


РАЗРАБОТКА КОМПИЛЯТОРА ДЛЯ ЯЗЫКА ВИЗУАЛЬНОГО ПРОГРАММИРОВАНИЯ CIMPLE

Работа №185397

Тип работы

Бакалаврская работа

Предмет

программирование

Объем работы51
Год сдачи2020
Стоимость4500 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
16
Не подходит работа?

Узнай цену на написание


РЕФЕРАТ 3
ВВЕДЕНИЕ 6
Что такое визуальное программирование 6
Задача обработки данных 6
Задача управления 10
1 Обзор предметной области 11
1.1 Что такое Flo 11
1.2 Что делает Flo 12
1.3 Выделение компонента Cimple из Flo 14
1.4 Устройство языка 15
1.4.1 Статическая модель языка 15
1.4.2 Динамическая модель языка 16
1.4.3 Текстовое представление языка 18
2 Анализ требований 20
3 Проектирование архитектуры 23
3.1 Общая архитектура Cimple 23
3.2 Архитектура компилятора 26
3.3 Устройство статического анализатора 30
3.4 Устройство системы контроля сборки приложений 31
3.4.1 Подключение библиотеки на языке Cimple к программе на языке Cimple 31
3.4.2 Подключение библиотеки на языке C++ к программе на языке Cimple в
открытом режиме 33
3.4.3 Подключение библиотеки на языке C++ к программе на языке Cimple в
закрытом режиме 34
3.5 Система управления зависимостями 36
4 Реализация
4.1 Выбранные технологии
4.2 Реализация транслятора
4.3 Трансляция графа обработки данных
4.4 Трансляция графа управления 40
4.5 Реализация интерфейсов API и Console 41
4.6 Сценарии использования системы 42
5 Тестирование 45
ЗАКЛЮЧЕНИЕ 49
ЛИТЕРАТУРА 50

Что такое визуальное программирование
Существует такая парадигма, как визуальное программирование. Визуальное программирование - это представление содержания программы не в форме текста, а с помощью визуальных объектов, таких как схемы, диаграммы, чертежи. Такой подход к программированию существенно упрощает восприятие программы человеком. Блок-схемы помогают постичь программирование школьникам, а визуальный язык проектирования UML является стандартом в разработке программного обеспечения.
Существуют 2 класса задач которые хорошо решает визуальное программирование: задачи обработки данных и задачи управления.
Задача обработки данных
В задаче обработки данных необходимо совершить над некоторым входным материалом (это может быть текст, картинка, SD-модель, видео) определенное количество операций обработки данных. Эта задача не в полной мере относится к программированию. Например, открыть Photoshop и пририсовать усы к фотографии своего друга это есть задача обработки данных, но для этого не требуется писать программу. Но иногда удобно совмещать классический инструмент обработки данных и программируемую систему. 
Разберем следующий пример: Paint.net - растровый графичиский редактор, работа в нем похожа на работу в обычном Paint. Во время работы вся последовательность действий пользователя сохраняется в историю. Пользователь всегда может отменить последнее действие. Рассмотрим конкретную рабочую сессию (рис. 1): имели место 4 текстовых вставки.
Действие 1
Действие 2
ДействиеЗ
Действие 4
Рисунок 1 - История действий пользователя.
Данная последовательность ручных действий эквивалентна следующей программе:
1) СоздатьПустойХолст(Размера(500, 500))
2) ВставитьТекст(Позиция(100, 50), “Действие 1”)
3) ВставитьТекст(Позиция(110, 80), “Действие 2”)
4) ВставитьТекст(Позиция(115, 100), “Действие 3”)
5) ВставитьТекст(Позиция(130, 120), “Действие 4”)
Таким образом видно, что ручные действия преобразования данных всегда можно превратить в вызов некоторых функций с некоторыми аргументами. Так в действительности устроен Paint.net и многие другие инструменты ручной обработки данных. Пользователь всегда может отменить любое действие, а потом применить его обратно (операции Undo/Redo).
Но что нужно сделать, если потребуется изменить текст “Действие 2” на “Измененное действие”?
Есть 2 способа. Первый способ: отменить “Действие 4”, затем отменить “Действие 3”, потом отменить “Действие 2”, выполнить вставку текста “Измененное действие”, и выполнить 2 вставки текста “Действие 3” и “Действие 4”. Очевидный недостаток такого способа - это то что требуется повторно выполнять действия которые уже были выполнены. Второй способ - замазать ластиком текст “Действие 2”, и вставить текст “Измененное действие”. У такого способа есть два недостатка. Во-первых, в таком случае история будет хуже отражать то, что действительно присутствует на холсте. Во-вторых, если бы под текстом был не белый фон, а картинка, то ластик её испортит, и придется еще и картинку исправлять.
Как было бы удобно, если вместо истории действий хранилась бы программа, которая отражает историю действий. Тогда можно было бы изменить строку кода:
ВставитьТекст(Позиция(110, 80), “Действие 2”)
на
ВставитьТекст(Позиция(110, 80), “Измененное действие”)
Такое решение реализовано во многих инструментах обработки данных. В таких программах, как Houdini и Blender пользователь работает с ручным инструментом обработки данных. Этот инструмент строит историю действий пользователя в виде программы на языке визуального программирования, которую пользователь в любой момент может изменить.
Если бы в примере со вставкой текста история совершенных действий представлялась в виде программы на некотором визуальном языке программирования (рис. 2), то, с одной стороны, пользователь мог понимать, что он сделал, а с другой стороны - мог легко редактировать свои предшествующие действия, при этом не понимая, что на самом деле он пишет программу.


Рисунок 2 - Программа на языке визуального программирования.

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


Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В результате работы был спроектирован и разработан компонент Cimple который выполняет следующие задачи:
1) Разработать программу на языке Cimple
2) Скомпилировать программу
3) Проверить программу на наличие ошибок
4) Подключить библиотеку к программе
5) Выполнить контекстно-зависимый поиск по программе
6) Выполнить каскадное переименование сущностей программы
Компонент Cimple был успешно разработан и активно используется системой Flo.



1. Flo [Электронный ресурс] / пресс-служба ТУСУРа, 2020. - URL: https://tusur.rU/ru/novosti-i-meropriyatiya/novosti/prosmotr/-/novost-rezidenty-biz nes-inkubatora-tusura-sozdayut-sredu-vizualnogo-programmirovaniya
2. UML [Электронный ресурс] / OMG®, 2020. - URL:
https://www.omg.org/spec/UML/About-UML/
3. Houdini [Электронный ресурс] / SideFX, 2020. - URL:
https://www.sidefx.com/products/houdini/
4. Git [Электронный ресурс] / Software Freedom Conservancy, 2020. - URL: https://git-scm.com/
5. Wikipedia [Электронный ресурс] / Wikimedia Foundation, 2020. - URL: https://en.wikipedia.org/wiki/Visual_programming_language
6. .NET Standard [Электронный ресурс] / © Microsoft, 2020. - URL: https://docs.microsoft.com/ru-ru/dotnet/standard/net-standard
7. Blender [Электронный ресурс] / Blender Foundation, 2020. - URL: https://www.blender.org/
8. Google [Электронный ресурс] / Google Inc, 2020. - URL: https://google.com
9. YouTube [Электронный ресурс] / Google Inc, 2019. - URL: https://youtube.com



Работу высылаем на протяжении 30 минут после оплаты.




©2025 Cервис помощи студентам в выполнении работ