6 ms·
F# looks like a great language... A friend of mine who is a non-programmer DBA just reached out to me and asked about recommendations for learning .NET ... I'
by breatheoften 7y ago
F# looks like a great language... A friend of mine who is a non-programmer DBA just reached out to me and asked about recommendations for learning .NET ...
I've not seen anything as elegant looking as F# in the .net world before ... What do people think ... -- is F# a good language for a beginner to learn which is also sufficiently well-supported that they could find themselves building useful script-like database (MSSQL) oriented utilities as early project ...?
- muststopmyths 7y agoF# has tended to lag far behind C# in Microsoft's ecosystem. I haven't kept up with in a few years, so I don't know how far behind it still is. It is a fun language for sure. If your friend is looking into getting into .net for professional purposes, I would steer them towards C# first. That's likely to be much more useful in the long term. Especially since it can be a stepping stone to other C/C++ like languages. With F# I would bet that they hit some limitation sooner or later where something that could be easily done in C# will take more work in F#. Which could be fine if they have the time/inclination to rough it. I just would not advise F# as a resume builder.
- whb07 7y agoWhile I fully agree with F# being the step child of C#, an easy way to see what’s better is how many features get copied from which language to the other (hint: C# is like China copying tech from F#). Start with F#. Learn the basics well. Parent - Checkout https://fsharpforfunandprofit.com/ https://fsharpforfunandprofit.com/ https://docs.microsoft.com/en-us/dotnet/fsharp/introduction-to-functional-programming/ https://docs.microsoft.com/en-us/dotnet/fsharp/introduction-...
- dgudkov 7y ago>With F# I would bet that they hit some limitation sooner or later where something that could be easily done in C# will take more work in F#. From my experience of working with both C# and F# for a few years, it's more likely to be the other way around.
- pjmlp 7y agoF# lacks the Visual Studio tooling support that VB.NET, C# and even C++ enjoy. It is also not officially supported on UWP, and needs some hacks to the generated MSIL (as .NET Native doesn't cover 100% of all MSIL).
- adgasf 7y agoMost of the F# community seems to be using Ionide on VS Code. This works very well, but if Visual Studio is your preferred editor this can be annoying.
- dgudkov 7y agoThe support for F# in VS leaves a lot to desire, indeed. However, in my experience, I've found that the developer productivity gains from F# outweigh the inconvenience.
- markmark 7y agoNo, just point them at C# so they will actually be able to find answers to problems they run into with Google/StackOverflow.
- BoiledCabbage 7y agoA beginner could learn F# and lean on the .net libraries for any business needs.
- elfexec 7y agoIf he wants to learn .NET, he should start with C# and then looked into the Framework and if he is particularly ambitious - the IL, etc. But I'm guessing he doesn't want to learn ".NET" but rather programming against MSSQL if he is a DBA. C# is easily the most mature language in this domain. Also, since he is a DBA, he could be introduced to ".NET" via powershell as microsoft has been trying to make powershell the default IT/DBA shell for the windows world. It's like bash for windows but entirely object driven.
- seanmcdirmid 7y agoC# is actually a pretty good language. It has functional features, even if not as extensive as F#, and has an OO system that is much more well thought out than Java.
- louthy 7y agoIf functional is what is needed, and C# is your only option, then this will help [1] Disclaimer: I'm the author [1] https://github.com/louthy/language-ext/ https://github.com/louthy/language-ext/
- pjmlp 7y agoGiven that C# and Java have copied features from each other throughout the years, and as someone that uses both stacks since their introduction, I wonder what well thought OO features does C# have that Java lacks.
- seanmcdirmid 7y agoIt’s just cleaner and less verbose; eg interfaces can be implemented privately outside of the class namespace, generics are reified, etc... But then there are things like Extension methods, for example, which are incredibly useful.
- pjmlp 7y agoGenerics being reified are a CLR feature available to any .NET language (which Java in the form of J# could take advantage of [0]), don't have anything to do with C# OOP model per se, and were an impediment to properly implement Scala.NET. This will be fixed on Java side, with value specializations as per Valhala roadmap. Extension methods are also a way to create lots of spaghetti code, trying to track down where the method is actually implemented. Swift and Kotlin codebases are good examples on how one can go a bit too far with extension methods. Java's solution is to offer default interface methods as an approach to traits, which was copied by C# 8. Regarding interfaces, if you mean explicit interface implementations, besides forcing casts everywhere I don't see what is so well thought out about them. [0] - https://docs.microsoft.com/en-us/archive/blogs/gauravseth/custom-attributes-and-generics-support-in-visual-j-net-2005 https://docs.microsoft.com/en-us/archive/blogs/gauravseth/cu...