Программирование на Python - Правила / Советы по разработке программного обеспечения уровня предприятия на Python? - PullRequest
7 голосов
/ 23 марта 2009

Я несколько продвинутый C ++ / Java Developer, который недавно заинтересовался Python, и мне очень нравится его динамическая типизация и эффективный стиль кодирования. В настоящее время я использую его для своих небольших задач программирования, таких как решение загадок и сценариев программирования, но мне интересно, кто-нибудь там успешно использовал Python в проекте корпоративного качества? (Предпочтительно с использованием современных концепций программирования, таких как ООП и некоторый тип шаблона проектирования)

Если да, объясните, пожалуйста, , почему вы выбрали Python (в частности) и дайте нам некоторые из уроков , которые вы извлекли из этого проекта? (Не стесняйтесь сравнивать использование Python в проекте с Java и т. Д.)

Ответы [ 2 ]

16 голосов
/ 23 марта 2009

Я использую Python для разработки комплексного страхового приложения.

Наше прикладное программное обеспечение по существу переупаковывает нашу актуарную модель в форме, которую компании могут подписать на нее. Этот бизнес основан на наших актуариях и их глубоком мышлении. Мы не собираем умный алгоритм, который относительно исправлен. Мы сдаем наши актуарные мозги клиентам через веб-сервис.

  1. Актуарии должны быть свободны вносить изменения, поскольку они получают более глубокое понимание различных факторов, приводящих к претензиям.

    • Статические языки (Java, C ++, C #) приводят к ранней привязке к модели данных.

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

  2. Наше программное обеспечение является услугой (а не пакетом), поэтому у нас есть бесконечная проблема интеграции.

    • Статическим языкам нужны сложные компоненты отображения. Часто это настраиваемое, основанное на XML отображение из сообщений клиентов в наши постоянно меняющиеся внутренние структуры.

    • Python позволяет нам отображать в качестве простого определения класса Python, который мы просто настраиваем, тестируем и запускаем в производство. У этого модуля нет ограничений - это первоклассный код Python.

  3. Мы должны сделать обширную, длительную проверку концепции. К ним относятся многочисленные сценарии «что, если» с различными каналами данных и настраиваемыми функциями.

    • Статические языки требуют тщательного планирования и обдумывания, чтобы создать еще одну демонстрацию, еще одно сопоставление из еще одного предоставленного клиентом файла с текущей версией наших актуарных моделей.

    • Python требует гораздо меньше планирования. Утиная печать (и Django) позволили нам запустить демо без особой боли. Отображения данных - это простые определения классов Python; наши актуарные модели находятся в довольно постоянном состоянии.

  4. Наша бизнес-модель является предметом определенных переговоров. У нас довольно сложные контракты с поставщиками информации; они не меняются так часто, как актуарная модель, но изменения здесь требуют настройки.

    • Статические языки связывают предположения о контрактах и ​​требуют довольно сложных конструкций (или обходных путей) для решения сложных задач деловых людей, обсуждающих сделки.

    • В Python мы используем обширный набор тестов и проводим большой рефакторинг, поскольку различные условия контракта касаются нас.

    Каждую неделю мы получаем вопрос типа «Можем ли мы обработать положение, подобное X?» Наш стандартный ответ - «Абсолютно». Затем следует час рефакторинга, чтобы быть уверенным, что мы сможем справиться с этим, если сделка будет заключена в этой форме.

  5. Мы в основном RESTful веб-сервис. Джанго делает многое из коробки. Нам пришлось написать несколько расширений, потому что наша модель безопасности немного более строгая, чем модель, предоставленная Django.

    • Статические языки не должны отправлять источник. Не нравится модель безопасности? Платить продавцу $$$.

    • Динамические языки должны поставляться в качестве источника. В нашем случае мы тщательно читаем источник Django, чтобы убедиться, что наша модель безопасности полностью соответствует остальной части Django. Нам не нужно соответствия HIPAA, но мы все равно это создаем.

  6. Мы используем веб-сервисы от поставщиков информации. urllib2 делает это для нас хорошо. Мы можем быстро создать прототип интерфейса.

    • Со статическим языком у вас есть API, вы пишете, запускаете и надеетесь, что это сработает. Цикл разработки: Редактировать, Компилировать, Построить, Выполнить, Авария, Смотреть журналы; и это просто для того, чтобы улучшить интерфейс и убедиться, что у нас есть протокол, учетные данные и правильная конфигурация.

    • Мы осуществляем интерфейс в интерактивном Python. Так как мы выполняем это в интерактивном режиме, мы можем немедленно изучить ответы. Цикл разработки сводится к Run, Edit. Мы можем вспомнить API веб-сервисов во второй половине дня.

3 голосов
/ 23 марта 2009

Я использовал Python в качестве среды распределенных вычислений в одном из крупнейших банков мира. Это было выбрано потому что:

  • Это должно было быть очень быстро для разработки и развертывания новых функций;
  • Он должен был быть легко интегрируем с C и C ++;
  • Некоторые части кода должны были быть написаны людьми, чья область знаний - математическое моделирование, а не разработка программного обеспечения.
...