Pregunta

No soy un tanto avanzada C ++ / Java Developer que recientemente se interesó en Python y me gusta su estilo de tipado dinámico y codificación eficaz mucho. Actualmente lo uso en mis pequeñas necesidades de programación como resolver acertijos de programación y secuencias de comandos, pero tengo curiosidad si alguien por ahí ha utilizado con éxito Python en un proyecto de calidad empresarial? (Preferiblemente usando conceptos de programación orientada a objetos modernos como y algún tipo de patrón de diseño)

Si es así, ¿podría explicar ¿Por qué ha elegido Python (específicamente) y nos dan algunos de los clases que ha aprendido de este proyecto ? (No dude en comparar el uso de Python en el proyecto vs Java o etc)

¿Fue útil?

Solución

Estoy usando Python para el desarrollo de una aplicación de suscripción de seguros compleja.

Nuestro software de aplicación vuelve a empaquetar esencialmente nuestro modelo actuarial en una forma que las empresas pueden suscribirse a él. Este negocio se basa en nuestros actuarios y su pensamiento profundo. No estamos envasado de un algoritmo inteligente que está relativamente fijo. Estamos alquilando nuestro cerebro actuariales a los clientes a través de un servicio web.

  1. Los actuarios deben ser libres para hacer cambios a medida que adquieren conocimiento más profundo de los diversos factores que conducen a las reclamaciones.

    • Los lenguajes estáticos (Java, C ++, C #) conducen a principios de lock-in a un modelo de datos.

    • Python nos permite disponer de un modelo de datos muy flexible. Son libres de añadir, cambiar o eliminar los factores o fuentes de información sin mucho coste y la complejidad del desarrollo. duck typing nos permite introducir nuevas piezas sin retrabajo mucho.

  2. Nuestro software es un servicio (no es un paquete) por lo que tenemos un problema de integración sin fin.

    • lenguas estáticas necesitan componentes de mapeo complejas. A menudo algún tipo de mapeo configurable, basadas en XML de los mensajes de los clientes a nuestra siempre cambiante estructuras internas.

    • Python nos permite disponer de las asignaciones como una simple definición de clase Python que simplemente ajustamos, prueba y puesta en producción. No hay limitaciones en este módulo - es el código Python de primera clase

    • .
  3. Hay que hacer una amplia, de larga duración a prueba de concepto. Estos implican numerosos "qué pasaría si" los escenarios con datos de diferentes alimentos y funciones personalizadas.

    • lenguas estáticas requieren una gran cantidad de una cuidadosa planificación y el pensamiento para crear una nueva demostración, otro mapeo desde otro archivo suministrado por el cliente a la versión actual de nuestros modelos actuariales.

    • Python requiere mucho menos planificación. la tipificación de pato (y Django) vamos a noquear a una demo sin mucho dolor. Las asignaciones de datos son las definiciones simples clase pitón; nuestros modelos actuariales están en un estado bastante constante de flujo.

  4. Nuestro modelo de negocio está sujeto a una cierta cantidad de negociación. Tenemos contratos más complejos con los proveedores de información; éstos no cambian tan a menudo como el modelo actuarial, pero los cambios aquí requieren personalización.

    • lenguas estáticas se unen en suposiciones acerca de los contratos, y requieren diseños bastante complejos (o soluciones) para manejar el cerebro-pedos de la gente de negocios que negocian las ofertas.

    • En Python, utilizamos una extensa batería de pruebas y hacer un montón de refactorización como los diversos términos y condiciones del contrato alcancen a nosotros.

    Cada semana tenemos una pregunta como "¿Se puede manejar una disposición como el X?" Nuestra respuesta estándar es "absolutamente". Seguido de una hora de refactorización para estar seguro de que podría manejarlo si el acuerdo fue alcanzado en esa forma.

  5. Estamos sobre todo un servicio web REST. Django hace mucho de esto fuera de la caja. Tuvimos que escribir algunas extensiones porque nuestro modelo de seguridad es un poco más estricto que el proporcionado por Django.

    • lenguas estáticas no tienen que enviar fuente. ¿No te gusta el modelo de seguridad? Pagar al proveedor $$$.

    • lenguajes dinámicos deben enviar como fuente. En nuestro caso, pasamos tiempo leyendo la fuente de Django cuidadosamente para asegurarse de que nuestro modelo de seguridad encaja limpiamente con el resto de Django. No necesidad HIPAA, pero estamos construyendo adentro de todos modos.

  6. Utilizamos los servicios web de proveedores de información. urllib2 hace esto por nosotros muy bien. Podemos prototipo de una interfaz rápidamente.

    • Con un lenguaje estático, tiene de API, que escribe, se corre, y que espera que funcionó. El ciclo de desarrollo es editar, compilar, construir, ejecutar, Choque, Mira Registros; y esto es sólo para vaciar en la interfaz y asegurarse de que tengamos los protocolos, las credenciales y la configuración Rvuelo.

    • Ejercemos la interfaz interactiva en Python. Ya que estamos ejecutando de forma interactiva, podemos examinar las respuestas de inmediato. El ciclo de desarrollo se reduce a ejecutar, editar. Poder atacar una API de servicios web en una tarde.

Otros consejos

He estado usando Python como plataforma de computación distribuida en uno de los mundos más grandes bancos. Fue elegido porque:

  • Tenía que ser muy rápido para desarrollar e implementar nuevas funcionalidades;
  • Tenía que ser fácilmente integrable con C y C ++;
  • Algunas partes del código iban a ser escrita por personas cuya área de especialización fue modelado, no el desarrollo de software matemático.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top