Er F# det nye C#?

Siden Microsoft lanserte C# på midten av 2000-talet har det vært det selvsagte valget av programmeringsspråk for meg, og sikkert mange andre .net utviklere. Nå har jeg og flere av mine kolleger blitt nysgjerrige på om F# kan være et relevant alternativ i våre løsninger. Som en start på dette initiativet er vi nå primært ute etter å lære oss mer om F# generelt og potensialet det har for å innføres i våre e-handelsløsninger.


Hvorfor vurderer vi F#?

Akkurat nå går den nystartede Slack-kanalen ”vertica-fsharp” varm og informasjon og tanker deles mellom utviklere i Danmark og den litt mindre gjengen av utviklere her i Norge.

Hvorfor har vi så startet dette initiativet i Vertica? Det enkle svaret er at vi tror det finnes et potensiale i å innføre F# i våre løsninger og at vi ganske enkelt er en gjeng med nysgjerrige utviklere som ønsker å utfordre oss selv og gå utenfor de vante rammene. Og om vi ser at F# kan løfte løsningene vi leverer til våre kunder og gi dem nye fordeler, så hvorfor ikke?

Er du også nysgjerrig på å komme i gang med F# kan vi tipse om Scott Wlaschin tutorial. Det er en veldig velskrevet og enkel tutorial for å komme i gang med F# og bli introdusert til F# og dens hemmeligheter.

Hva er så de åpenbare forskjellene med C# if F#?

Scott Wlaschin nevner fire nøkkelkonsepter (https://fsharpforfunandprofit.com/posts/key-concepts/) som utgjør den største forskjellen, nemlig at F# er/har:

  • Funksjonsorientert i stedet for objektorientert
  • Expressions i stedet for statements
  • Algebraic types for å implementere domenemodeller
  • Pattern matching for kontroll av flyt

Scott Wlaschin viser også et enkelt eksempel (https://fsharpforfunandprofit.com/posts/fvsc-sum-of-squares/) hvordan man sammenlikner F# och C#, og mener at:

  • F# kode er mer kompakt (ikke så ”skravlete” som C# med definisjoner av klasser og interface, curly brackets og semikolon all over the place) ;-)
  • F# koden erklærer ingen typer
  • F# kan utvikles interaktivt

At F# kan utvikles interaktivt er en ganske cool funksjon og innebærer kort og godt at du interaktivt kan eksekvere og teste dine F# funksjoner i eksempelvis Visual Studio. Tilsvarende i C# er å implementere en eller flere tester for å eksekvere din kode.

Så hvordan vurderer jeg F#?

For en gammel C#-rev som meg selv kan syntaksen og den funksjonsbaserte flyten innledningsvis føles avskrekkende, men man kommer forholdsvis raskt inn i både syntaks og flyt. En ting jeg liker med F# er at det funksjonsbaserte konseptet bygger på små gjenbrukbare uttrykk eller funksjoner som alltid returnerer en verdi. Dette i kombinasjon med at man kan eksekvere koden direkte i den interaktive konsollen i Visual Studio gjør at man raskt og enkelt kan implementere og teste logikken i sin kode.

Det er også deilig å ikke behøve å tenke på typer, og at det kraftfulle typesystemet i F# unngår vanlige feil som krasjer koden, som eksempelvis null reference exception.

Jeg er fremdeles i begynnelsen av min F# karriere og håper å kunne komme tilbake med flere innlegg om temaet senere, etter hvert som vi får flere erfaringer.

Så da gjenstår det bare å se om F# blir den nye C# og den nye standarden når det kommer til programmeringsspråk i Vertica. Jeg og flere av mine kollegaer er ivrige i å komme i gang, og håper at F# blir en del av vår hverdag på kontoret i fremtiden. Stay tuned for flere oppdateringer om F#, eller ta kontakt hvis du har spørsmål i mellomtiden.

Del innlegget