Портирование библиотеки JavaScript на Python - PullRequest
4 голосов
/ 19 декабря 2010

Я заинтересован в портировании библиотеки визуализации javascript protovis на python для использования в научных вычислениях. У меня есть общий и конкретный вопрос.

Общие сведения: я никогда раньше не портировал целую библиотеку. Какие есть хорошие стратегии? Должен ли я сначала реализовать пользовательский API, а затем заполнить его по-питонски? Или лучше сначала попытаться портировать через внутреннее устройство / инфраструктуру, а затем перестроить API поверх него?

Специфично: Эта библиотека интенсивно использует наследование на основе прототипов javascript, которое несколько отличается от модели python. Я нашел кого-то, кто сделал довольно простой метод для эмуляции prototypal-наследования в python. Тем не менее, с точки зрения переноса библиотеки, я бы предпочел, чтобы Python не был похож на javascript. Любая обратная связь по этому вопросу будет принята с благодарностью. Спасибо!

Uri

Ответы [ 3 ]

1 голос
/ 11 мая 2011

Если вы хотите портировать с C / C ++ на python, вы, вероятно, захотите использовать swig. Я не знаю о javascript для Python, но вы, вероятно, должны сделать вручную. Я бы посчитал наследование прототипов в python непифоническим. Я не рекомендовал бы использовать взлом метакласса, указанный в ссылке. Программисты Python не используются для создания прототипа наследования и, вероятно, не захотят его использовать, и вы должны быть очень осторожны при использовании метаклассов. Поэтому я думаю, что лучше всего, когда вы заново создаете модель наследования. Я также думаю, что редизайн API не помешает сделать его более питонным.

1 голос
/ 20 июня 2011

В экосистеме Python в настоящее время отсутствует инструмент визуализации, такой как Protovis, продолжайте, и удачи вам в переписывании!

1 голос
/ 19 декабря 2010

Возможно, вам лучше взглянуть на Prefuse (http://www.prefuse.org), или Flare (http://flare.prefuse.org).). Первый основан на Java, второй - Flash.

Protovis немного отличается тем, что это обычный старый Javascript, работающий в браузере с использованием SVG в качестве холста. Вы не сможете легко использовать это в переписывании Python.

Если вам нужен пакет для визуализации графиков / сетей, вы можете попробовать NetworkX: http://networkx.lanl.gov/

...