Аноним

Техники визуализации при разработке алгоритмов: различия между версиями

Материал из WEGA
м
 
(не показаны 2 промежуточные версии этого же участника)
Строка 39: Строка 39:
'''Визуализация на основе событий'''
'''Визуализация на основе событий'''


Естественный подход к анимации алгоритмов заключается в аннотировании алгоритмического кода вызовами подпрограмм визуализации. Первый этап состоит в определении конкретных действий, выполняемых алгоритмом и представляющих интерес с точки зрения визуализации. Такие действия обычно называются ''интересующими событиями''. К примеру, в алгоритме сортировки перестановка двух элементов может считаться интересующим событием. Второй этап заключается в соединении интересующего события с модификацией графического изображения. Сцены анимации можно определить путем настройки подходящих процедур визуализации, управляющих состоянием графической системы в соответствии с актуальными параметрами, генерируемыми конкретным событием. Либо эти процедуры визуализации могут просто записывать журнал событий в файл для их визуализации по окончании выполнения программы. Вызовы подпрограмм визуализации обычно выполняются посредством аннотирования исходного алгоритмического кода в точках, в которых происходят интересующие события. Это можно выполнить вручную либо при помощи специализированных редакторов. Примерами наборов инструментов для реализации подхода на основе событий могут служить Polka [ ] и GeoWin, тип данных C++, способный легко связываться с важнейшими алгоритмическими библиотеками программных модулей – такими как CGAL [ ] и LED A [19].
Естественный подход к анимации алгоритмов заключается в аннотировании алгоритмического кода вызовами подпрограмм визуализации. Первый этап состоит в определении конкретных действий, выполняемых алгоритмом и представляющих интерес с точки зрения визуализации. Такие действия обычно называются ''интересующими событиями''. К примеру, в алгоритме сортировки перестановка двух элементов может считаться интересующим событием. Второй этап заключается в создании ассоциации интересующего события с модификацией графического изображения. Сцены анимации можно определить путем настройки подходящих процедур визуализации, управляющих состоянием графической системы в соответствии с актуальными параметрами, генерируемыми конкретным событием. Либо эти процедуры визуализации могут просто записывать журнал событий в файл для их визуализации ''по окончании выполнения программы'' (postmortem). Вызовы подпрограмм визуализации обычно выполняются посредством аннотирования исходного алгоритмического кода в точках, в которых происходят интересующие события. Это можно выполнить вручную либо при помощи специализированных редакторов. Примерами наборов инструментов для реализации подхода на основе событий могут служить Polka [28] и GeoWin, тип данных C++, способный легко связываться с важнейшими алгоритмическими библиотеками программных модулей – такими как CGAL [14] и LED A [19].




'''Визуализация на основе отображения состояний'''
'''Визуализация на основе отображения состояний'''


Системы визуализации алгоритмов на основе отображения состояний полагаются на предположение, заключающееся в том, что наблюдение изменений переменных дает ключ к действиям, выполняемым алгоритмом. Главной задачей являются захват и мониторинг модификаций данных, а не обработка интересующих событий, выдаваемых аннотированным алгоритмическим кодом. По этой причине такие системы также называются системами визуализации данных, управляемыми данными. Обычные отладчики могут рассматриваться как системы, управляемые данными, поскольку они предоставляют непосредственную обратную связь в ответ на модификацию переменных. Основным преимуществом этого подхода по сравнению с подходом на основе события является намного большая степень допустимого игнорирования кода: для анимации программы необходимо знать только интерпретацию переменных. С другой стороны, если уделять внимание только модификации данных, это может привести к ограничению возможных вариантов настройки и усложнению процесса создания анимаций, естественным образом отражающих интересующие события. В качестве примеров инструментов визуализации на основе отображения состояний можно привести Pavane [23, 25], ставший воплощением первого изменения парадигмы визуализации алгоритмов с момента появления понятия интересующих событий, и Leonardo [10] – интегрированную среду разработки, визуализации и выполнения программ на C.
Системы визуализации алгоритмов на основе отображения состояний полагаются на предположение, заключающееся в том, что наблюдение изменений переменных дает ключ к действиям, выполняемым алгоритмом. Главной задачей являются захват и мониторинг модификаций данных, а не обработка интересующих событий, выдаваемых аннотированным алгоритмическим кодом. По этой причине такие системы также называются системами визуализации данных, ''управляемыми данными''. Обычные отладчики могут рассматриваться как системы, управляемые данными, поскольку они предоставляют непосредственную обратную связь в ответ на модификацию переменных. Основным преимуществом этого подхода по сравнению с подходом на основе событий является намного большая степень допустимого игнорирования кода: для анимации программы необходимо знать только интерпретацию переменных. С другой стороны, если уделять внимание только модификации данных, это может привести к ограничению возможностей настройки и усложнению процесса создания анимаций, естественным образом отражающих интересующие события. В качестве примеров инструментов визуализации на основе отображения состояний можно привести Pavane [23, 25], ставший воплощением первого изменения парадигмы визуализации алгоритмов с момента появления понятия интересующих событий, и Leonardo [10] – интегрированную среду разработки, визуализации и выполнения программ на C.




Строка 50: Строка 50:


== Применение ==
== Применение ==
Техники визуализации при разработке алгоритмов находят применение в таких областях, как тестирование и отладка реализаций алгоритмов, визуальная проверка сложных структур данных, определение узких мест производительности системы и оптимизация кода. Некоторые примеры подобного использования приведены [12].
Техники визуализации при разработке алгоритмов находят применение в таких областях, как тестирование и отладка реализаций алгоритмов, визуальная проверка сложных структур данных, определение узких мест производительности системы и оптимизация кода. Некоторые примеры подобного использования приведены в работе [12].


== Открытые вопросы ==
== Открытые вопросы ==
В области визуализации алгоритмов остается много нерешенных задач. Прежде всего, вся мощь систем визуализации алгоритмов должна быть доступна конечному пользователю, возможно, не имеющему опыта, а не только профессиональному программисту или разработчику инструмента. К примеру, преподавателям могла бы очень пригодиться возможность быстро и просто подстраивать анимации в соответствии с их конкретными учебными материалами, однако им вряд ли окажутся полезными системы визуализации, слишком сложные в установке или жестко привязанные к определенным программным или аппаратным платформам. Помимо простоты использования, инструмент визуализации ПО должен быть способен к анимации достаточно сложных алгоритмических кодов, не требуя при этом значительных усилий. Это представляется особенно важным для будущих процессов разработки визуальных отладчиков. И, наконец, дальнейших исследований заслуживает визуализация выполнения алгоритмов на больших наборах данных. В настоящее время даже системам, предназначенным для больших информационных пространств, нередко недостает продуманных механизмов навигации и методов устранения узких мест процесса отображения, таких как изменение масштаба и разрешения, селективно, а также пропуск информации.
В области визуализации алгоритмов остается много нерешенных задач. Прежде всего, вся мощь систем визуализации алгоритмов должна быть доступна конечному пользователю, возможно, не имеющему опыта, а не только профессиональному программисту или разработчику инструмента. К примеру, преподавателям могла бы очень пригодиться возможность быстро и просто подстраивать анимации в соответствии с их конкретными учебными материалами, однако им вряд ли окажутся полезными системы визуализации, слишком сложные в установке или жестко привязанные к определенным программным или аппаратным платформам. Помимо простоты использования, инструмент визуализации ПО должен быть способен к анимации достаточно сложных алгоритмических кодов, не требуя при этом значительных усилий. Это представляется особенно важным для будущих процессов разработки визуальных отладчиков. И, наконец, дальнейших исследований заслуживает визуализация выполнения алгоритмов на больших наборах данных. В настоящее время даже системам, предназначенным для больших информационных пространств, нередко недостает продуманных механизмов навигации и методов устранения узких мест процесса отображения, таких как изменение масштаба и разрешения, селективность, а также пропуск информации.


== См. также ==
== См. также ==
4430

правок