Después de leer la publicación de @ray vernagus sobre el uso de ArcObjects con F # , me he estado preguntando ... ¿qué tipos de problemas de SIG se manejan mejor con la programación funcional , a diferencia de las formas de programación más tradicionales?
Quizás más específicamente, ¿cuándo sería mejor usar F # en lugar de C # con ArcObjects?
arcobjects
Kirk Kuykendall
fuente
fuente
R
y Mathematica , que proporcionan muchos ejemplos relacionados con SIG.Respuestas:
La razón principal por la que la programación funcional ha vuelto a estar de moda últimamente es la concurrencia. Ser capaz de hacer el procesamiento en paralelo por razones de rendimiento se está volviendo enormemente importante en la informática en general y los SIG no son una excepción. La programación funcional tiene algunos beneficios serios en el contexto de la creación de sistemas paralelos debido a cuánto enfatiza la inmutabilidad y la recursividad. Debido a estas propiedades, la mayoría de los lenguajes funcionales tienden a eludir problemas como el bloqueo que hacen que la programación paralela en lenguajes imperativos sea un gran dolor de cabeza.
Dicho esto, creo que el campo SIG tiene un largo camino por recorrer antes de que realmente pueda aprovechar mucho lo que la programación funcional tiene para ofrecer. Las tecnologías y bibliotecas existentes simplemente están demasiado obsesionadas con la orientación a objetos y un enfoque generalmente imperativo. Lamentablemente, el hecho de que pueda usar ArcObjects desde F # no significa necesariamente que las bibliotecas subyacentes realmente funcionen bien con un estilo funcional de programación.
fuente
No es estrictamente programación, pero ArcToolbox sigue un paradigma de diseño más funcional.
El enfoque funcional de ArcToolbox nos permite hacer análisis espacial sin necesidad de escribir código. El usuario puede trabajar con un conjunto simple de elementos, como capas, y no preocuparse por la iteración, el mantenimiento del estado o los efectos secundarios complicados.
fuente
Soy nuevo en la programación funcional, así que estos son solo algunos pensamientos.
Hay un ejemplo interesante de Ray Tracer en F # que ilustra algunos de los puntos fuertes de la programación funcional, a saber , funciones de orden superior , recursividad , paralelismo y coincidencia de patrones . Extendiendo algunos de esos conceptos, parecería que las matemáticas ráster son un área clave en los SIG para los que la programación funcional podría ser particularmente adecuada.
editar: Aquí hay otro ejemplo del mismo sitio: Regla 30 Autómatas celulares
Otro pensamiento es que no tiene que escribir todo su programa en F #. Puede tener el programa principal escrito en C # y crear proyectos / ensamblajes en F # que resuelvan problemas específicos de programación funcional. He leído que también puede usar ILMerge para combinar C # y F # en un ejecutable / ensamblaje.
Por último, hay un montón de cosas de programación funcionales que se pueden hacer en C # con LINQ , a través de su uso de las expresiones lambda , funciones de orden superior (
Select
,Where
, etc), secuencia de coincidencia de patrones, etc.fuente