Miha Markic said:
You can't actually compare the portability of .net against C(++).
Er, why not?
.net is
more than just a language, it is a framework, while C(++) you are talking
about is a language + small library.
Nevertheless, if you require Functionality F to be available on Platform P,
and are not prepared to go to the trouble of porting a development tool to
Platform P yourself, you have no option but to choose a development tool
that is available on Platform P. If Platform P has a C (or C++)
implementation available that provides the infrastructure (i.e. sufficient
features) for implementing F but no .Net implementation, then you can
implement Functionality F on Platform P using C (or C++), but you cannot
use .Net to do the same thing. Now range over all P (for a given F), and
you have a relative portability measure between C (or C++) and .Net - thus
demonstrating that you can in fact compare the portability of .Net against
C (or C++). But see below.
Furthermore, even those aren't exactly portable due to different library
implementations, right?
Both C and C++ are defined by ISO standards. C compilers that conform to
ISO/IEC 9899:1990 are available on a very, very wide range of platforms,
including not just desktop and middle range machines, but also top-end
mainframes and tiny little embedded systems. To a lesser extent, this is
also true of C++. For hosted environments, this also includes the standard
library specified by ISO.
Having said all that, in one sense you are right, because .Net offers
vastly more functionality than either ISO C or ISO C++ (flashy graphics,
mouse-talk, and the like - stuff that you /can/ do in C or C++ but only by
using vendor-supplied or third-party libraries that are not part of the
standard language), and so in that sense they're not really comparable. It
would be like comparing a chainsaw with a machine shop. You can do a lot
more with the machine shop, but on the other hand it's a lot harder to
carry around!
<snip>