2009-03-10 1 views
2

У меня есть программа на C, которая обменивается данными через UDP с другой программой (на Java), а затем обрабатывает обработку (запуск/останов) на основе обмена pkt UDP. Теперь эта программа C была устаревшей, и я хочу преобразовать ее в Python - как вы думаете, Python будет хорошим выбором для упомянутых задач?Какова возможность переноса старой программы на Python?

ответ

9

Да, я думаю, что Python будет хорошей заменой. Я понимаю, что платформа Python Twisted довольно популярна.

+0

Twisted - отличная библиотека для такого рода вещей. – johnc

+0

Для этого, возможно, не требуется скручивание. Сокет или асинхронные модули могут быть достаточными. –

+0

Скрученный - это много головной боли, чтобы заменить что-то, что уже работает. Если гнездо достаточно, используйте его! –

1

Предполагая, что вы контролируете среду, в которой это приложение будет работать, и что производительность интерпретируемого языка (python) по сравнению с скомпилированным (C) может быть проигнорирована, я считаю, что Python - отличный выбор для этого.

+0

Python не интерпретируется, он байт-скомпилирован и три компилятора JIT существуют (psyco, старый JIT PyPy, новый JIT PyPy), не считая ранее существовавшего JIT для Java и .NET (для Jython и IronPython соответственно). И поскольку это будет привязано к IO, предположение, скорее всего, будет правильным. –

+0

Я верю, что мое оригинальное утверждение верное. http://en.wikipedia.org/wiki/Interpreter_%28computing%29 – Alan

+0

Достаточно честный. Я думал о категории 1. –

4

Я бы сказал, что если:

  • Ваш код C не содержит платформу конкретных требований
  • Вы уверены, что скорость не будет проблемой перехода от C к Python
  • У вас есть желание не компилировать больше
  • Вы хотели бы попробовать использовать обработку
  • Вы хотите баловаться OO
  • Вы можете Choo исключение себе, чтобы работать на многих платформах без портирования
  • Вы хотите знать, динамическая типизация
  • Вы хотите памяти обрабатываются для вас
  • Вы знаете или хотите узнать Python

Тогда конечно, почему нет.

Существует не какая-либо техническая причина, по которой вы не должны использовать python, так что это предпочтение в этом случае.

1

Если я сталкивался с подобной ситуацией я задаю себе несколько вопросов:

  • Есть ли что-нибудь более важно, чтобы я мог работать дальше?
  • Подходит ли Python к таблице, которая в настоящее время плохо обрабатывается текущим приложением?
  • Позволит ли я добавить функциональность, которая ранее была слишком сложной для реализации?
  • Неужели это нарушит сервис?

Если я не могу ответить на эти вопросы удовлетворительно, я бы отложил переписывание.

2

Помните, что вы можете оставить части своей программы на C, превратить их в модули Python и создать код python вокруг них - вам не нужно переписывать все на передний план.

1

Да, я думаю, что Python - хороший выбор, если все ваши платформы поддерживают его. Поскольку это сетевая программа, я предполагаю, что сеть - это узкое место в среде выполнения? Вероятно, это все еще будет иметь место в Python. Если вам действительно нужно ускорить его, вы можете включить в него давно отлаженные, быстродействующие C как модули Python.

0

Если это встроенная программа, может возникнуть проблема с ее переносом, поскольку программы Python обычно полагаются на среду исполнения и библиотеки Python, и они довольно большие. Особенно по сравнению с программой C, выполняющей четко определенную задачу. Конечно, скорее всего, вы уже рассмотрели этот аспект, но я хотел упомянуть об этом в контексте вопроса, так как я считаю, что это важный аспект при выполнении такого типа сравнения.

Смежные вопросы