6 ms·
Microsoft’s development ecosystem (e.g. SQL Server, .NET) is top notch, even if you hate Windows and Office.
by brianberns 8y ago
Microsoft’s development ecosystem (e.g. SQL Server, .NET) is top notch, even if you hate Windows and Office.
- jackfoxy 8y agoAs 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.
- brianberns 8y agoI'm an F# coder in a company of C# "dark matter developers". (Thanks for that term!) There's no ecosystem I'd prefer to be working in than .NET.
- samblr 8y agoCould you elaborate on what are missing parts in other ecosystems than .net/c#
- brianberns 8y agoI 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. :) All of the above is massively IMHO, obviously.
- wbl 8y agoDoes C# have multiple dispatch ala CLOS?
- brianberns 8y agoNo, it has single dispatch virtual methods, a la C++.
- amluto 8y agoHaving 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.
- brianberns 8y agoHonestly, 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.
- amluto 8y agoMy 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.
- platz 8y agoI 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/ https://patrickmn.com/software/the-haskell-pyramid/
- hermitdev 8y agoI 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!
- avinium 8y ago> 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.
- tomelders 8y agoEh... i’d disagree. But what do you mean by “Top Notch”?
- brianberns 8y agoSee my reply elsewhere in this thread.
- evilmushroom 8y agoThat is not my experience. I've been shipping code for >20 years across a ton of platforms. MS tech has always been a snowflake headache.