Depois de ler o post do @ray vernagus sobre o uso do ArcObjects com F # , fiquei pensando ... que tipos de problemas de GIS são mais bem tratados pela Programação Funcional , em oposição às formas mais tradicionais de programação?
Talvez mais especificamente, quando seria melhor usar o F # em oposição ao C # com o ArcObjects?
arcobjects
Kirk Kuykendall
fonte
fonte
R
e Mathematica , que proporcionam muitos exemplos relacionados com o SIG.Respostas:
A maior razão pela qual a programação funcional voltou à moda ultimamente é a simultaneidade. Ser capaz de processar em paralelo por razões de desempenho está se tornando extremamente importante na computação geral e o GIS não é exceção. A programação funcional tem alguns sérios benefícios no contexto da criação de sistemas paralelos devido ao quanto enfatiza a imutabilidade e a recursão. Devido a essas propriedades, a maioria das linguagens funcionais tende a evitar problemas como o bloqueio, que tornam a programação paralela em linguagens imperativas uma grande dor de cabeça.
Dito isto, acho que o campo GIS ainda tem um longo caminho a percorrer antes que você realmente possa tirar proveito de muito do que a programação funcional tem a oferecer. As tecnologias e bibliotecas existentes são simplesmente muito fixas na Orientação a Objetos e em uma abordagem geralmente imperativa. Infelizmente, só porque você pode usar o ArcObjects a partir do F # não significa necessariamente que as bibliotecas subjacentes serão realmente boas com um estilo funcional de programação.
fonte
Não estritamente programando, mas o ArcToolbox segue um paradigma de design mais funcional.
A abordagem funcional do ArcToolbox nos permite fazer análises espaciais sem precisar escrever código. O usuário pode trabalhar com um conjunto simples de elementos, como camadas, e não se preocupar com iteração, manutenção de estado ou efeitos colaterais complicados.
fonte
Eu sou novo na programação funcional, então esses são apenas alguns pensamentos.
Há um exemplo interessante de um Ray Tracer no F # que ilustra alguns dos pontos fortes da programação funcional, como funções de ordem superior , recursão , paralelismo e correspondência de padrões . Estendendo alguns desses conceitos, parece que a matemática raster é uma área-chave no GIS para a qual a programação funcional pode ser particularmente adequada.
edit: Aqui está outro exemplo do mesmo site: Regra 30 Autômatos celulares
Outro pensamento é que você não precisa escrever todo o seu programa em F #. Você pode ter o programa principal escrito em C # e criar projetos / montagens em F # que resolvem problemas específicos de programação funcional. Eu li que você também pode usar o ILMerge para mesclar C # e F # em um executável / assembly.
Por último, há um monte de coisas de programação funcional que você pode fazer em C # com LINQ , através da utilização de expressões lambda , funções de ordem superior (
Select
,Where
, etc.), seqüência padrão de correspondência, etc.fonte