Консалтинг и автоматизация в области управления
эффективностью банковского бизнеса

Журнал ВРМ World

Python помогает компании Disney создавать новый скрипт
Использование нового скриптового языка способствует созданию высококачественного приложения

Сегодня, когда на рынке появилось цифровое кино - например, такое, как "Динозавр", - большая часть мультфильмов Walt Disney Feature Animation (сокращенно "WDFA") продолжает создаваться вручную, как это было во времена Белоснежки, вышедшей на экраны в 1937.

В основном WDFA использует Perl, однако некоторые его ограничения побудили программистов исследовать альтернативные языки для последующего использования в новом программном продукте компании. Брент Берли (Brent Burley), один из главных инженеров по программному обеспечению в WDFA, считает Python не только не менее простым и последовательным по сравнению с Perl, но и отмечает очевидное преимущество Python, обусловленное его объектно-ориентированной природой. "За месяцы, прошедшие с первого случая использования Python", - отмечает он, - "У меня не было никаких проблем со стабильностью, а язык и API всегда были именно такими, как я и ожидал".

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

Одна из самых необходимых возможностей, которые группа Беркли стремилась получить с вводом нового приложения, заключалась в возможности скриптования объектов. Скрипты позволяют быстро создавать прототипы и, в ряде случаев, быстро развертывать части приложения, а также делает приложение динамически конфигурируемым и расширяемым, и Беркли, являясь сторонником Perl, не был уверен, что сможет реализовать все это на Python.

"У нас были проблемы со стабильностью со встроенным Perl, и я не смог объединить графические пользовательские интерфейсы Perl и C++ GUI настолько, насколько хотелось бы", - объясняет Беркли. "Мы многое создаем с помощью Xt/Motif и мне хотелось иметь возможность соединить Perl/Tk и Motif в рамках одного приложения. Python, как предполагалось, мог быть встроен гораздо проще и, к тому же, он был бы способен обеспечить желаемое объединение графических интерфейсов. Расширение и встраивание C API снабжено отличной документацией и реализуется достаточно просто".

Python оказался великолепным инструментом для нового приложения Берли. "Мы сделали консоль Python одной из компонент приложения, что очень облегчило нам отладку. Это будет очень удобно для тех из наших пользователей, кто лучше разбирается в технических аспектах", - объяснил он. - "Кроме того, мы использовали функцию создания скриптов для генерации регрессионных тестов. Возможности системы позволяют быстро и просто предоставлять пользователям возможность работать с расширениями приложений и патчами, не создавая новых релизов программы. В сложном процессе выпуска нашей продукции активность наших пользователей является критической величиной".

Берли удалось также практически незаметно соединить код C++ и Python. Помимо создания на Python имитаций и прототипов для различных модулей приложений, его группа экспериментировала с гибридными модулями, написанными частично на Python и частично на C++. Берли разработал библиотеку сообщений, позволяющую пользователям сначала определять интерфейсы не зависящим от языка способом, а затем уже генерировать из интерфейсов базовые классы C++. Файлы интерфейсов читаются в процессе работы, и, таким образом, можно получить доступ к объектам из Python. "В противоположность SWIG (популярному средству генерации соединений Python из заголовков C++), наша библиотека позволяет пользоваться объектами Python из C++ также просто, как объектами C++ из Python", - утверждает Берли. "Фактически, даже невозможно отличить, какой из объектов реализован на Python, а какой на C++".

В контексте же тестовой производственной системы Walt Disney Feature Animation, это новое приложение начинает привлекать все больше и больше внимание. Так как оно является первым проектом WDFA, в котором скрипты являются основой ядра приложения. Берли описал архитектуру в статье, которую он представит (совместно с коллегами) на Девятой Международной Конференции по языку Python в Лонг Бич, Калифорния, с 5 по 8 марта.

С момента начала использования Берли языка Python, другие группы в WDFA также стали использовать скриптовый язык с весьма положительным результатом. "Python останется ключевой составляющей нашего набора инструментов", - отмечает Берли. - "Мы будем продолжать использовать C++, Java, Perl, и ряд других языков, однако Python, безусловно, уже занял среди них достойное место".