As a Microsoft Development Technologies MVP, I can tell you MS gets it and has made huge progress in usefulness and usability of the DotNet ecosystem. Keep in mind there are on the order of 1M C# developers worldwide. Most in enterprise environments and most belonging to the dark matter developers. They don't hang out on HN, Twitter, go to conferences, write blogs, or even read them.
This will keep MS dev ecosystem development focused on C# and object oriented for the rest of my life. But I can tell you all the MS techies in .NET development are interested in and respect F# and functional programming and want to see it succeed.
There has been pain getting to cross-platform .NET, which is what NetStandard/NetCore is all about. It is pretty stable and useful today, and there is a lot of wood behind the development arrow going forward.
I love C#, and have been using it since the 1.0 days back around 2002. What has really annoyed me as of late is the confusing branding. Standard vs Core vs what the hell is Framework 4.7 called?
Along with the branding confusion, the formally very approachable and discoverable MSDN documentation for the class library has become a near useless clusterfuck. They've deprecated made.microsoft.com/library/ (at least for .Net) but don't mention it on the site!
> What has really annoyed me as of late is the confusing branding. Standard vs Core vs what the hell is Framework 4.7 called?
I agree that it's confusing at first, but when you step back and look at why Microsoft went down this path, it starts to make a lot of sense.
When .NET was launched in 2002, it was a closed-source, Windows only development framework.
Microsoft was a very different company back then, and Windows was its gravy train. If you were a developer inside the Windows ecosystem, you were showered with (closed-source) love. If you were outside? Well, fuck you, Microsoft will crush you. Everything was oriented towards getting retail/enterprise consumers to buy Windows (and Office etc).
The 180 degree flip to embrace open source is a very recent development. Microsoft realized that desktop OS's were less and less relevant commercially, and that the future was in cloud services.
I haven't looked at the figures, but I assume it's a lot more lucrative to lock in tens of thousands of dollars per month in cloud subscription/support fees than selling Windows direct to consumers.
So with this reorientation, Microsoft needs a strategy to capture the cloud services market (and keep in mind that this is 5-10 years after AWS has been running the shop).
The solution? Open source .NET to accelerate its adoption and entice developers towards Azure.
First, Microsoft won't care if you use their implementation of .NET or Mono - as long as you're using it on Azure, you're fine. Hence .NET Standard - literally, an open-source standard that anyone can code against, and know that their stuff will just run, no matter which implementation is used under the hood.
Second, Microsoft then release their own implementation of this standard - .NET Core.
Third, we come to .NET Framework. For most entrants to the ecosystem, you can consider this to be legacy. This is the evolution of the original (2002) closed-source approach to .NET, and is only sticking around due to Microsoft's long-term commitment to its software releases.
Again, I agree that none of this is clear when you're new to .NET. It makes a lot more sense when you realize the naming evolved from Microsoft shoehorning a legacy platform into a fundamentally new, open-source/SaaS subscription strategy.
I don't have a lot of recent experience with other ecosystems, so take what I say with a grain of salt. With that disclaimer in mind:
* Visual Studio is the best IDE, bar none. It's a pleasure to use and Microsoft keeps it up to date so it's usually bug free for normal use. I don't even know what its serious competitors are. Eclipse? VIM? Forgive me for not knowing. :)
* C# is the best OO programming language (if you don't need the raw speed of C++ or, I guess, Rust). Java is a disappointing mess controlled by, yes, Oracle. Python and other dynamically typed languages are fine for scripting, but not for developing complex professional software.
* F# is the best functional programming language for getting stuff done. In fact, it's the best language for getting stuff done, period. Haskell is amazing for its mathematical purity, and I've learned so much about FP and category theory from the Haskell community, but F# gives you immediate access to the zillions of packages created for the .NET ecosystem and is totally compatible with C#. You can also use F# for imperative OO programming when you need to (which is almost never).
* SQL Server is the best RDBMS. Oracle is painful. The open source databases (PostgreSQL, MySQL, etc.) have come a long way, but still don't have SQL Server's combination of power and ease of use. NoSQL databases are interesting, but seriously lacking in important features. I've yet to come across a use case where I would actually want to use one. (Special demerit to MongoDB for using JSON as a query language. Good lord.)
* Windows is fine. It's not Unix/Linux, but it lacks for nothing.
If I had the time to investigate other ecosystems, I'd like to pick up Rust and Haskell. I'm afraid that Python and JavaScript will eat the entire world, before then, though. :)
Having switched from the Windows ecosystem to Linux a while back, I have a few comments:
I don’t know how bug-free VS is now, but VS 2005 and 2008 were buggy in problematic ways. Support was friendly, but the bugs didn’t get fixed quickly. IntelliType (for C++) was nifty bug extremely buggy. Switching to emacs was a major step back in usability, but it was enormously faster and it tended to just work.
C# has a top notch compiler. Sadly, MS’s C++ compiler was, and mostly still is, pretty bad.
Getting off of Windows was a big win. Managing a Linux machine is much nicer, and, when something doesn’t work, you have a better chance of figuring out why.
I have no experience with SQL Server. MySQL and PostgreSQL both sucked back then.
Honestly, C# has replaced C++ for the large majority of Windows application developers. Developing C# apps in Visual Studio is basically frictionless in a way that C++ will never be. C++ as a language (regardless of IDE) is a major pain in the butt.
My big Windows program wasn’t a Windows “application”. It was high performance software that happened to run on Windows. C# was not even close to being in the running.
If we were starting from scratch, Rust would be a credible contender.
I think Haskell is a very nice general purpose language. I think of it as a better Java. There's no need to think of it as a scary academic thing, unless one focuses on the wrong kind of blog posts. https://patrickmn.com/software/the-haskell-pyramid/
I don't mean to knock Haskell at all. It's a fine language with a great community around it.
That said, the number of commercial applications developed in Haskell is very small, because, I think, it doesn't integrate as well into the larger ecosystems around it. It seems like it's a beautiful island all by itself.
The number of commercial applications developed in functional programming languages as a whole is pretty small compared to mainstream languages. I am a dotnet dev and also like F# a lot, but I cannot think of very many commercial applications written in F# either.
That's true, but for someone like me in a C# shop, I can slip F# code into our apps seamlessly. No one would say the apps are written in F#, but several key components are.
Hopefully, FP will take over the world soon and Haskell and F# will both be at the top of the charts! :)
Yeah but... at the risk of sounding like a dick... is stack overflow the best place to guage opinion on such things? I mean we’re essentially asking the people who post questions like “why is my HTML table not look right?” To posit an opinion on what they consider best of class in a whole bunch of categories that they’re probably novices at.
I think it’s pretty clear that the people with the best opinions on SO are vastly outnumbered by people with unqualified opinions. Surely something like Simpson’s law can be applied here. Like - of the people with n amount of accepted answers for any given tag - what is their opinion on something related to that tag?
Are you sure? I suspect that they’re the people most likely to participate in those polls.
I personally can’t be bothered with these kinds of questions, but I remember that back in my early days, I was something of a zealot when it came to things I knew vs things I didn’t. I cut my teeth on PHP, MySQL and Flash/Actionscript. Had you asked me back then how I rated those things, I’d have given them 10/10, despite having nothing to compare them to.
sure sql studio that has the same problems like the last time i used it 10 yeaars ago, lol microsoft you cannot refresh the side view after i make changes, so i have to hit refresh constantly.
Oracle: we make the stuff that other people make you use.
Other candidates include (but not limited to)
- Atlasian - Microsoft - Adobe