And if there is need to develop mobile apps you can use Fabulous and share your web code with mobile app, so you end up reusing a lot of code.
Elixir has a full web stack. Phoenix for the web application, Ecto for the data layer and if you want to use GraphQL you can throw in Absinthe. I have been using it a little here and there and I love it. You can pair it with Elm and have a very nice stack or use the views that Phoenix provides.
I came to here looking at F# as I’ve been a developer using the MSFT stack for 20+ years and want to move into functional programming more than just dabbling and I’m very interested in SAFE.
At least in my work environments I think I’m more likely to do something with F# in my career than in Elixir. However, the Elixir community is growing very fast.
This was tweeted by Scott Wlaschin and sort of summarizes C#:
Maybe the killer app is F# and Bolero, especially if it takes less code to create a Blazor app?
Actually, that’s what worries me.
MS has a tradition of creating bad technology and pushing it into companies, forcing them to use while all independent community complains about it, until MS just goes and says that tech is dead and tells everybody to leave it. Just to leave these companies with legacy software to support themselves.
That happened with IE lack of standard, DHTML, MSJVM, J++, asp, Silverlight, and is happening with Reporting Service and Sharepoint.
No wonder companies avoid anything created or pushed by MS. And anything they support makes ppl skeptical.
Maybe elixir grown up very fast because Rails community help very well. Other point is phoenix/elixir potentially best than express/js.
One bad thing about elixir is it is not static typed language
Hi! I just love F# and i would gladly use it at work. The main reason why not, is that I’m the only one who favors FP in our company. So even if I create something in F# I still need to consider that everyone around me prefers C# and they need to be able to understand the code (along with documentation) to be able to maintain it.
If I would guess on a generalized reason for why they prefer C# it would be that I think many programmers go into coding with OOP and more or less procedural coding styles and it takes time and effort to learn FP when coming from these. I started out in “procedural OOP” (read spaghetti party) and IT took time to get a decent OOP skill. Then I discovered FP so it was just time to roll up my sleaves and get to it. But it takes time. And at work there are deadlines and at home there are partners, kids and much needed rest. I have no kids and work 50% so I had my time.
Like people have said here, people need to discover F# through examples (like open source projects) and maybe it’s time that I/we start small and create some components in F# at work. Then people will either curse at us and rewrite it in C# OR(!) they will curse at us and try to figure it out (and of course use the provided documentation that provides beginner instructions). In that case I just can’t see C# winning the battle.
Wondering where F# stands now in 2023. Been using it lately and sort of love it (in compassion to c#), but have the same question OP had some 5 years ago.
I use it every day for client work and love it. I’ve used it for Fable web apps, desktop apps, CLI tools and data scripting.
The F# Strategy has been updated recently (february 2023): F# language strategy | Microsoft Learn
so there’s certainly a plan to give it a future.
My team at work uses F# almost exclusively. We’re always irritated when we have to use Python for something.
TIOBE index of april 2023 seems positive.
Not sure if this matters much, but for sure is not a bad indicator either! I also think being a mature language doesn’t expose F# to early termination issues, see - the bathtub curve, and has a quite long history.
In the end the best way to know is to try it out in your project or in a little script and see if you like it as a language, personally i love for its type inference and domain modeling capabilities, plus type providers (FSharp.Data or SwaggerProvider). I Think F# is an amazing language with great people and a very supportive community! I love it
I’ve been using F# since 2007/2008 at the company that is my main contract. I was the ONLY F# programmer in the company, but due to FP and the F# language I was able to build and maintain a large backend data service with almost no bugs.
Every time I tried to get someone interested in F# on the dev team, I’d get the “Oh it’s too hard”, or “I’m too backlogged to take a look”.
Early this year the main UI development team had a shake up in leadership due to the failure of a death march project (C# Blazor/Angular hybrid). I was asked to come in and get the junior engineers re-organized as a team. I talked to the Executives and asked them for 3 weeks of team building. I then spent those 3 weeks re-building a C# Blazor app in F# using Fun.Blazor (this is an AMAZING approach using AdaptiveValues, that is MUCH better than elmish in my opinion) with the other team members watching along and asking questions via Teams. I now have 3 ardent converts to F# for UI development and the Executive team is asking us to redo the previous projects due to the clean and fast development process that F# allowed.
The key was doing programming with others and being able to answer questions about why I would do X versus Y. It all comes down to getting people into a place where they can see the advantage of the FP approach. BUT you have to be able to explain it and know your stuff.
When I first started none of the programmers wanted to do anything related to F# and thought FP was just BS. Now, the most common response from them was that programming was fun again since they actually thought about the process rather than write boiler plate all the time. They also are starting to point out were we should remove OO from some of our earlier Libraries.
Oh, and the other big issue that was brought up was where are we going to get F# programmers. I’ve been able to prove that give me 3 weeks I can get them up to speed. That is no longer a concern from Management or the Team itself.
I don’t care if F# is EVER “Popular” it just works and its on .Net which means I can use the same language to handle a range of issues I get asked to do. The .Net ecosystem is large regarding API and the library story is great regarding nuget.
You’re doing God’s work!
F# and Scala are the best FP langs for enterprise because they play well with existing enterprise code in C# and Java, respectively.
When a company has invested millions into Java/C# projects, they don’t want that software to cease paying dividends in terms of code reuse.
At my work, the company uses mostly Java, so even though I love F#, I chose Scala for new prototype projects which ended up getting deployed to production.
I think F# should push it’s bug reduction, lines of code reduction and safety qualities for enterprise adoption.
Not a crucial point in this discussion at all, but just for clarification, this was true for many years (and true when that comment was written), but the OCaml 5.0 release last December 2022 changed that.
I am a C# dev who has adopted functional patterns for reasons everyone here is familiar with.
I just want to give my POV.
The functional world suffers from a problem the affects F# particularly badly:
The communication effort is 95% convincing people of functional programming or that the language is viable. Once you’re convinced (which I am) you’re basically adrift. Content runs dry. The community says “here’s a web framework, go forth and multiply”.
I can’t see how that could result in anything more than a thousand baby monolithic crud apps that don’t benefit from being written in F# in a significant way.
The main F# lang site has nothing beyond lang ref and hello world. I can find no reference designs for anything with real, non-trivial infrastructure/operational concerns.
i can recommend few youtube channels
They have videos on more advanced stuff
also check https://fsharpforfunandprofit.com/ which covers some details in depth
There are 2 companies using F# in production, their videos are on YouTube. One is Jet. Com (2018) although it has changed its name as of today, then another is NRK (2023).
Both videos are on the NDC YouTube channel. They show/explain how they have built a system with F# and users interact with it. But for a new user, on the outside trying to build something to attain that level, I guess one has to apply “The more you mess around the more you find out” approach.
Lovely piece. Thanks for sharing your experience.
I believe you’re right, but MS has also broken that tradition. Not least with their development products. That’s what’s interesting these days about F# and .NET and many other technologies from MS. We used to have annual updates to VS and .NET and stuff. Then MS totally changed how they worked within these areas. They adopted modern practices. Now they have open sourced products, and lead the development of these products. Updates have high frequencies. Many F# developers outside of MS contribute personally to the development of F#.
By the way, while many people and companies tried to stay away from MS as much as possible, there were also many that insisted that everything they used had to be MS. I know, because I’ve been badly affected by this in the past, many times. It’s different now, because even MS has realized that there were better products coming from elsewhere, and they eventually embraced these rather than hang on to their own worst products.