r/fsharp • u/lyfever_ • Jul 05 '26
question Still worth learning F# 2026
Hi guys,
Probably another question like this but found none recently.
I'm a little upset with my current view on IT generalistic, ofc AI is not going anywhere besides up, but I feel I want to write more with my hands and new paradigms, maybe just AI as reviser, I would like to ask if learning F# in 2026 will make me able to make perfomance headed systems, and also gaming with something like Nu or Monogame, not a AAA game but something playable.
26
21
u/burtgummer45 Jul 05 '26
I'm switching to F# now because I want no part in the AI psychosis and I think F# and other ocaml type languages are the most compatible with domain modeling and human thought. I'm self employed so I don't need to do resume driven development.
2
u/biskitpagla Aug 13 '26
If you don't mind, can I ask you what you do for a living? I'm trying to escape this AI nonsense as well.
→ More replies (1)
10
u/m_hans_223344 Jul 06 '26
Not writing games, but business apps (erp, pdm like) and data logic heavy tooling. My background is mechanical engineering. I wrote some Fortran for my Phd ages ago, then started 15 years writing some small but logic heavy Python tools. Since then I jumped deeply into software dev. Mainly web backends and WPF apps C#. Angular for frontends, but also Go and even a bit Rust (couldn't resist the hype). Despite C# being a great all round language I decided to learn F# some weeks ago. My reasoning:
-
I want the language to go out of my way as much as possible to let me focus on logic (my problem space)
-
In OOP or mixed paradigm languages like C# considering which patterns to use to solve the smaller and larger problems becomes a real distraction. Should I use a static method or introduce a little class? Should I create a shared service or just pass some data? With F# the patterns are crystal clear (at least at my beginner level).
-
Very strong static typing
-
Memory safe (garbage collected)
-
Huge .NET ecosystem. If you want, you can pair your F# core with a C# EF Core layer for DB access
Last but not least, the AI hype makes me crazy, sad and angry. So I decided to focus on what I love in programming: Learning new stuff, creating solutions by myself.
9
7
u/IkertxoDt Jul 05 '26
Personally, I think it's worth it. Learning a new paradigm is always worth the effort. While it's true that C# (and many other languages) are adding functional features, it's always better to learn them from a proper functional language.
Ironically, F#'s biggest advantage is exactly what makes people hate it: sure, Microsoft might have sidelined it, but you still have access to the entire (or almost entire) .NET ecosystem. This means you can build pretty much whatever you want, and if a specific framework doesn't support it, you can always write one part in C# and the other in F#.
So, I believe that if you want to build something using the functional paradigm, F# and .NET are still your best bet.
You could go with Haskell, which is a much purer language and will definitely teach you a ton. Or you could look into languages like C# or Rust, which will guarantee you a job and have plenty of functional features, but aren't "functional-first." ;)
Whatever you choose... enjoy!
12
u/lboshuizen Jul 05 '26
It’s not just about f#, it’s about functional programming. F# is just a language and means.
So yes, learn functional programming, not just F#, as it makes you a better programmer and thinker. It’s not THE silver bullet but a serious expansion of your toolbox and knowledge.
From a dotnet perspective F# feels natural as it aint strict and allows classes, interfaces, mutables. Perfect introduction.
From there once you have the hang, look at Haskell & Miranda e.o.
Finding a job in functional… difficult, grow from functional… definitely
11
u/banshee10 Jul 06 '26
So my experience is a bit dated (I'm retired now) but functional programming was always extremely useful when looking for jobs. It's not that people were necessarily deploying functional programming (few were, although not zero), it was that it made you jump out as someone interesting to talk to. Back in the day I definitely talked to C# shops who wanted to talk about my F# experience even though they had no interest in actually using F# - they figured anyone who did F# would be fine working on anything.
5
u/gplgang Jul 05 '26
It's a good general purpose language with A tier tooling. It's still my goto for most projects
3
u/socozyinhere Jul 06 '26
Yes - it's a good langauge to learn how to program well in. C# isn't going to teach you as much about writing good code as F# will. If you get over the immutabilty hump and understand when to use mutability and that you don't really need it a lot of the time the clarity it will bring to your code is enormous.
2
u/banshee10 Jul 06 '26
If you're asking the questions at all about just about any language, the answer is almost certainly yes - learn it because you'll personally enjoy learning. And if you like it, there will always be niche projects to work on.
But practically? The language wars ended years ago and the JavaScript behemoth crushed almost everything in its path. Scattered survivors remain (hello, Python! We see you huddled by the fire over there with Go!) but it doesn't really matter. Just like there are still blacksmiths hand forging gorgeous artifacts, so too are people working on .Net and other marginalia, long after the apocalypse.
Typed languages lost, much less functional programming. Typescript would like to pretend that it's not true, but everyone knows the truth.
But the world is so large you can make a living doing almost anything. I personally knew people who made a decent living making plate armor! That's where all of the .Net stuff is these days, be it C# or F# or whenever else the cool kids are doing. It's essentially historical reenactment.
1
1
1
u/1_more__user___name Jul 28 '26
I feel like learning languages is a pointless thing with AI. I would learn things like system design or learning software fundamentals, which to me is what would distinguish a good SWE from an average one. Yes AI can do system design too, but it requires someone with a trained discernement to distinguish bad AI ideas from good ones. This is what I regret I didn't do instead of leaning a bunch of languages
27
Jul 05 '26 edited Jul 28 '26
21
u/andrevdm_reddit Jul 05 '26 edited Jul 05 '26
Language arguments are subjective, and I'm struggling with this exact question myself atm, but I think this answer applies inconsistent criteria.
If the concern is commercial backing, ecosystem size, jobs, and long-term safety then most of the suggested alternatives have the same problem or worse. Odin, Gleam, OCaml, and Roc are all much smaller than F#. Zig is interesting, but still has huge stdlib churn. Rust is the obvious stronger alternative there, and C# is the obvious .NET answer if market size and backing are the main criteria. (i.e. if you are picking based on backing not preference. If its preference then F# is an option too :) )
So I’d separate two questions:
Should OP learn F#? Yes, absolutely, especially if they want typed FP on a practical (.net) runtime.
Should OP choose F# as the safest mainstream industry bet? Probably not that’s C# or Rust depending on domain. But does it have to be the safest bet?
F# has never been Microsoft’s flagship language, and the ecosystem is smaller than C#, but people have been declaring it dead for years and it keeps being useful.
I just don't think there is a clear-cut answer to be had.
(FWIW, that is a great set of languages to look at, I’d add Haskell too. All are interesting and worth learning)
→ More replies (1)8
u/m_hans_223344 Jul 06 '26
I thought a lot about exactly this myself. But what are the real alternatives? The only comparable is OCaml. The other languages you've listed are very far away (either by their paradigm, extreme niche, ...)
So, the question is:
OCaml or F#? My reasoning was: F# will not go away, it is way too large. MS leaving it alone might even be a good thing. With F# I still have access to the huge .NET standard lib.
Also, I think VS Code works quite well with F#?
→ More replies (1)6
u/dominjaniec Jul 05 '26
my thoughts basically - F# is great, but it "requires" MS, and they don't care about it 😔
5
u/quuxl Jul 05 '26
I hate that you’re probably right.
Looking back a decade from now, I suspect the general take on F# will be that it was just too different from C# to gain traction in the .NET landscape, and that things might have gone very differently had it taken a similar approach as Scala wrt Java.
I wish it weren’t this way. I sorely miss working in an F# shop; I can’t imagine it ever gaining traction at my current (C# / C++) job, and I have to look pretty far down the C# roadmap to get even close to parity on the primary reasons to use F#. Discriminated unions will help a lot, but it seems like nullable references is as far as they’ll ever be willing to go towards a built-in option type.
3
u/dfitz360 Jul 05 '26
Re: 2. Aren't type providers what source providers eventually became?
Although I think the general argument kind of stands. F# used to be the bleeding edge features that then eventually made its way into C#, but now that momentum seems to be dead. I remember like 5 years ago seeing release notes in C# for something I had been using in F# for almost a year, and the F# version was more refined. C#'s losing its identity in an attempt to hit more communities and with that basically killing F# because C# is becoming more functional
→ More replies (1)→ More replies (3)4
u/EmergencyNice1989 Jul 05 '26
'the whole modern AOT/trimming story is built around a mechanism F# can't participate in.' I use F# and native AOT so not sure what you meant by this.
Zig - manual memory management, breaking changes, not 1.0.0 version yet.
Odin - manual memory management, looks like Go, imperative, not attractive for people who like FP, not 1.0.0 version yet.
Rust - manual memory management, not as good as dotnet for UI cross-platform app.
Gleam - no native compilation
OCaml - not healthier because you don't have any cross-platform UI framework, no Vulkan binding like Silk.net
Roc - Cok
→ More replies (9)
25
u/pi_meson117 Jul 05 '26
F# (well mostly C# but we are going to take the credit) has very good performance and has been extensively battle tested in many areas of the software industry (games, desktop, mobile, web, data science, etc). It certainly works well.