I really love F# and would love to use it at work but I feel the biggest hurdle is that the language feels like a dotnet second class citizen and for the average manage it looks like Microsoft itself doesn't even believe in the language so its too risky to adopt it. I really wish Microsoft would market it more and support it better. For most stuff like Dotnet Maui there isn't even an official F# template.
Official template came out with F# 8.0 - but yeah... it seems like Microsoft wants to make C# adopt enough functional features so that it can replace F# as the "functional style" language, forgetting that it's really the typesystem that makes F# better than C# for many applications, which they will never be able to patch, because of backwards compatibility
I think your point on F# devs generally being more senior and therefore having higher salaries is a good point. Most F# devs I have met are migrants from the bigger languages. They learned C#/Python/Java and then looked for a "better" language. While there is beginning F# training material, it's mostly paid. There is not a plethora of free learning materials being published all the time like there is for Python.
@@HAMYLABS Thank you! I really appreciate that. I agree that F# is niche but I also believe it has deep enough roots that it's not going away any time soon. I know of several multi-billion dollar companies that have it as their backbone and we are building some revolutionary tech where I am at.
I learned F# before C#, and I have to say that it was quite hard finding good tutorials that did not assume prior familiarity with .NET. Sooo many resources assume that you already know C#
Before I understood FP I was not attracted to F# at all, it just looked "geeky" to me. It's almost impossible to convince an imperative programmer that FP is fantastic, because you need the experience of using it to enjoy it. Beginners don't have the pain of having shot themselves in the foot again and again, therefore they don't see the point of static typing, immutability and pure functions. All those things makes it harder to write code, and why would a beginner want to make it harder for themselves? Unfortunately FP is quite a lot harder than imperative programming and that is going to cause problems for mass adoption. So the question is if there is some way to make F# easier to learn or understand for beginners, we really need to put our thinking caps on for this one!
static typing and making it hard to compile is saving you from logical errors at runtime. Developers are too keen to get to the execution phase because it gives them a feeling of satisfaction and they can tick of tickets in the sprint, but this doesn't happen in F# unless the compiler lets you and if you're struggling to get it to pass the compiler, it's a sign that you need to think about what you are doing more.
I'm learning how to use F# with Unity's new ECS/DOTS data-oriented design systems. Nice to see immutable, functional, concurrent design in a 3D engine! :D
I love the language but there's some issues- 1. I actually think F# would make a very good starter language for a beginner coder, but there's no great "end to end" project video I can point to. I can find 30+ videos that will show you how to bash out snake/a small website/a simple desktop app in python/JS. Almost all F# videos are either "This is what a loop is" and no more or "migrating enterprise micro-services with this library that's maybe still supported". Hyperbolic, but I think you get my point. I do think the FEssential pdf is GREAT for a deeper dive, but those aforementioned python videos are what got me into coding in many ways. 2. Related to the previous point, GUI/Frontend seems like it's not where it needs to be. You are either A. stuck using or KNOWING js/C# or B. stuck using a library that just isn't all the way there with lots of little or undocumented issues. This point could be inflated in my view because of the lack of aforementioned end to end videos/docs, but I've certainly seen more developers bounce off front end F# in vids than easily succeed, and that's concerning. There's other things I think the language is shooting itself in the foot on (default lensing support would make using nested records much much easier), but those 2 are the major ones i've seen. Granted i've got a VERY slanted view compared to the average F# user, but I also think that if users like me bounce off it's going to be hard to grow the community.
Yeah completely agree. * 1 - Hard to get started / get inspired to get started -> leads to small community * 2 - Lots of small libs that have relatively little support, I think cause small demand
i have read some papers about this lang (i was searching about functional programming), and i really enjoyed it, but as you said, it have a very small community, lot of videos that you find is from 3 or 6 years ago. however, i will keep using it on my personal projects :v
Wrt. 11:45 (from C# to F#). I think you are on to something there. First, I believe most people in general do not have too hard a time getting going in F#, but there are one major caveat, which comes in two flavours, and a related caveat - so let us say 3 caveats. 1: If you have looked at C# first, then it can become very confusing what is going on in F#, because many constructs are tantalizing similar, but not really the same, even if they look to be, which can almost be a trap for people. Also if you 'just' want to use it as C#, then using F# will feel like an annoying discount version of C#. 2: A large portion of teachers think it is nice to introduce F# in a C#-kind-of-way, because they believe that may be easier, or think that everyone has seen at least some C#. Eventually that runs in to the same problem as above. 3: Finally, I have seen beginners ask "how do you do this" in F#, and if they haven't been told that there are dozens of ways, they will get really confused by the dozens of different answers to that same question.
Have you done a video yet explaining in more detail why you think the ergonomics are unrivaled? I'd be interested in watching that. How much experience do you have with the biggest competitors like Elixer and Clojure?
I've been thinking about making a video on why I like F# and that might be good stuff to include. I've only glanced at Elixir and Clojure and follow their communities on Reddit but from what I gather, one of the big things people want is static types so it seems like F# is similar but with static types as a first class citizen so I see it as a better fit for me since I like static types.
Non-production utility usage is one way in. E. g., web scraping using Type Providers for inferred strong typing with IntelliSense. Also, relatively easy web automation using Canopy.
I wish I had a place for F# because I love the language but no company I know is using dotnet - and python, golang, and rust are great for building services and cover the whole gambit of fast coding to fast execution. For my home projects, rust is slowly replacing every other language because I can use it to program my web services and also my imbedded device projects.
@@rudroroy1054 There are stacks in rust that will generate web assembly and javascript like Yew, but I don't use those. I like to just use an API on the back and React for the front. If I was forced to choose a rust front end, I would look into leptos.
Yeah I wish there was a way to filter it to people that: * Have used this technology in a production system * Would choose this technology to build a new production system I feel like this would be better cause we lose a lot of the hype people who are just doing this stuff as a hobby. On the other hand this would basically be a self-fulfilling prophecy of only having mainstream langs used in prod ever show up on the leaderboards so maybe bad for surfacing smaller langs. Idk what a better system would be though nor how this would even be implemented.
Elixir is a great language but has a few hangups that make it not my top choice - lack of type safety, low compute performance. Performance is rarely the bottleneck for me and Elixir shines in non-compute-constrained environments (web) so this is more of a nitpick than anything else. Lack of type-safety is huge for me though and is basically a non-starter. I know Elixir is getting types in the form of type specs but usually those things don't end up that well - see Python, JSdoc, Clojure etc for examples that work but could be better. That said I really like the direction and I'm very excited for Gleam which is essentially the type-safe version of Elixir (both run on BEAM) so that has a big chance of being a top lang for me. Why I think type-safety is so important: ruclips.net/video/xl9DeGYC36I/видео.html&ab_channel=HAMYLABS
I really love F# and would love to use it at work but I feel the biggest hurdle is that the language feels like a dotnet second class citizen and for the average manage it looks like Microsoft itself doesn't even believe in the language so its too risky to adopt it.
I really wish Microsoft would market it more and support it better. For most stuff like Dotnet Maui there isn't even an official F# template.
it really feels like a self fulfilling prophecy when Microsoft admit it's not their focus compared to C#
Official template came out with F# 8.0 - but yeah... it seems like Microsoft wants to make C# adopt enough functional features so that it can replace F# as the "functional style" language, forgetting that it's really the typesystem that makes F# better than C# for many applications, which they will never be able to patch, because of backwards compatibility
@@Iloerk There is an official .NET Maui Template for F# now? I can't find it via google nor via Visual Studio. Only unofficial stuff by third parties.
I think your point on F# devs generally being more senior and therefore having higher salaries is a good point. Most F# devs I have met are migrants from the bigger languages. They learned C#/Python/Java and then looked for a "better" language. While there is beginning F# training material, it's mostly paid. There is not a plethora of free learning materials being published all the time like there is for Python.
Just have to say - I love your videos and think they're def helping make F# more approachable!
@@HAMYLABS Thank you! I really appreciate that. I agree that F# is niche but I also believe it has deep enough roots that it's not going away any time soon. I know of several multi-billion dollar companies that have it as their backbone and we are building some revolutionary tech where I am at.
I learned F# before C#, and I have to say that it was quite hard finding good tutorials that did not assume prior familiarity with .NET. Sooo many resources assume that you already know C#
Before I understood FP I was not attracted to F# at all, it just looked "geeky" to me. It's almost impossible to convince an imperative programmer that FP is fantastic, because you need the experience of using it to enjoy it. Beginners don't have the pain of having shot themselves in the foot again and again, therefore they don't see the point of static typing, immutability and pure functions. All those things makes it harder to write code, and why would a beginner want to make it harder for themselves? Unfortunately FP is quite a lot harder than imperative programming and that is going to cause problems for mass adoption. So the question is if there is some way to make F# easier to learn or understand for beginners, we really need to put our thinking caps on for this one!
static typing and making it hard to compile is saving you from logical errors at runtime. Developers are too keen to get to the execution phase because it gives them a feeling of satisfaction and they can tick of tickets in the sprint, but this doesn't happen in F# unless the compiler lets you and if you're struggling to get it to pass the compiler, it's a sign that you need to think about what you are doing more.
@@sashangovender5327 indeed
I'm learning how to use F# with Unity's new ECS/DOTS data-oriented design systems. Nice to see immutable, functional, concurrent design in a 3D engine! :D
I love the language but there's some issues-
1. I actually think F# would make a very good starter language for a beginner coder, but there's no great "end to end" project video I can point to. I can find 30+ videos that will show you how to bash out snake/a small website/a simple desktop app in python/JS. Almost all F# videos are either "This is what a loop is" and no more or "migrating enterprise micro-services with this library that's maybe still supported". Hyperbolic, but I think you get my point. I do think the FEssential pdf is GREAT for a deeper dive, but those aforementioned python videos are what got me into coding in many ways.
2. Related to the previous point, GUI/Frontend seems like it's not where it needs to be. You are either A. stuck using or KNOWING js/C# or B. stuck using a library that just isn't all the way there with lots of little or undocumented issues.
This point could be inflated in my view because of the lack of aforementioned end to end videos/docs, but I've certainly seen more developers bounce off front end F# in vids than easily succeed, and that's concerning.
There's other things I think the language is shooting itself in the foot on (default lensing support would make using nested records much much easier), but those 2 are the major ones i've seen. Granted i've got a VERY slanted view compared to the average F# user, but I also think that if users like me bounce off it's going to be hard to grow the community.
Yeah completely agree.
* 1 - Hard to get started / get inspired to get started -> leads to small community
* 2 - Lots of small libs that have relatively little support, I think cause small demand
i have read some papers about this lang (i was searching about functional programming), and i really enjoyed it, but as you said, it have a very small community, lot of videos that you find is from 3 or 6 years ago.
however, i will keep using it on my personal projects :v
Wrt. 11:45 (from C# to F#). I think you are on to something there. First, I believe most people in general do not have too hard a time getting going in F#, but there are one major caveat, which comes in two flavours, and a related caveat - so let us say 3 caveats.
1: If you have looked at C# first, then it can become very confusing what is going on in F#, because many constructs are tantalizing similar, but not really the same, even if they look to be, which can almost be a trap for people. Also if you 'just' want to use it as C#, then using F# will feel like an annoying discount version of C#.
2: A large portion of teachers think it is nice to introduce F# in a C#-kind-of-way, because they believe that may be easier, or think that everyone has seen at least some C#. Eventually that runs in to the same problem as above.
3: Finally, I have seen beginners ask "how do you do this" in F#, and if they haven't been told that there are dozens of ways, they will get really confused by the dozens of different answers to that same question.
True. I tried to show F# to my friend, but he was constantly dropping f bombs, like "where the f are parenthesis i can't read shit"
Have you done a video yet explaining in more detail why you think the ergonomics are unrivaled? I'd be interested in watching that. How much experience do you have with the biggest competitors like Elixer and Clojure?
I've been thinking about making a video on why I like F# and that might be good stuff to include.
I've only glanced at Elixir and Clojure and follow their communities on Reddit but from what I gather, one of the big things people want is static types so it seems like F# is similar but with static types as a first class citizen so I see it as a better fit for me since I like static types.
@@HAMYLABS Sounds like an interesting video to me :)
@@HAMYLABS I'd love to hear what you think of any other functional programing languages too, like Haskell and Scala if you have any opinion on them.
Could Fable or Elmish be F#'s killer app?
Non-production utility usage is one way in. E. g., web scraping using Type Providers for inferred strong typing with IntelliSense.
Also, relatively easy web automation using Canopy.
I wish I had a place for F# because I love the language but no company I know is using dotnet - and python, golang, and rust are great for building services and cover the whole gambit of fast coding to fast execution. For my home projects, rust is slowly replacing every other language because I can use it to program my web services and also my imbedded device projects.
Agree - I've used dotnet at work but never F#. There are a lot of languages to choose from and these days most are pretty good (that's a good thing!).
Rust is only for backend right? you can't do client side programming with Rust?
@@rudroroy1054 There are stacks in rust that will generate web assembly and javascript like Yew, but I don't use those. I like to just use an API on the back and React for the front. If I was forced to choose a rust front end, I would look into leptos.
@@rudroroy1054client side is only JavaScript not even a question.
the best lang ever, call me a cultist, i don't care ;)
Fellow cult member reporting in =)
Beware of T1: Loved. It's often conflated with hype.
Yeah I wish there was a way to filter it to people that:
* Have used this technology in a production system
* Would choose this technology to build a new production system
I feel like this would be better cause we lose a lot of the hype people who are just doing this stuff as a hobby. On the other hand this would basically be a self-fulfilling prophecy of only having mainstream langs used in prod ever show up on the leaderboards so maybe bad for surfacing smaller langs.
Idk what a better system would be though nor how this would even be implemented.
Try Elixir.
Elixir is a great language but has a few hangups that make it not my top choice - lack of type safety, low compute performance.
Performance is rarely the bottleneck for me and Elixir shines in non-compute-constrained environments (web) so this is more of a nitpick than anything else.
Lack of type-safety is huge for me though and is basically a non-starter. I know Elixir is getting types in the form of type specs but usually those things don't end up that well - see Python, JSdoc, Clojure etc for examples that work but could be better.
That said I really like the direction and I'm very excited for Gleam which is essentially the type-safe version of Elixir (both run on BEAM) so that has a big chance of being a top lang for me.
Why I think type-safety is so important: ruclips.net/video/xl9DeGYC36I/видео.html&ab_channel=HAMYLABS