4 ms·
It is, if you know where to look. Therein lies the problem. The language doesn't have much marketshare, and few champions. I just finished reading Scott Wlasc
by eckza 4y ago
It is, if you know where to look.
Therein lies the problem. The language doesn't have much marketshare, and few champions.
I just finished reading Scott Wlaschin's Domain Driven Design for Functional Programmers and it's an incredible, batteries-included guide that goes from "hello world" to "and here's how you use it in an organization" in a few hundred pages.
I wish I had been exposed to it about a decade ago. Incredibly easy to follow and well-explained.
- fsloth 4y agoThis! Other good books are ”Expert F#” by Granicz, Syme & Cisternino, ”Real world functional programming” by Petricek and ”F# for scientists” by Harrop. The last is old but still really great in succintly explaining what ’new&unfamiliar’ structures in F# are great for pragmatic software engineering. Why is there so little noise in F# land? I have no data, but I can guess that the language is so unproblematic that everybody is just happily coding instead of explaining how to fix something. It’s also not very good at guis so there is usually nothing visual to demonstrate.
- grugagag 4y agoWhat’s the markershare though? F# is great but Microsoft made it sortof a second class citizen
- fsloth 4y agoF# is installed by default with Visual Studio, and the tooling is pretty good. I think it hardly is second class citizen? Not promoted nearly as much as C# for sure. AFAIK F# is on quite solid foundation, as there is the F# foundation that would keep ball rolling, so to speak, were Microsoft to renounce the language. I have no idea what the marketshare is though. On Tiobe (https://www.tiobe.com/tiobe-index https://www.tiobe.com/tiobe-index) it seems to be nearly on par wit Scala and much more popular than Haskell or Ocaml.
- pjmlp 4y agoPretty good if only what one cares about is CLI and class libraries. According to JetBrains developer survey, an amazing 3%. https://www.jetbrains.com/lp/devecosystem-2022/csharp/ https://www.jetbrains.com/lp/devecosystem-2022/csharp/
- fsloth 4y agoTooling: Not only CLI and classlibs. The debugger in Visual Studio follows calls to c/c++ dll:s over pinvoke withhout a cinch. (Same as C#). If you wrap complex entities in e.g. Protobuf then writing hybrid applications is pretty straighforward and on solid ground. All of the GUI stuff is missing of course. I would not advice to implement a GUI on top of F#. The main feature of F# imo is it's succint type system where one can wrap everything in a type without much bureaucratic cost, but in a way that makes program structure so much more obvious. "If it compiles it's correct" is prety much how it goes.
- pjmlp 4y agoNot enough to justify many .NET shops to go multi-lingual projects. They already have to use C# no matter what, given the GUI and database frameworks. Adding C++ or PowerShell into the mix might happen, due to the frameworks and workloads that require reaching out to them. While adding F#, even if more expressive, it barely makes sense from business point of view. It isn't as if a mixed C#/F# codebase brings the same value as doing Python/C++. Also to note that while F# team has pivoted into trying to make F# attractive to data science, their employer is one of the reasons why CPython is now taking performance more seriously.
- fsloth 4y agoI would claim the business benefit of F# would come from a more succint, legible and correct codebase that saves developer time, but I have no basis for that argument except intuition I get having developed both in C# and F#. Also I know much better engineers than me to whom this would be a nill-argument ("You can write everything really fast, just don't make mistakes"). "It isn't as if a mixed C#/F# codebase brings the same value as doing Python/C++." I think it depends on industry and domain what the value add specifically is? To me it would totally make sense to have small, succinct business logic module in F# that talks natively to a verbose chunk of C# wpf for instance. "Also to note ... CPython is now taking performance more seriously." Personally I would not hold Python isomorphic to F# on any architectural level, the former not having the typesystem of F#. IMO the whole point of F# is the wonderful typesystem, immutability first, combined with full .NET ecosystem. On the other hand I would not try to use F# for the stuff I use Python for - so trying to take Python head on does not sound like a super good strategy. I guess F# will languish in the "few percenter limbo" in the best case. But it IS a really nice language :)
- eckza 4y agoI think that the problem is that: - fsharp's big selling point is that it runs on dotnet - most FP ideologues run screaming from M$, and there are other, better (subjectively), more-active FP langs that do many of the same things, such as OCaml and Haskell - most dotnet shops are "csharp or die" and getting fsharp adoption is more or less an impossible task for cultural reasons I support fsharp and generally like it, but I'm not reaching for it for net-new stuff that doesn't already have a dependency on dotnet. $0.02.
- fsloth 4y ago"most FP ideologues run screaming from M$" This can be also a blessing that makes the F# community quite pragmatic rather than dogmatic :) FP makes pragmatic sense, it's not an ideological concept.
- qwerty456127 4y agoF# is a better OCaml. Haskell is too different to compare.