Don Syme - S Weblog En F # Y Temas Relacionados


F # para el comercio de energía y la optimización de la cartera de energía Tenemos un montón de comentarios informales de que F # ha sido grande en diferentes áreas de aplicación. Uno de mis análisis favoritos de "por qué fue F # genial para mi trabajo" fue publicado por Simon Cousins, originalmente en stackoverflow. Simon nos ha dado permiso para publicar lo que escribió aquí. Creo que lo que dice es realmente interesante, ya que los mapas de diferentes características técnicas de F # (que me encanta hablar) a las mejoras reales de la productividad en el campo de aplicación del mundo real de los horarios de generación de energía para una importante empresa de energía, en este Caso en el Reino Unido. Espero que disfruten de lo que Simon ha escrito y lo encuentran útil para explicar a otros por qué la programación funcional conduce a mejoras tangibles en el mundo real en productividad y confiabilidad de software. Uso de F # para el comercio de energía y la optimización de la cartera de energía, por Simon Cousins He escrito una aplicación para equilibrar el calendario nacional de generación de energía para una cartera de centrales eléctricas a una posición comercial para una compañía de energía. Los componentes cliente y servidor estaban en C # pero el motor de cálculo estaba escrito en F #. El uso de F # para abordar la complejidad en el corazón de esta aplicación demuestra claramente un punto dulce para el lenguaje dentro del software de la empresa, a saber algoritmicamente complejo análisis de grandes conjuntos de datos. Mi experiencia ha sido muy positiva. En particular: Unidades de medida. La industria en la que trabajo está llena de unidades. Las ecuaciones que implementé (a menudo de naturaleza geométrica) trataban de unidades de tiempo, poder y energía. Tener el sistema de tipo verificar la corrección de las unidades de las entradas y salidas de funciones es un ahorro de tiempo enorme, tanto en términos de pruebas y lectura / comprensión del código. Se erradica toda una clase de errores que los sistemas anteriores eran propensos a. Programación exploratoria. Trabajar con archivos de script y la REPL (F # Interactive) me permitió explorar el espacio de la solución más eficazmente antes de comprometerme con una implementación que el bucle de edición / compilación / ejecución / prueba más tradicional. Es una manera muy natural para que un programador construya su comprensión del problema y de las tensiones del diseño en juego. Pruebas unitarias. El código escrito usando funciones no-side effecting y estructuras de datos inmutables es una alegría para probar. No hay complejas interacciones dependientes del tiempo para atornillar las cosas o grandes conjuntos de dependencias que se burlan. Interoperación. Definí la interfaz para el motor de cálculo en C # e implementé el cálculo en F #. El motor de cálculo podría entonces ser inyectado en cualquier módulo C # que necesitaba utilizarlo sin ninguna preocupación en absoluto sobre la interoperabilidad. Sin costura. El programador C # nunca necesita saber. Reducción de código. Gran parte de los datos introducidos en el motor de cálculo estaba en forma de vectores y matrices. Funciones de orden superior comen estos para el desayuno con un mínimo de alboroto, código mínimo. Hermosa. Falta de errores. La programación funcional puede parecer extraña. Puedo estar trabajando en un algoritmo, tratando de conseguir el código para pasar el tipo de verificador, pero una vez que el tipo de verificador está satisfecho, que es, funciona. Es casi binario, o no compilará o no es correcto. Los errores extraños de los casos de borde se minimizan, la recursión y las funciones de orden superior eliminan una gran cantidad de código de contabilidad que introduce errores en los casos de borde. Paralelismo. La pureza funcional de la implementación resultante la hace madura para explotar el paralelismo inherente en el procesamiento de vectores de datos.

Comments

Popular posts from this blog

Cómo Hacer Dinero Rápido Invertir En Acciones En Línea

Consejos Y Trucos Para Negociar En Línea

123 Estrategia De Inversión - Estrategia De Negociación Intradía