Question

Je suis un peu avancé C ++ / Java Developer qui est récemment devenu intéressé par Python et j'apprécie sa frappe dynamique et efficace style de codage très bien. J'utilise actuellement sur mes petits besoins de programmation tels que la résolution des énigmes de programmation et de script, mais je suis curieux de savoir si quelqu'un là-bas a utilisé avec succès Python dans un projet de qualité de l'entreprise? (De préférence en utilisant des concepts de programmation modernes tels que la POO et un certain type de Design Pattern)

Si oui, voulez-vous s'il vous plaît expliquer pourquoi vous avez choisi Python (en particulier) et nous donner quelques-unes des leçons vous avez appris de ce projet ? (Ne hésitez pas à comparer l'utilisation de Python dans le projet vs Java ou etc)

Était-ce utile?

La solution

J'utilise Python pour développer une application de souscription d'assurance complexe.

Notre logiciel d'application reconditionne essentiellement notre modèle actuariel sous une forme que les entreprises peuvent y souscrire. Cette entreprise est basée sur nos actuaires et leur pensée profonde. Nous ne sommes pas l'emballage d'un algorithme intelligent qui est relativement fixe. Nous louons nos cerveaux actuariat aux clients via un service Web.

  1. Les actuaires doivent être libres de faire des changements à mesure qu'ils acquièrent un aperçu plus précise des différents facteurs qui conduisent à des revendications.

    • Langues statiques (Java, C ++, C #) conduisent au début de verrouillage pour un modèle de données.

    • Python nous permet d'avoir un modèle de données très flexible. Ils sont libres d'ajouter, modifier ou supprimer des facteurs ou des sources d'information, sans beaucoup de coûts de développement et de la complexité. Canard frappe nous permet d'introduire de nouvelles pièces sans reprise du lot.

  2. Notre logiciel est un service (pas un paquet) donc nous avons un problème d'intégration sans fin.

    • langues statiques ont besoin de composants cartographiques complexes. Souvent, une sorte de cartographie configurable, grâce XML des messages des clients à notre évolution constante des structures internes.

    • Python nous permet d'avoir les correspondances comme une simple définition de classe Python que nous modifions simplement, tester et mettre en production. Il n'y a aucune limite sur ce module - il est de première classe code Python

    • .
  3. Nous devons faire preuve de concept vaste, à long-cours d'exécution. Ceux-ci impliquent de nombreux « what-if » scénarios avec des aliments données différentes et des fonctionnalités personnalisées.

    • langues statiques nécessitent beaucoup de planification minutieuse et de penser à créer encore une autre démonstration, encore une autre application à partir encore un autre fichier fourni par le client à la version actuelle de nos modèles actuariels.

    • Python nécessite beaucoup moins de planification. frappe de canard (et Django) Frappons une démo sans douleur beaucoup. Les correspondances de données sont simples définitions de classe python; nos modèles actuariels sont dans un état relativement constant de flux.

  4. Notre modèle d'affaires est soumis à un certain nombre de négociations. Nous avons des contrats assez complexes avec les fournisseurs d'information; ceux-ci ne changent pas aussi souvent que le modèle actuariel, mais les changements nécessitent ici la personnalisation.

    • langues statiques se lient à des hypothèses sur les contrats, et nécessitent des conceptions assez complexes (ou des solutions de contournement) pour gérer le cerveau-farts des gens d'affaires qui négocient les prix.

    • En Python, nous utilisons une suite de nombreux tests et faisons beaucoup de refactoring que les diverses modalités et conditions contractuelles ruissellent jusqu'à nous.

    Chaque semaine, nous obtenons une question comme « Peut-on gérer une disposition comme X? » Notre réponse standard est « Absolument. » Suivie d'une heure de refactoring pour être sûr que nous peut gérer si l'accord a été conclu sous cette forme.

  5. Nous sommes la plupart du temps un service Web RESTful. Django fait beaucoup de cette sortie de la boîte. Nous avons dû écrire des extensions parce que notre modèle de sécurité est un peu plus stricte que celle fournie par Django.

    • langues statiques ne doivent pas expédier la source. Ne pas comme le modèle de sécurité? Payer le vendeur $$$.

    • Les langages dynamiques doivent expédier en tant que source. Dans notre cas, nous passons du temps à lire la source de Django avec soin pour vous assurer que notre modèle de sécurité correspond proprement avec le reste de Django. Nous ne besoin conformité HIPAA, mais nous construisons en tout cas.

  6. Nous utilisons les services Web des fournisseurs d'information. urllib2 fait pour nous bien. Nous pouvons prototyper rapidement une interface.

    • Avec un langage statique, vous avez des API, vous écrivez, vous courez, et vous espérez qu'il a travaillé. Le cycle de développement est éditent, compilent, Build, Run, Accident, regardez les journaux; ce qui est juste à pic l'interface et être sûr que nous avons le protocole, les informations d'identification et configuration right.

    • Nous exerçons l'interface en Python interactif. Puisque nous l'exécuter de manière interactive, nous pouvons examiner immédiatement les réponses. Le cycle de développement est réduit à exécuter, Edit. Nous pouvons spike un API de services Web dans un après-midi.

Autres conseils

Je suis en Python comme cadre de calcul distribué dans l'un des mondes plus grandes banques. Il a été choisi parce que:

  • Il devait être extrêmement rapide pour le développement et le déploiement de nouvelles fonctionnalités;
  • Il devait être facilement intégrable avec C et C ++;
  • Certaines parties du code devaient être écrits par des personnes dont domaine d'expertise est la modélisation mathématique, pas le développement de logiciels.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top