search

F# er .NET-platformens bedste sprog

Har du udfordringer med asynkrone workflows, kritisk behov for korrekthed eller parallelisering af algoritmer?

Så er F# .NET platformens bedste sprog til at løse dine kritiske opgaver hurtigere, med færre fejl og uden uønskede sideeffekter.

 

Ikke længere kun til løsning af nicheproblemer
F# har tidligere været betragtet som et specialistsprog og dermed ikke et sprog, der henvendte sig til at løse “almindelige” opgaver – et eksotisk sprog forbeholdt forskningsmiljøet, hvor man arbejdede med store datamængder.

Men både sproget og miljøet omkring det har udviklet sig eksplosivt, og det er ofte via F#, at man første gang støder på modnede versioner af egenskaber som asynkrone workflows, LINQ og den stadig eksklusive feature - Type Providers.

Fsharplover

Udviklingsværktøjerne omkring sproget har også udviklet sig, så F# fx i dag er fuldt integreret standardsprog i Visual studio og ikke længere tilføjes som en særskilt udvidelse. Det understøtter projekter udviklet mod de seneste versioner af .NET Core /.NET-standard, og der er en række community projekter, som udvikler særdeles velfungerende ”funktionelle” web stacks som fx SAFE og Giraffe.

Med .NET Core er F# (sammen med de andre .NET sprog) blevet uafhængig af Windows platformen, og man kan derfor nu afvikle sine applikationer på fx Linux.

 

Funktionel programmering der også forstår objekter
Forskellen mellem F# og de andre sprog i .NET-familien er først og fremmest, at i F# er der fokus på det funktionelle paradigme. Man støder derfor ofte på begreber som “default immutability” og “pure functions”. Man får dog på ingen måde hænderne bundet på ryggen, idet F# er fuldt kompatibelt med de andre sprog på .NET platformen og derfor uden problemer forstår sig på den objektorienterede tilgang.

 

Styr på sideeffekter 
At det primære fokus i F# er understøttelse af det funktionelle paradigme, opdager man første gang, man forsøger at ændre tilstand på en værdi. Det kræver en særlig syntaks at tillade sideeffekter (dvs. at have med en variabel at gøre), og det gør samtidigt, at man isolerer disse situationer til et passende sted, idet tilstandsændringer tilføjer kompleksitet, der skal forstås, testes og vedligeholdes.

 

Bedre test
F# støtter dig i at opbygge programmer, der består af små sammensættelige komponenter / funktioner, der ikke afstedkommer utilsigtede sideeffekter, når de afvikles. Dette gør det samtidigt meget nemmere at teste, fordi du udelukkende skal koncentrere dig om in- og output til/fra funktionen.

 

Opnå store praktiske fordele
Du bliver for alvor begejstret for F#, når du udnytter styrkerne i typesystemet. Det stærke typesystem understøtter datadreven domænemodellering med stærk typeinferens og kan eliminere mange typiske NULL-pointer exceptions og endda indkode forretningslogik, så fejl kan fanges allerede på kompileringstidspunktet.

F# er designet til at gøre det nemt og sikkert at modellere domæner, håndtere store datamængder, afvikle asynkrone workflows og parallelisere algoritmer. Det funktionelle perspektiv, hvor man ikke accepterer mutable state på objekter giver meget effektive, sikre og elegante løsninger på disse udfordringer.

Uden tilstande der ændrer sig, kan processering af store datamængder samt (egnede) algoritmer med lethed omskrives til at blive afviklet parallelt.

 

Mindre er bedre
Udover de tekniske fordele med typesystemer, domænemodellering og tilstandsfri beregninger er det også vores praktiske erfaring, at F# programmer (skrevet rigtigt) fylder betydeligt mindre. Den kompakte syntaks, typesystemet og stærke standardbiblioteker giver færre linjer kode, mindre kode at teste og en mere præcis formulering af det problem, der løses.

 

Hvad forhindrer dig i at udnytte mulighederne med F#?
Den hyppigste bekymring, vi støder på, er udfordringen med at vedligeholde F#-kode. Hvad nu hvis den tilgængelige ”talentmasse” ikke er stor nok, og vil mine C#-udviklere (acceptere at) kunne arbejde med F# kode?

Disse bekymringer bunder i en nedarvet myte om at funktionel programmering er upraktisk, og mange dataloger husker måske tilbage på kurser i funktionel programmering, hvor man anvendte eksotiske sprog, der ikke var bredt praktisk anvendelige og som adskilte sig voldsomt fra fx C#. De tøver derfor med at anbefale brugen af F# til at løse ellers højrelevante problemstillinger.

I STRONGMINDS er det imidlertid vores erfaring, at alle udviklere (uanset uddannelsesmæssig baggrund), der overvinder denne barriere (eller slet ikke opdager den) er kommet ud på den anden side med et stort smil på læben og en ny forbedret tilgang til softwareudvikling.

Praktisk erfaring med F# har faktisk også en positiv afsmitning på, hvordan man løser opgaver i objektorienterede sprog som Java og C#, og i dag må vi som garvede udviklere på både Java og C# bare konkludere, at F# kan være det bedste sprog til at afhjælpe forskellige udfordringer.

 

Har du projekter med asynkrone workflows, kritisk behov for korrekthed eller parallelisering af algoritmer?

Du er meget velkommen til at kontakte os for at drøfte dine udfordringer direkte med en af vores erfarne Software Craftsmen. Du kan kontakte Lars Høgsted på 21 95 64 00 eller lho@strongminds.dk for at høre mere om de muligheder, vi tilbyder. 

STRONGMINDS 

STRONGMINDS er et software-udviklingshus i vækst. Vi har solid erfaring med cloududvikling og integration af forretningssystemer og andet udstyr. Vi laver solidt software-håndværk, der giver værdi til din forretning, og du er altid velkommen til at kontakte os, så vi kan drøfte dine muligheder. 

Kontakt Icon Kontakt

STRONGMINDS 

INCUBA - Katrinebjerg

Åbogade 15 

DK - 8200 Aarhus N

 

T: (+45) 7026 6416

E: info@strongminds.dk

ERFA-gruppe for software-udviklingschefer

STRONGMINDS After Work er en ERFA-gruppe for softwareudviklingschefer i Østjylland med en LinkedIn-gruppe og relevante gå-hjem-møder, der kan skabe samarbejde, dialog og relationer. Sammen vil vi løfte og udvikle niveauet og miljøet for softwareudvikling som profession. Er det noget for dig, så kontakt os gerne.