
Why is there so much hate for .NET? - grexican
I get why people hate Microsoft and why people would &quot;prefer&quot; not to pay licensing fees for their applications.  But do haters realize that you can run .NET on a fully free&#x2F;OSS stack, in the cloud, AWS, Linux, the works?  That question is not rhetorical.  Do haters realize that?<p>I wrote an article about the good aspects of .NET, but it really only attracted other .NET developers.  That&#x27;s mostly my fault because my network is mostly .NET.<p>Here&#x27;s the article I wrote.  I&#x27;d be curious to hear if it helps the argument for pro-.NET (or at least not anti-.NET): http:&#x2F;&#x2F;steppingback.com&#x2F;dotnet-strong-were-not-who-you-think-we-are&#x2F;<p>I do work in .NET, Node, and most recently I started to dabble in Ruby.  I&#x27;m not against any of those other languages, so I don&#x27;t want to hear how awesome they are.  I want to focus on why people thing .NET is inferior and anyone who uses .NET is ultimately inferior, too.<p>Comment below on why .NET has such a bad rap.  No trolls, please.  I&#x27;d like to have a real conversation about it.
======
bdcravens
Our current codebase has had iterations in ASP, C#, ColdFusion, Ruby, and
others. At different times, we chose the best platform and language for the
job. I was actually a technical reviewer for some of Wrox's first .NET books
back around 2001-2002.

I don't think there's a lot of value using terms like "haters". I think that
implies uneducated opinions.

You CAN run .NET in a non-MS ecosystem, the same way that I can run Ruby on
Rails on Windows Server. My Rails app needs Redis, which really doesn't run on
Windows; most (almost all) of the .NET tooling and resources out there are
built on the Windows ecosystem.

The .NET "hate" is Windows hate. Everytime I try to eject a USB drive from a
Windows machine and it tells me some randome unidentified process still has a
file open, it reminds me why I no longer use Windows. Add on licensing costs,
etc, and you have the basis for wanting to avoid the Windows platform.

So again, "but you can run .NET on Linux". Sure, but if you're building a
solution and the use case calls for open source, is that really the best
choice at that time? I personally think the push for Mono isn't because C# is
the best language (it's pretty good though) but to preserve investment in
existing code and resources.

When people think .NET, they think heavy tooling, configuration screens, and
GUIs. They think tooling sold by "sales engineers" with glossy brochures
filled with bullets points. "Consultants" with perfect teeth and perfect
belts, as opposed to the guy in the hoodie hacking on code. We know this may
not be a reflection of reality (look at tools like Powershell and the
increased open-sourcing of Redmond), but culture is often as important as
technology.

------
virmundi
Personally it is because the languages feel like they are written for Visual
Studio. So if I was using Mono five years ago, I had essentially VIM.
Therefore I didn't do .NET.

Another reason is due to how the stack feels like it's playing catch up.
ASP.NET MVC trailed behind multiple libraries in Java. The .NET developers
were condescending the whole time. They would rant against MVC. They would
extol the virtues of WebForms. The same is true with many other ideas. If
something is not part of the official stack, .NET developers ridiculed it. I
remember conversations where I recommend a library like log4j. Mocked and told
how Windows logging was all I needed.

In the end, so many better things exist for free that I see little reason to
use .NET. I can get a good editor from node.org built on eclipse. There are
paid ides that do that as well, better and cheaper than VS. Because MS was so
closed source and proprietary I'm the past I think they lost the PR battle.

~~~
grexican
You know, I've been using VS for so long and I've gotten it for free for the
last 3 years since I'm a startup and a part of their BizSpark program that I
hadn't even factored that in. That's a very good point.

My IDE consists of a few paid things that you can get for free elsewhere. I've
tried using eclipse, but I'm just not as comfortable. But I'm sure I could get
there if I jumped.

Things I pay for: * VS - quit expensive * Visual Assist X - $90'ish a year *
PHP for VS - $100'ish (because it was cheaper and more efficient to buy a
plugin than learn a new environment)

When I add it all up, I have spent quite a bit on the IDE. I don't necessarily
agree that the IDE is being beaten by other IDEs. The extensibility is through
the roof and I use a lot of tools that really enhance the "shortcomings" of
VS. However, because of the plugins, VS is quite bloated and takes way too
long to start up.

One of the best arguments I've seen, thanks for posting.

------
chc
The Microsoft stack by and large has a very closed ecosystem. You _can_ use it
in a free environment, but that is very much not how people _actually_ use it.
The .NET ecosystem is huge, but it hardly ever touches the freer ecosystem
most languages exist in nowadays. If you use .NET "on a fully free/OSS stack,"
you're more or less in the wilderness, because the other Microsoft stack
people aren't doing what you're doing and neither is everyone not using the
Microsoft stack. It's basically a worst-of-both-worlds proposition.

However, I don't believe anybody actually thinks "anyone who uses .NET is
ultimately inferior." Anyone who would express their distaste for the
Microsoft stack that way is obviously trolling.

~~~
computerslol
I concur. It wasn't until I started working with an OSS guy that I realized
how different (sometimes frustratingly so) the OSS mindset is.

I wont try to draw any conclusions here because I don't know how much of our
personal conflicts are caused by our platform ethos, and how much is just
personal; but I can say that the way we execute architecting and building
novel solutions is completely different.

------
keypusher
I actually think C# is quite a nice language, I just don't like any of the
rest of what comes along with it (Windows, ASP, VS, etc). I am fully aware
that you can _technically_ run .NET on an open source stack, and I am also
quite wary of the shortcomings inherent in that approach. I can theoretically
run my Python webserver on a Windows box, but I'm not going to. If I work hard
enough, I can put a square peg into a round hole, but I prefer not to. Because
I need a bunch of packages that aren't available on another operating system.
Because there were assumptions made about certain system commands and the
presence of certain an init system when I implemented feature Z. Because the
application was built from the ground up to run on the operating system it was
written for, and that operating system will never be Windows.

It is my belief that .NET on Linux will forever be a project like Cygwin or
Wine, a mediocre substitute for pretending one thing is another. I don't hate
.NET, I just consider it irrelevant. A non-option. A second-class citizen. If
I had a whole bunch of C# code sitting around I really needed to run on a
Linux box for some reason, it might interest me, but I don't. I am never going
to use Windows as a server, and .NET seems inextricably linked to Windows.
Modern Java does the things I would want out of a compiled language like C#,
so I'm not clear on why I should care or be interested in something that looks
like an equivalent platform. Perhaps you can educate me. You seem to readily
admit that Microsoft has made many mistakes across the technology stack, why
is .NET so different?

I am curious about how many production .NET applications you have running
right now on hosted Linux boxes, and if you would care to share your
experiences. Perhaps I am completely wrong about .NET on Linux, and there
exists a great and vibrant ecosystem of .NET devs on Linux and all the third
party libraries just work great out of the box. If you want to convince people
about how great .NET on Linux is, write a blog post about your experience
running a large scale project on such a platform. Elaborate on the great
packages and features present in the .NET ecosystem which I can't find in Node
or Ruby or in the JVM. Don't just vaguely allude to there being a bunch of
great open source .NET developers out there making great projects, because the
only example you gave (ServiceStack) is not open source or free. Give us some
great examples and tell us why we can't find that stuff anywhere else.
Convince me that I should care about .NET even when I want nothing to do with
Microsoft.

~~~
grexican
That's a fair argument. I'd love to show you some large-scale solutions I've
done and deployed on Linux, but I can't. I really can't do the same for
Windows either. All my large-scale projects are on Windows, like you'd expect,
and they all happened on big-budget companies where server fees were nominal,
so Windows was the easy choice for those Windows-based companies.

The only projects I've deployed on Linux are SS-based and are small scale and
they're all API-driven web apps. The server-side implementation doesn't get
all that complicated.

You make a lot of very valid points here. I'm still happy with .NET overall
and I hope that you're wrong about .NET on Linux forever being a project. I'd
love to see it gain traction and have more of a community backing. I want to
scale out on Linux and make scaling based on hardware and not complicated
license structures. But as it stands, I think you nailed your argument. I'll
ask around to see if anyone else can add large-scale production experience on
linux to the conversation.

------
RollAHardSix
Postback creating a stateful web. The web is STATELESS. Event-driven, I'm
MAYBE ok with. But the web is stateless and postback attempts to provide pages
with state. So what happens is you end up with shitty programmers who write
big loops for handling page submission back to itself.

ClientID's making javascript an absolute pain or a mess of inline asp code.

MasterPages with forms on the child. It makes things very...strange.

Finally, most developers I've met are just...subpar. I can't really explain
it, they just are good at .net stuff but they lack understanding below the
surface. And I should add I don't just hate webforms (I really hate webforms
actually), but even the new MVC stuff is just not implemented well in real
life, probably because of the developers using web forms before using MVC
stuff. I think MVC is the right way to go, but developers are so completely
behind its sad. You shouldn't bill yourself as ten years experience if you
have spent those ten years doing nothing but falling behind on development
practices. Its not physical time that matters in this profession, its all
about your knowledge-base, which needs to be worked on continuously. As I
said, most .net developers, are just behind (or even scared) of newer
development techniques; and when I say new I don't mean bleeding edge, I mean
4-5 year old techniques. If it wasn't 2004 - 2006, it doesn't really get
another look by some of the 10+ year experience people I have worked with.

~~~
bdcravens
_Postback creating a stateful web. The web is STATELESS._

Doesn't every language attempt to create state? WebForms puts pretty much the
entire state in the client, but other platforms pass some sort of session ID
at the very least.

 _ClientID 's making javascript an absolute pain_

I don't think approaches like the asset pipeline in Rails are much better, IMO

~~~
RollAHardSix
Not having RoR experience, I can't comment on their approach to doing things.

Yes sessions are prevalent in other languages, and that is typically the
'default' method for maintaining state. In .net however, you also have the
following methods: [http://msdn.microsoft.com/en-
us/library/vstudio/75x4ha6s(v=v...](http://msdn.microsoft.com/en-
us/library/vstudio/75x4ha6s\(v=vs.100\).aspx)

Most of which are commonly abused because developers don't know what they are
doing with what, when. For instance I've never seen profiles used, and as much
as I'd like to at-least try the idea, any attempt to move even non-critical
information into profiles is met with heavy resistance as it's something 'we
just haven't used before'.

One place I was hired at (thankfully to clean up some of the mess), insisted
on using query-strings and hidden fields for just about everything-they had no
idea of the proper way to handle things. When they did use session variables
they would attempt some increment magic and mess it up so it was possible to
get everything out of sync and be returning the wrong data. They made no use
of Application Settings and instead used a physical control file to hard-code
global variables to be used across the site.

Part of my experience and hate for .net is specific to instances I've seen-I
will agree to that point, but so much just has to do with developers who use
'whatever works' instead of thinking about the underlying design implications
of their application. I really just believe its because they don't take the
time to learn what is happening 'underneath the hood'. The thing is, the more
I work within the .net environment, it really is apparent at just how EASY it
is to forget the fundamentals, to throw some tool or easy solution at
something, rather then having to think it out. It's great that development
time feels quick but can also feel a bit dumbing-down as-well.

I'm rambling so I'm going to shut up. :)

------
pztrick
At a prior job, we developed in VS10 on a Windows network and deployed to a
Mono/Apache stack. I spent a lot of time debugging glitches in the Mono
implementation after pushing "working" code to the production's Mono stack,
and then writing work-arounds in my code -- not writing features.

I might avoid this by developing solely on Linux (which wasn't an option at
the job) ... but you still may paste in someone else's code written for the
MSFT implementation that borks your project.

To chime in with chc, there is such a huge OSS presence on Linux with a wealth
of useful libraries to tap into. I must save so much time leveraging useful
OSS projects in my Python/Django projects. Thanks, internet.

------
rnirnber
I feel the same way as the author. I got introduced to .NET two years ago at a
job. I came from a PHP background. I've come to really appreciate .NET and the
CLR, and as a developer, I'm convinced I'm way more productive in .NET. I'm
currently building something in Mono outside of my day job, and it's so great
to be able to use .NET on linux.

I realize that Microsoft and .NET may not have had that great of a past
(WebForms ruined its rep IMHO)...but using the new MVC and
EntityFramework...it's clear that .NET is back on the bleeding edge.

Also...most .NET devs like working in .NET because we can be productive in it,
but keep in mind--.NET haters--that most of the time we're not the ones that
chose the stack...we're just left in a position where hardware/sys-admins/MIS
at companies that are still afraid of the cloud are mandating that we have to
use Windows and .NET.

~~~
frowaway001
If the only point of comparison is PHP, everything looks like the best thing
ever compared to it.

------
runT1ME
I'm not sure if .NET has a bad rap at all, rather I believe the onus is on the
.NET developer to show it was a better choice than the alternatives that are
more mature and flexible from a licensing standpoint.

I consult as a software engineer on various projects, frequently C# and Scala.
C# is a fine language, and Monodevelop is continuing to improve, but I don't
see any advantage over choosing a more 'open' language with a much more mature
runtime (JVM) and an overall more advanced language (Scala).

~~~
frowaway001
I kind of agree.

Another thing to mention is the community/culture of .NET developers. I want
to be able to ask "ok, I need to debug/change/fix this, where is the source?"
without getting weird looks.

------
kwhitefoot
For me the problem with .NET is not the libraries but the fact that the two
principle languages (C# and VB) are so old fashioned. Hardly any of the useful
stuff is part of the language, it's all in the libraries which means that.NET
code is very verbose because there is no syntax for things like lists and
dictionaries. The latest versions are getting better, at least you can create
arrays using a compact syntax but dictionaries are still a pain. Both of them
are essentially C without unmanaged pointers and the addition of a few
slightly better types but still scalar types are special and cannot be treated
as objects.

Also they aren't even usefully old-fashioned, why can't we have arrays where
the first item is number 1, or 21 or some other number, Basic had that from
the beginning. Why do I have to use a dictionary when I want to use an ordinal
type such as a character or boolean as the index (Pascal could use any ordinal
type as an array index). Why can't I create subtypes of the integers and reals
(Pascal had that and it prevented large numbers of errors). Functional
languages have implemented guard clauses, these can simplify your code
dramatically and remove the need for a lot of traditional if and case
statements. Bertrand Meyer integrated contracts into Eiffel almost thirty
years ago, and now MS has provided them by means of a clunky add-on that
rewrites your binary after it has been compiled.

And so on, it's not that .NET is bad, it's that after all that effort Anders
Hejlsberg (yes, he of justified Turbo Pascal fame) should really have been
able to produce something so much better, or at least more interesting.

Rant over, thanks for reading if you made it this far.

------
f3llowtraveler
For me it has nothing to do with .NET's qualities.

Rather, it has to do with trust issues arising from the fact that I lived
through the 90s and I remember what it was like when MS was dominant.

Unfortunately Apple is stepping into the same hubristic trap. I will probably
have trouble trusting them for decades as a result.

------
scaramanga
"Haters" probably do realise that.

Personally, I just don't see anything interesting that .NET offers. In fact, I
consider languages which target virtual machines to be a failed experiment of
a bygone age.

The two exemplars, Java and .NET have been thrust upon developer communities
by multi-million dollar marketing efforts. And those marketing efforts have
not been tailored towards my specific demographic. So they've been pretty easy
to ignore.

So it's not a matter of being anti-.NET or Java or whatever. It's just that
they're about as relevant to me as Barbie-themed toilet paper - superfluous
and not marketed towards my demographic.

------
sytelus
Lot of this is historical. When .Net first came out Microsoft projected it as
enterprise platform specifically designed for Windows developers. This
immediately ticks off any academics who want to use it for classroom or anyone
who wants to do cross platform open source projects.

Even as Mono came out later, backing for it has been lacking and nobody knew
if it would just die out in long run or would get killed if it ever became too
popular.

The result is that most people who come out of college have been using
Python/Java/Ruby for class work and then use it to build open source eco-
system. This feeds on to itself and before you know now most important open
source libraries are built using non-Microsoft platform.

Even though on technical (and now even political) merit C# is richer language
miles ahead of Java and .Net CLR is fantastically advanced than almost
anything else, there are simply many more people churning out of colleges
familiar with Java instead of C#.

Over time, this accumulates and produces laughable outcome where people seem
to prefer something as despising as Oracle owned product rather than much-
lesser-evil Microsoft.

For languages other than Java, such as Python or Ruby, C# is actually too
verbose and even lacked functional features initially. When functional
features arrived, they were incremental and more as after-thought. So there
was reasonable basis to reject it on that ground. I would say Go has fan base
but is more comparable to C# 2.0 than C# 6.0. Some cling to few innovative
features in Go and less verbousness while confusing its lack of features as
"simplicity" but overall it still has miles to go.

------
LarryMade2
I started business development with dBase II, after a while I was forced due
to hardware availabilty to upgrade (CP/M going out of style). we Got Macs.
dBase Mac was an expensive joke then finally settled on McMax, that became
incompatible with system 7 IIRC then slid on over to FoxBase+/Mac, (which was
excellent) until OSX, but the new owners, Microsoft, provided an out, FoxPro
(at least till intel), then again they shortly dropped Mac support so that was
all moot. All these times nothing was really wrong with the code but I was at
the mercy of commercial firms in finding compatible versions, getting licenses
and having just basic long term support. Most other solutions were either
expensive or lock-in to a platform, and from experience no better guarantee of
longevity of the platform.

So I went open source - with a LAMP stack - if I want to run old versions
there's no problem, maybe with hardware - but that also isn't as big a factor.
No worries on selecting client compatibility as it is web based (have had to
tweak based on HTML/Browser revisions, but nothing that really broke beyond
fixing). Every component was free (enough) for what I was doing, and it pretty
much just worked. I feel I had wisely steered clear of Filemaker Pro, Access,
Cloudbase, Panorama, Visual Basic, or any other platform where I had to plug
in a key and/or ask permission in order to install/use it. I was happy, staff
was happy... and still are. Never looked back since.

.Net and other MS technology just reminds me of the struggles of the past
added with new licensing schemes and more intricate lock-in. So I prefer to
ignore it. If I was going to do local machine development instead of web based
Python would be the direction I'd go.

------
YoAdrian
Welcome to my world. The only reason that ASP was created and therefore .NET
was because years ago, the Allaire brothers told Microsoft "no thanks" when
they tried to purchase their programming language called ColdFusion. Since
1997, when I started developing with CF, I've heard nothing but derision no
matter how well it can handle complex tasks with ease. Every few months,
someone without a clue but a huge audience posts another "death of ColdFusion"
article and here come all the Ruby/Node/PHP fanboys piling on the hate.

Never mind that ColdFusion runs on the JVM.

Never mind that ColdFusion 11 was released a few weeks ago.

Never mind that there are TWO open source CFML engines out there.

Never mind that ColdFusion 12 is already under development.

And I don't hate .NET at all. Or Rudy or Node (can't stand PHP, but that's
another matter).

Guess what? It's all the SAME S--T, different SYNTAX.

You know which language I love the most? Whichever one someone is currently
paying me to use.

~~~
krsunny
You make some good points about Coldfusion but the death of Coldfusion is not
the language itself or the support and dedication from Adobe, the death is in
the job market and demand for it.

Have you looked into Ruby or Node? Compared to Coldfusion and PHP, it to me
seems like a new paradigm in web development with tools such as NPM for Node,
build tools like Grunt and Gulp.. again, to me, these things make CF and PHP
seem old school.

------
coldtea
> _But do haters realize that you can run .NET on a fully free /OSS stack, in
> the cloud, AWS, Linux, the works? That question is not rhetorical. Do haters
> realize that?_

Yeah. They just don't care for the sub-par experience of using Mono. (MS
opensourcing large parts of .NET / CLR etc is quite recent, so it doesn't have
changed the climate yet).

> _Comment below on why .NET has such a bad rap._

Well, not that much bad rap. People just don't use it. From what I read on
most forums, hackers using other languages tend to like C# (lots of people,
even in Unix land), and respect F#.

But they either want a mature system with longer open source presense and
better support than Mono (e.g Java) or they don't work with such managed
runtimes at all and they opt for something else.

Note that Java, which has been open sourced and has had a huge hacker
community for many more years than .NET, still gets a bad rap because of
Oracle's actions and behavior.

------
Rbatista
I think .net is a great framework that is misunderstood.. I think every
developer should dabble in .net MVC before working there way into rails..
because so much of rails is abstracted and .net is not you can learn a lot of
things from working with this framework that would take you a lot longer on
rails

~~~
chc
What does this mean?

~~~
coldtea
He means "less magic".

------
peterashford
.NET is kind of a cul-de-sac. There's usually only one way to do things and
often I don't like the way they choose to do things. Getting some web services
going with Visual Studio and I give up trying to get the WSDL->proxy
generation working and just do it by hand. The community is filled with people
all saying you can't do it that way, you have to use the tool.

It all seems very narrow, very closed quite facist really.

I prefer a more open, more fertile ecosystem. C, C++, Java, Clojure all
compare quite favourably in this regard.

I certainly don't hate C# the language. But I don't like the tooling (VS, VS
or.... VS) or the community - which don't seem to come up with their own
solutions often enough for me. And face it, .NET is only a first class citizen
on Windows.

------
mooism2
Clicky link: [http://steppingback.com/dotnet-strong-were-not-who-you-
think...](http://steppingback.com/dotnet-strong-were-not-who-you-think-we-
are/)

------
higherpurpose
With even Oracle claiming "ownership" over the _open source_ Java, who really
knows these days? Especially from an extortionist/litigious company like
Microsoft.

~~~
grexican
So if I'm hearing you, the issue is that .NET, while you might be able to do a
free stack today, because MS backs it you're afraid that freedom will go away?

If that's the case, I think it's important to note that .NET is based on the
open specification of the CLI. It's like the association between JS and
ECMAScript. Also, the open reference license for the source code that MS has
(which is how Mono has the base framework libraries for its implementation)
are pretty wide-open. It'd be hard for even MS to try to renege on that. So
while I doubt that we'll ever see .NET be a paid resource gobbled up by MS,
with the open specification of the CLI and the support of Mono, it seems like
such a small thing to worry about.

And, even if that is your worry, it still doesn't explain why there's so much
hate and disrespect for .NET developers.

I appreciate the response, thanks. I'm not trying to disprove your concern
here. Just shedding some light to see if that changes anybody's opinions.

------
doobiaus
I've been with C# since the beginning, 1.1, coming from ASP 'classic', I
absolutely love C# as a language. But... I'm now working in a Ruby/Linux shop
handling some of their legacy app integration and I've come to understand that
a lot of the disinterest comes from a complete clash of culture more than
anything else. By that I don't mean the old "Evil M$" rubbish - for 10 years
Microsoft has not understood Open Source culture. Instead of collaborate it
was compete compete compete. NHibernate vs Entity Framework, ASP.NET MVC vs
fubu/castle, Codeplex instead of GitHub, everything was done to keep people
dependent on Microsoft.

ALT.NET came and went, but there was never a really strong open source
community. That combined with the cross sell policy is a barrier to entry.
Everything has been tightly coupled, IIS dependencies in ASP.NET makes Mono a
second class citizen, MSSQL dependencies in EF made code first migrations
break in MySQL. All designed to sell licenses, books and certification.

Talking about productions web apps, at the end of the day it has to be on
Windows, even if you want to dev on Mono. If I'm going to start building a
production app you start asking yourself questions about licensing costs too,
Server, SQL, VS pro, CALs. Okay so you can get it going for free if you join
BizSpark, but then there's the waiting etc etc and the niggling fact that
eventually you will have to pay. Comparing that to my experience working on
Linux is like chalk and cheese. vagrant up -> npm install -> {do work} -> git
push heroku master. Frictionless, all for free, with no gatekeepers.

With OSS, people don't sit around waiting for the mothership to fix issues,
because there isn't one, they band together and fix it themselves.
Additionally, as I've come to realize (flamebait warning) Linux kills Windows
on the server. Not by a nose, but like a Red Wedding in ease of use, footprint
and resource utilization.

You also have to look at the "why C#" specifically. To do RAD web development
it is much faster to use something like Rails. C# is more performant? Then use
Java or node.js. C# just doesn't fill a particular gap.

Having said that, it's not all doom and goom, I think C# is the #1 choice for
mobile development. I think the ASP.NET Titanic is starting to turn. Scott
Guthrie seems to get it. The announcements recently with regards to ASP.NET
vNext are all heading in the right direction and address a lot of the glaring
issues. There is also some great non-MS .NET work being done at places like
GitHub and StackExchange. Will it be enough to convince OSS types to start
adopting it? I doubt it.

------
dottrap
"Public Static Void"

Rob Pike (Bell Labs, Plan 9, Google Go) gave this short speech at OSCON 2010
about what's wrong with programming languages, their thinking, and their
recent direction, with a lot of focus on C++/Java/C#, and how Go was a
response to that.

[https://www.youtube.com/watch?v=5kj5ApnhPAE](https://www.youtube.com/watch?v=5kj5ApnhPAE)

Apple Swift seems to share much of the thinking, and the huge enthusiasm for
Swift this week suggests developers seem to at least subconsciously recognize
there is a problem.

~~~
klibertp
But you do realise that .NET is not only C#? And that F# had many (maybe even
most, but I didn't research enough to say this) features that Swift has?

(And, on the related note, that Swift has not even one (or maybe? as I said, I
didn't do enough research yet) novel, unique feature which wouldn't be already
explored and implemented in other languages.)

What you're saying is an equivalent of "there's many things wrong with _JVM_ ,
for example lack of type inference".

~~~
dottrap
This is addressed to. Not all languages compile cleanly to the CLR. Running in
the VM has serious tradeoffs as well. Garbage collection is a serious problem
for soft/hard real time apps. Understanding performance is difficult too
because the VM may be doing stupid things behind your back and you can't
directly control things like CPU cache locality with this many layers.

Porting the VM is also difficult. It is a really complicated piece of
machinery, and if you are in truly cross platform environments, getting the VM
up on new systems is a massive engineering challenge in by itself. Often these
other environments are CPU and memory constrained too which isn't great for
the .NET VM.

~~~
chc
I'm not sure these are actually problems with the Microsoft stack, though.
Most mainstream languages run in VMs these days — JavaScript, Ruby, Python,
Lua, PHP, all JVM languages. Off the top of my head, the ones that don't are
pretty much the three C's and Go.

