Nachdem ich den @ray vernagus-Beitrag über die Verwendung von ArcObjects mit F # gelesen habe , habe ich mich gefragt, welche Arten von GIS-Problemen von der funktionalen Programmierung besser behandelt werden als von herkömmlichen Programmierformen.
Vielleicht genauer gesagt, wann wäre es besser, F # als C # mit ArcObjects zu verwenden?
arcobjects
Kirk Kuykendall
quelle
quelle
R
und Mathematica gibt es derzeit starke FP-Paradigmen , die viele GIS-bezogene Beispiele liefern.Antworten:
Der Hauptgrund, warum die funktionale Programmierung in letzter Zeit wieder in Mode gekommen ist, ist die Parallelität. Die Möglichkeit, aus Leistungsgründen parallel zu verarbeiten, wird für die Berechnung insgesamt von enormer Bedeutung, und GIS ist keine Ausnahme. Die funktionale Programmierung hat im Zusammenhang mit der Erstellung paralleler Systeme einige schwerwiegende Vorteile, da sie die Unveränderlichkeit und Rekursion stark betont. Aufgrund dieser Eigenschaften neigen die meisten funktionalen Sprachen dazu, Probleme wie das Sperren einfach zu umgehen, was die parallele Programmierung in imperativen Sprachen zu massiven Kopfschmerzen macht.
Abgesehen davon denke ich, dass das GIS-Feld noch einen langen Weg vor sich hat, bevor Sie wirklich viele Vorteile der funktionalen Programmierung nutzen können. Bestehende Technologien und Bibliotheken sind einfach zu sehr auf Objektorientierung und einen allgemein zwingenden Ansatz fixiert. Nur weil Sie ArcObjects von F # aus verwenden können, bedeutet dies leider nicht unbedingt, dass die zugrunde liegenden Bibliotheken mit einem funktionalen Programmierstil tatsächlich gut funktionieren.
quelle
Nicht streng programmiert, aber ArcToolbox folgt einem funktionaleren Design-Paradigma.
Mit dem funktionalen Ansatz von ArcToolbox können wir räumliche Analysen durchführen, ohne Code schreiben zu müssen. Der Benutzer kann mit einem einfachen Satz von Elementen wie Ebenen arbeiten und muss sich keine Gedanken über Iteration, Beibehaltung des Status oder komplizierte Nebenwirkungen machen.
quelle
Ich bin selbst neu in der funktionalen Programmierung, daher sind dies nur einige Gedanken.
Es gibt ein interessantes Beispiel für einen Ray Tracer in F # , das einige der Stärken der funktionalen Programmierung veranschaulicht, nämlich Funktionen höherer Ordnung , Rekursion , Parallelität und Mustervergleich . Wenn Sie einige dieser Konzepte erweitern, scheint Rastermathematik ein Schlüsselbereich in GIS zu sein, für den die funktionale Programmierung besonders geeignet sein könnte.
Bearbeiten: Hier ist ein weiteres Beispiel von derselben Site: Regel 30 Zelluläre Automaten
Ein anderer Gedanke ist, dass Sie nicht Ihr gesamtes Programm in F # schreiben müssen. Sie können das Hauptprogramm in C # schreiben lassen und Projekte / Baugruppen in F # erstellen, die bestimmte funktionale Programmierprobleme lösen. Ich habe gelesen, dass Sie ILMerge auch verwenden können , um C # und F # zu einer ausführbaren Datei / Assembly zusammenzuführen.
Schließlich gibt es eine Menge von funktionaler Programmierung Dingen , die Sie in C # mit tun können LINQ , durch die Verwendung von Lambda - Ausdrücke , höhere Funktionen Ordnung (
Select
,Where
usw.), Sequenzmustervergleich usw.quelle