5 ms·
the problem with clojure is you have to learn java (or at least some java) same issue i see with F#, you still need to have at least some basic knowledge of C#
by systems 3y ago
the problem with clojure is you have to learn java (or at least some java)
same issue i see with F#, you still need to have at least some basic knowledge of C#
unfortunately running on JVM actually really means running on Java
same for .net it mean running on C#
i dont mind learning two languages, its expected from most developers to know more than one, but context switching in a single function between two language is not fun
- pjmlp 3y agoThe curse of guest languages. However F# suffers from a bigger issue, that clojure doesn't, belonging to the platform owner, that behaves as if it was an error to make it part of VS 2010.
- jeremyjh 3y agoIsn't that because F# failed to win any significant market share? I think F#'s problem is that C# is too good and this was true even in 2010, its not like Scala vs. Java in 2010.
- systems 3y agoF# is way nicer than C# (and Clojure is still way nicer than Java) And I dont think F# failed, I just think it needs to find a way to hide C# and OOP better But the language is doing fairly well, tons of educational resources, tons of videos on youtube , several nice projects on github, solid vs code mode, it is part of .net , but still a lot can be improved, and microsoft is far from abandoning, C# is one of MS flagship products , F# is not a flagship product And I also think that Don Syme is a lot more active working for F# and promoting it, than Rich Hickey is currently working for Clojure
- soulbadguy 3y agoBig F# fan here, but i don't really "doing fairly well" is a fair assessment of the F# ecosystem right now. > microsoft is far from abandoning Might has well. When you look at the resources actually being deployed for F#, it's clear that MSFT either don't care or don't really have plan for F#. Most of the work is done by the community. The number of actual paid/full time MSFT dev on F# is very limited. The tooling is extremely limited, there is no official F# libraries for pretty much any MSFT and azure services (have to relie on C# libs.) In leetcode where the have C# (so already have the infra to run .net stuff, and language like elixir and racket (so they do have more niche language), they still don't have F#. The salvation for F# would come from finding a killer app, something akin to pytorch/numbpy or rails.
- trenchgun 3y agoKiller library. Not an app.
- josephferano 3y agoI worked with F# for about 3 years and the sentiment of most F# developers after using it in anger, including myself, is "I don't want to go back to C#". In my opinion, it didn't win significant market share because Microsoft didn't want it to. This goes even further back than 2010. I don't know if it's because F# was open source and C# was not, as Microsoft's FOSS stance hadn't really come around yet till what, 2016?
- guhidalg 3y agoMaybe, and it's a good case study to compare F# vs. C# with Java vs. Scala to understand why Scala seems to have higher penetration than F#. In my opinion, and I mean this in the broadest way possible, the average C# developer is probably less motivated to learn a new language than the average Java developer. That's because C# developers are prescribed by Microsoft what to do, and Microsoft could deliver a productive-enough experience with C# + .NET Framework + Visual Studio for a long long time. Java's fractured IDE story and runtime (OpenJDK vs. HotSpot) I think lead to a higher concentration of programming language people looking at the JVM as a viable target to build a better experience on top of, so we got Groovy, Scala, Kotlin, (anyone remember Xtend?), IDEA, Eclipse, etc... The bazaar produced and embraced a functional programming language whereas the cathedral treats F# as thunderdome for new C# features.
- Capricorn2481 3y agoScala pretty much hangs on a thread and is only breathing cause of Spark
- bmitc 3y agoReading C# code makes me shudder. It is so hard to read with all the brackets, spacing, indentation levels, and overall verboseness. I honestly don't know how people do it. F# can do OOP just as well if not better than C#, and F# is anywhere from 2-10 times more concise than C#. That being said, the mistake of Microsoft was viewing F# as a competitor to and research lab for C# and the community for viewing and selling it as a replacement for C#. What Microsoft and the community should have done is treated F# as a competitor and replacement for Python from the start.
- pjmlp 3y agoThat is what F# folks tried to pivot the language as of latest, only to be sidestepped yet again by Microsoft, when they hired Guido and managed to be the company that changed his mind regarding CPython optimizations. Also see the development effort Microsoft spends on Python across all their IDEs and what F# gets.
- deckard1 3y ago> The curse of guest languages. Every language lives under the iron fist of libc and the C ABI.
- pjmlp 3y agoNot every OS is an UNIX clone.
- deleted 3y ago[deleted]
- bmitc 3y agoYou really don't need to know C# to use F#. You need to understand .NET, but that is not the same as needing to know C#. F# sits on top of .NET and the CLR in a much more clean way than Clojure sits on top of the JVM. F# also has excellent error messages and is also much easier to install. I know F# quite well at this point but only barely know C#. I know C# maybe only mildly better than C++ or Java in terms of being able to read it and guess what it's doing. I certainly can't write in it without looking up a bunch of stuff.
- Capricorn2481 3y agoAren't most libraries you want in C# though? Isn't there a bit of impedance mismatch between how functional F# is and how OOP C# is? I have heard from a few F# fans how frustrated they are that they have to keep interacting with C#
- nifty_beaks 3y agoI recently did a small project in F# just to try it out. This was my exact experience. Syntacticly it seemed very nice and in some ways it was cool to have all the libraries I'm used to in C#, however due to the latter it ends up being possible to suddenly have `null` or other weird non-functional thingies suddenly pop up.
- bmitc 3y agoOOP is very natural in F#, so it's not that. Interacting with .NET is not an issue. Interacting with a third-party library can sometimes be an issue, if they're doing a bunch of funky C# stuff. For my own use cases, I haven't needed to pull in a bunch of C# developed, third-party libraries. When I did, for example Silk.NET's window bindings, it was easier to just write my own. I couldnimagine that's different for some more industrial use cases though.