У меня есть программа на C, которая обменивается данными через UDP с другой программой (на Java), а затем обрабатывает обработку (запуск/останов) на основе обмена pkt UDP. Теперь эта программа C была устаревшей, и я хочу преобразовать ее в Python - как вы думаете, Python будет хорошим выбором для упомянутых задач?Какова возможность переноса старой программы на Python?
ответ
Да, я думаю, что Python будет хорошей заменой. Я понимаю, что платформа Python Twisted довольно популярна.
Предполагая, что вы контролируете среду, в которой это приложение будет работать, и что производительность интерпретируемого языка (python) по сравнению с скомпилированным (C) может быть проигнорирована, я считаю, что Python - отличный выбор для этого.
Python не интерпретируется, он байт-скомпилирован и три компилятора JIT существуют (psyco, старый JIT PyPy, новый JIT PyPy), не считая ранее существовавшего JIT для Java и .NET (для Jython и IronPython соответственно). И поскольку это будет привязано к IO, предположение, скорее всего, будет правильным. –
Я верю, что мое оригинальное утверждение верное. http://en.wikipedia.org/wiki/Interpreter_%28computing%29 – Alan
Достаточно честный. Я думал о категории 1. –
Я бы сказал, что если:
- Ваш код C не содержит платформу конкретных требований
- Вы уверены, что скорость не будет проблемой перехода от C к Python
- У вас есть желание не компилировать больше
- Вы хотели бы попробовать использовать обработку
- Вы хотите баловаться OO
- Вы можете Choo исключение себе, чтобы работать на многих платформах без портирования
- Вы хотите знать, динамическая типизация
- Вы хотите памяти обрабатываются для вас
- Вы знаете или хотите узнать Python
Тогда конечно, почему нет.
Существует не какая-либо техническая причина, по которой вы не должны использовать python, так что это предпочтение в этом случае.
Если я сталкивался с подобной ситуацией я задаю себе несколько вопросов:
- Есть ли что-нибудь более важно, чтобы я мог работать дальше?
- Подходит ли Python к таблице, которая в настоящее время плохо обрабатывается текущим приложением?
- Позволит ли я добавить функциональность, которая ранее была слишком сложной для реализации?
- Неужели это нарушит сервис?
Если я не могу ответить на эти вопросы удовлетворительно, я бы отложил переписывание.
Помните, что вы можете оставить части своей программы на C, превратить их в модули Python и создать код python вокруг них - вам не нужно переписывать все на передний план.
Да, я думаю, что Python - хороший выбор, если все ваши платформы поддерживают его. Поскольку это сетевая программа, я предполагаю, что сеть - это узкое место в среде выполнения? Вероятно, это все еще будет иметь место в Python. Если вам действительно нужно ускорить его, вы можете включить в него давно отлаженные, быстродействующие C как модули Python.
Если это встроенная программа, может возникнуть проблема с ее переносом, поскольку программы Python обычно полагаются на среду исполнения и библиотеки Python, и они довольно большие. Особенно по сравнению с программой C, выполняющей четко определенную задачу. Конечно, скорее всего, вы уже рассмотрели этот аспект, но я хотел упомянуть об этом в контексте вопроса, так как я считаю, что это важный аспект при выполнении такого типа сравнения.
- 1. Возможна ли возможность переноса строки в Python?
- 2. Возможность переноса битов
- 3. Программы для переноса на язык
- 4. Обратные программы старой краски
- 5. Декомпиляция старой программы
- 6. Какова сложность выполнения программы deepcopy() в Python?
- 7. Мониторинг сетевого переноса определенной программы
- 8. Возможность переноса Django или pylon на python 3 повлияет на мое приложение?
- 9. Какова сложность этой программы?
- 10. Какова логика этой программы?
- 11. Какова логика этой программы?
- 12. Какова логика этой программы на C
- 13. Создание нового установщика для старой программы VB6
- 14. Eclipse работает в старой версии Java-программы
- 15. Какова архитектура программы социальных сетей?
- 16. Программы на Python, общающиеся
- 17. Коррекция программы на Python
- 18. Какова наихудшая сложность данной программы?
- 19. Какова сложность следующей простой программы?
- 20. Какова временная сложность следующей программы?
- 21. Какова точка программы coreutils «да»?
- 22. Какова будет сложность следующей программы
- 23. Какова временная сложность следующей программы?
- 24. Какова временная сложность этой программы?
- 25. Запуск программы python из программы на C++?
- 26. Какова версия Object.keys() на Python?
- 27. Как сделать пользовательскую плитку в Windows 8 из старой программы?
- 28. Получение настроек из старой версии
- 29. Какова эквивалентность cin.ignore() в python?
- 30. Какова концепция переноса вызовов функции jquery в другую функцию?
Twisted - отличная библиотека для такого рода вещей. – johnc
Для этого, возможно, не требуется скручивание. Сокет или асинхронные модули могут быть достаточными. –
Скрученный - это много головной боли, чтобы заменить что-то, что уже работает. Если гнездо достаточно, используйте его! –