Op 23-May-14 3:17, Öö Tiib schreef:
It has been possible to generate native code image with the NGEN tool
since .NET 1.0 if I'm not mistaken. Though that really only helps for
the startup performance.
They are always working on myriad of things. Sometimes successfully,
sometimes not.
C# is good but it is based on blueprints of Sun.
That isn't necessarily a bad thing. A more problematic aspect is vendor
lock-in. Though it is possible to run .NET code on non-Microsoft
platforms, no one in his right mind would consider writing .NET code
when targeting anything other than a Microsoft platform. Another
downside, much like Java, is that it requires the installation of the
rather huge .NET framework.
Lets see history of their other languages. They did make VB.NET ... it is 2014
but there are still hundreds of thousands of developers who use
"long dead" Visual Basic 6.0 of 1998.
I'm not surprised; VB.NET has little to do with Visual Basic 6.0. The
differences between C# and VB.NET are just cosmetic; keywords and syntax
aside C# and VB.NET are conceptually the same languages; semantically
both are very similar to Java. Run decompiler on a .NET application and
you can choose whether you want to see the code as C# or VB.NET.
Learning VB.NET would be easier for a C#-, Java- and even a C++
programmer than for a Visual Basic 6.0 programmer.
They did make that "managed" C++/CLI that no one uses.
I have used C++/CLI in the past to write an interop layer to allow .NET
code to use existing C and C++ code base. For that it does do the job as
well as could reasonably be expected given the rather fundamental
differences between .NET languages and C++.
AFAIK C++/CLI is not intended to be an alternative for C++ or for C# (or
whatever other language), but solely intended for glue layers to
leverage existing code. I doubt that even at Microsoft anyone had any
hope that the schizophrenic mess that C++/CLI is would have caught on
for any other purpose than writing interop layers.
Now they make "native" C#. What are chances that it succeeds?
The question is what problem are they trying to solve? For the vast
majority of desktop applications runtime performance has become a
non-issue.
These days Microsoft is struggling to become a relevant player in the
mobile arena. This is where runtime efficiency matters because mobile
platforms tend to have less powerful hardware and more importantly
energy consumption matters.
My guess is that the purpose of "native" .NET to make it a more viable
option for mobile applications, hoping that it will attract .NET
developers to develop programs for Microsoft's mobile platform.
Whether it will succeed? You never know with Microsoft, they do change
their ideas from time to time, but they also have deep enough pockets to
keep trying for a long time. In the end I don't believe Microsoft really
cares about programming languages, but only cares about staying a
relevant player. "Native" C# is at best just a means to an end.
I'm more afraid that it is yet another marketing buzz to mix
things up and compete better with Java in journals.
I doubt Java is considered a serious threat. On the desktop Java is
pretty much dead; Oracle doesn't seem to be overly enthusiastic further
develop and promote Java. Java seems to be still somewhat relevant in
server space, but that doesn't seem to be the focus of Microsoft at the
moment.
In the mobile space there is the weird situation with Android, where
most applications are written in Java but are converted to run on
Googles runtime environment (Dalvik). Also Google is working on to
replace the Just-In-Time compiler with a Ahead-Of-Time compiler (ART).
This is probably what triggered Microsoft to do the same thing for their
platform.
Desktops and consoles are seemingly in process of losing part
of the entertainment market to tablets and smartphones (that
don't run .NET nor DX12). If you are genius game programmer then
better investigate iOS or Android or both.
I'm not C++ guy. I'm software engineer. C++ is fine tool and it won't
disappear all of sudden. Most things are based on it. What is the
panic?
Even if another programming language would replace C++ as the language
of choice in areas relevant to you, you can still learn that other
programming language. For someone who has mastered C++ it will be much
easier to learn a new programming language than the other way around.
And besides that it is always a good idea to know more than one
programming language, so you can pick the right tool for the job rather
than just sticking with what you know.