4 ms·
>Most similarly good languages (except F# maybe?) seem to get lucky with becoming a poster boy for at least one company. This one I still can't wrap my head ar
by carlmr 4y ago
>Most similarly good languages (except F# maybe?) seem to get lucky with becoming a poster boy for at least one company.
This one I still can't wrap my head around. F# basically was the source of almost all innovation in C# and C# still is missing some features and was not designed in the same way as F# so a lot of the features they "stole" feel tacked on.
Microsoft should have just made F# the C# successor.
- solarkraft 4y agoI had a brief look at F#, it didn't fit my mental model and I looked away. Meanwhile I do like using the tacked-on functional features in traditional languages because it allows me to get the benefits when it fits what I'm doing instead of having to fully buy in.
- Herval_freire 4y agoYou're just using the tacked on features as syntactic sugar. You haven't "bought in" at all. I was traditionally trained like you under OOP and procedural methodologies. After encounter FP I fully bought in and developed two mental models. The fp model lives side by side with the the oop/imperative model. With equal knowledge in both one can make a more unbiased judgement. The fp model is actually superior imo. I largely have the opposite strategy now when programming. My mental model is largely fp, and I occasionally cheat and sprinkle in procedural or oop syntax here and there as syntactic sugar. The basic realization here should be that mutating shared state should be avoided and segregated as much as possible.
- ok_dad 4y ago> syntactic sugar To be fair, all languages are syntactic sugar over asm which is s-s over CPU machine code. A mental model is just that: a model for something physical that's in your head. FP or OOP are both mental models for programming in nearly any language. Some languages have first-class FP or OOP features, and some don't, but you can tack-on either of these, and others, to nearly any language you want to. It's really dumb to look down on others choice of mental model if it works for them. I have seen successful projects that were designed around both OOP and FP models.
- Herval_freire 4y ago[flagged]
- GrumpySloth 4y agoGarbage collectors, type systems, modules, polymorphic functions are not syntactic sugar. Asm also isn’t syntactic sugar, if only for the polymorphism (how many different CPU instructions are MOV in Asm again?); or just the fact that it’s text and machine code is binary code, while desugaring code doesn’t change its language.
- usrnm 4y ago> Microsoft should have just made F# the C# successor. You underestimate the importance of compatibility and familiarity for existing developers. You can show C# code to any C++, Java or even JS programmer and expect them to grasp the idea of what's going on very quickly. This is a big deal and should not be discarded lightly
- carlmr 4y agoIn terms of looks mostly it just doesn't have as many types and fewer parentheses. Shouldn't be an issue if you know python.
- bbkane 4y agoIn my experience, Algebraic types alone take some work to get used to using competently. That's just one F# uniqueness and there are others. Learning Elm (a similar language) definitely made me a better engineer, but I really don't think learning F# is the same as learning Python for someone with experience with imperative/OO languages. I think the reason it sometimes seems like it is that easy is that, as we gain experience with tools, we tend to forget the difficulties we had learning them.
- carlmr 4y agoI had difficulties learning OOP, I always preferred a more functional style, despite "consensus" needing 20 years to catch on that functional programming alleviates a lot of the issues we have with OOP. Learning F# it instantly clicked. OOP learning issues IMHO are intrinsic to the style, because it's just so seldom helpful in making programming easier. Design patterns are just a symptom of this issue. That OOP is just a misunderstanding another. "Real" OOP as practiced in Erlang/Elixir is quite useful.
- karmakaze 4y agoI think they are making F# the successor but very slowly by evolving C#. I would also have preferred the direct path.
- ecshafer 4y agoF# is such a nice language. A great modern ML language on the .net runtime with full MS package support that's pretty awesome. But unlike something like Scala on the JVM F# is so simple and straightforward, it has a lot of features without feeling bloated. The fact that MS has just abandoned F# is disappointing.
- imwithstoopid 4y ago> Microsoft should have just made F# the C# successor. their target audience does not want this