Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum
Беспроводные выключатели nooLite купить дешевый 
компьютер родом из Dhgate.com

Lines Club

Ищем достойных соперников.

Библиотека сайта или "Мой Linux Documentation Project"

Библиотека matplotlib

Глава 11 из книги "Архитектура приложений с открытым исходным кодом", том 2.

Оригинал: matplotlib
Автор: John Hunter, Michael Droettboom, перевод: А.Панин

11.8. Выученные уроки

Один из наиболее важных уроков, усвоенных в ходе разработки библиотеки matplotlib, может быть описан с помощь выражения Le Corbusier: "Хорошие архитекторы используют заимствования". Авторы ранних версий библиотеки matplotlib были в основном учеными, самостоятельно изучившими программирование и пытавшимися выполнить поставленную задачу, а не обученными специалистами в области компьютерных наук. Поэтому с первого раза и не была создана подходящая внутренняя архитектура библиотеки. Решение о реализации доступного пользователю уровня сценариев, в большей степени совместимого с API MATLAB, принесло пользу проекту в трех различных аспектах: был предоставлен проверенный временем интерфейс для создания и изменения графиков, стал возможным простой переход к использованию matplotlib частью пользователей из большой пользовательской базы системы MATLAB, и, что наиболее важно для нас в контексте архитектуры matplotlib, у разработчиков появилась возможность провести несколько рефакторингов внутреннего объектно-ориентированного API без вмешательства в работу пользователей, так как интерфейс сценариев оставался неизменным. Хотя у нас также были и пользователи API (в отличие от пользователей интерфейса сценариев), большая часть этих пользователей обладала достаточным опытом, чтобы адаптировать свои разработки к изменениям API. Пользователи интерфейса сценариев, с другой стороны, могут разрабатывать код один раз и обладать объективной уверенностью в том, что он будет работать стабильно со всеми последующими релизами.

В ходе реализации внутреннего API рисования, хотя мы и использовали заимствования из GDK, не было приложено достаточных усилий для того, чтобы выяснить, подходит ли в нашем случае данный API рисования, поэтому нам пришлось затратить значительные усилия для того, чтобы после завершения разработки множества систем вывода данных с использованием этого API, расширить функции этих систем путем использования более простого и гибкого API рисования. Нам было бы удобно использовать спецификацию для операций рисования формата PDF [Ent11b], которая была создана с учетом многолетнего опыта работников компании Adobe, полученного при создании спецификации формата PostScript; это позволило бы нам получить начальную совместимость с самим форматом PDF, фреймворком Quartz Core Graphics и инструментарием для рисования Enthought Enable Kiva [Ent11a].

Одним из недостатков языка Python является то, что из-за простоты и выразительности этого языка разработчики обычно считают, что проще повторно спроектировать и реализовать необходимые существующие в других пакетах функции, чем провести работу по интеграции кода из этих пакетов. Для библиотеки matplotlib на ранних этапах развития была бы полезной интеграция с существующими модулями и API, такими, как тулкиты Kiva и Enable от организации Enthought, которые решают аналогичные проблемы, вместо повторной реализации функций. Интеграция с существующими пакетами, однако, является обоюдоострым мечом, так как она может сделать сборки и релизы более сложными и негативно повлиять на гибкость внутренней разработки.


Далее: К началу статьи


Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют