Sunday, November 20, 2016

Don Syme - S Weblog Sobre F # Y Temas Relacionados

F # de Energía y Comercio de la cartera de Optimización Energética Tenemos un montón de comentarios informales que F # ha sido grande en diferentes áreas de aplicación. Uno de mis favoritos análisis de "por qué era 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 muy interesante, ya que los mapas de diferentes características técnicas de F # (que me encanta hablar de) a fuertes mejoras reales en la productividad en el dominio de aplicación muy real de 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 les resulta útil para explicar a los demás por qué la programación funcional conduce a mejoras reales tangibles en la productividad y el software de fiabilidad. Usando F # de Energía y Comercio de la cartera de Optimización Energética, por Simon Primos He escrito una aplicación para equilibrar el calendario nacional de generación de energía para una cartera de centrales a una posición comercial de una empresa de energía. Los componentes de cliente y servidor eran en C #, pero el motor de cálculo fue escrita en C #. El uso de F # para abordar la complejidad en el corazón de esta aplicación demuestra claramente un punto dulce para el idioma dentro de software empresarial, es decir, mediante algoritmos complejos análisis de grandes conjuntos de datos. Mi experiencia ha sido muy positiva. En particular: Unidades de medida. La industria del trabajo en está llena de unidades. Las ecuaciones implementé (a menudo de naturaleza geométrica) tratan unidades de tiempo, el poder y la energía. Tener el sistema de tipos de verificar la exactitud de las unidades de las entradas y salidas de las funciones es un gran ahorro de tiempo, tanto en términos de pruebas y de lectura / comprensión del código. Erradica toda una clase de errores que los sistemas anteriores eran propensos a. Programación exploratoria. Trabajar con archivos de comandos y el REPL (F # Interactivo) me permitió explorar el espacio de soluciones de manera más eficaz antes de comprometerse a una implementación de la edición más tradicional / compile / run / bucle de prueba. Es una manera muy natural para un programador para construir su comprensión del problema y de las tensiones de diseño en juego. Las pruebas unitarias. El código escrito usando la no-side efectuar las funciones y estructuras de datos inmutables es una alegría para probar. No hay interacciones dependientes del tiempo complejas para enredar las cosas o grandes conjuntos de dependencias que se burlaban. Interoperación. He definido la interfaz para el motor de cálculo en C # y implementé el cálculo de F #. El motor de cálculo podría entonces ser inyectado en cualquier módulo C # que necesita para usarlo sin ninguna preocupación en absoluto sobre la interoperabilidad. Sin costura. El programador de C # no tiene por qué saber. Reducción del Código. Muchos de los datos introducidos en el motor de cálculo fue en la forma de vectores y matrices. Funciones de orden superior comen ellos para el desayuno con un mínimo esfuerzo, código mínimo. Bonito. La falta de errores. La programación funcional puede sentir extraño. Puedo estar trabajando en un algoritmo, tratando de conseguir el código para pasar el tipo ortográfico, pero una vez que el tipo de corrector se cumple, eso es todo, funciona. Su casi binario, o bien que no se compilará o su correcta. Errores de casos de borde Weird se reducen al mínimo, la recursividad y funciones de orden superior eliminar una gran cantidad de código de contabilidad que introduce errores de casos de borde. Paralelismo. La pureza de la aplicación funcional resultante hace que sea maduro para explotar el paralelismo inherente en los vectores de procesamiento de datos.


No comments:

Post a Comment