.NET vs Python voor GIS applicaties

Het softwarelandschap binnen de organisatie waar ik voor werk draait voornamelijk op .NET. De afgelopen jaren heb ik me ontwikkeld in Python, nu komt de vraag of ik wil switchen naar .NET.

Inmiddels ben ik niet alleen aan het scripten in GIS applicaties maar bouw ik volledige applicaties en API’s in Python. Binnen de organisatie zou ik vanuit .NET makkelijker aan kunnen sluiten op bestaande databases, API’s en libraries. Maar ik vraag me af of .NET in zijn algemeenheid een handige keuze is voor GIS. Als ik de fora mag geloven kan ik binnen .NET in ieder geval beter voor C# kiezen dan voor VB.

Wat is jullie mening daarover? Liever .NET C# of Python voor het bouwen van GIS applicaties?

Hoi @JDVlist
Vab visual basic en GIS ken ik geen voorbeelden.
Via onderstaande link kom je bij het open source project van Brian Washburn.
De Heron (GIS) Plugin voor grasshopper (een .Net omgeving)
Deze is geschreven in C#

1 like

Het is denk ik afhankelijk wat je wilt bereiken. Volledige applicaties schrijf je makkelijker in .NET (en dan zeker C# want professioneler en meer voorbeeldcode beschikbaar). Bovendien zie je in .NET nu ook meer focus op andere OS’en, en dus niet perse voor Windows.

Python is meer een script taal en uitermate geschikt voor afhandeling van taken binnen een applicatie. Het is niet echt logisch om een complete applicatie in Python te maken.

1 like

Qua taal zijn beide in principe even geschikt. Dit hangt af van factoren, zoals enerzijds kennis van talen / omgevingen binnen je organisatie (dus in dit geval duidelijk .NET) en anderzijds van het soort toepassing wat je wilt maken en met name de beschikbaarheid van libraries. Ook kan in bepaalde sectoren een voorkeur zijn voor het één of ander, zoals Python bij data scientists.

De .NET-wereld is voor mij iets van een ver verleden, maar in Python zijn heel veel geo-libraries (Shapely, RasterIO, GDAL, Proj om een paar te noemen) en aanverwante libraries (bijv. NumPy). Het feit dat Python een scriptingtaal is doet niks af aan de performance, omdat het zware werk toch door deze libraries gebeurt en ze vaak in C/C++ geschreven zijn, of dit weer uitbesteden aan onderliggende libraries. Ook in .NET ga je niet zelf je eigen libraries schrijven als die noodzaak er niet is, maar maak je gebruik van bestaande libraries.

M.b.t. “professionaliteit” van .NET vs Python ben ik het hartgrondig oneens met het antwoord van Anton. Het afgelopen decennium zijn ontzettend veel ontwikkelingen geweest, m.b.t. typing, codekwaliteit (bijv. Ruff), dependency management (Poetry, etc.). Zo op het oog lijkt het wat onsamenhangend en overlappend, maar dat komt omdat er niet één partij die het hele ecosysteem beheerst, zoals Microsoft dat met .NET doet. Python heeft een heel open ecosysteem, omdat Python in heel diverse omgevingen wordt gebruikt.

1 like

Nou, ‘hartgrondig’ is wel heel stevig uitgedrukt :slight_smile:

Nu moet ik wel toegeven dat ik al jaren alleen programmeer in C# en dat ik vanuit mijn ervaring het schrijven van een volledige applicatie meer bij .NET vind passen dan bij Python, wat voor mij echt een scripting taal is.
Qua mogelijkheden zul je ongetwijfeld in beide talen hetzelfde resultaat kunnen bereiken, want in beide talen zul je vooral gebruik maken van libraries. In die zin zijn beide talen natuurlijk even professioneel. Het zal dus meer afhangen van wat het eindresultaat moet worden, wat de keuze zal bepalen.

Microsoft is overigens al jaren heel druk in de open source wereld en levert significante bijdragen daaraan. Ze maken hun eigen programma’s ook geschikt voor Apple, Linux en Android. .NET is in de basis geheel onafhankelijk van welk OS dan ook, het is uitermate geschikt om mobiele of web apps te maken. En MS ondersteunt andere talen in VS en VS Code, waaronder ook Python. Dat gesloten ecosysteem bestaat echt niet meer.

Als het .NET gaat worden, dan is C# een betere keuze dan VB. Er is veel meer voorbeeldcode te vinden, er zijn veel andere talen met dezelfde syntax en is dus makkelijker uit te wisselen, en als je zelf vragen stelt op fora dan krijg je met C# over het algemeen sneller antwoord. Met VB moet je je vaak toch eerst verdedigen voor je keuze, en meestal word je daarna genegeerd door die-hard C# programmeurs. Wat niet nodig is want VB is net zo goed als C#.

2 likes