Программирование на Python — правила/советы по разработке программного обеспечения корпоративного уровня на Python?

StackOverflow https://stackoverflow.com/questions/672781

Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Другие советы

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

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