With your class experience with C# did you find that it was a cut down
version of C++ or would you describe it in a different way?
in all, the language itself wasn't all that bad.
it was sort of like C++, but mostly lacking a few things like
multiple-inheritance and similar (not a big deal personally).
it is at least much more preferable than Java, where the core language
is pretty stripped-down and awkward, and most things that had been done
to expand on it have been via nasty kludges (with Sun/Oracle leaving the
internals hanging out).
main issues with C# were:
its ability to interface with C and C++ code was a little weak (but at
least, nowhere near as bad as Java);
it is built on top of .NET, which being a MS product, is only
well-supported (on Linux, there is Mono, but it isn't nearly as good or
well-integrated with the OS, 1).
also, .NET typically gets worse performance than native code on
benchmarks (including some other JITs, there are benchmarks where it is
being outperformed by the likes of Lua, Python, and Perl).
at least as-of a few years ago, it didn't have eval or ability to load
program-code from source-code form, ... however, since then both MS and
Mono have added (different) mechanisms to deal with this (in MS's case,
this is the Roslyn API).
1: on Windows, a person can just compile some code as C++/CLI, and have
fairly direct access both to C# land and to C and C++ land, and also
APIs exposed via C++/CLI code can be directly seen by C#.
similarly, LoadLibrary and similar can do a lot more magic (no real need
to worry about native-vs-managed libraries, ...).
on Mono, C++/CLI code doesn't work, leaving the only major (portable)
cross-language interface as P/Invoke (requires writing any structs or
function-prototypes in C#, and doesn't deal with the entire C type-system).
going the other way, requires linking against the Mono libraries, and
making use of a lot of Mono-specific API calls.
this wouldn't be as bad, except that Mono is a pain to get built on
Windows, and this would mean having to go through the hassle of having
two different sets of C# <-> C interfaces (one for MS's .NET, and
another for Mono).
I wouldn't mind things as much otherwise, and have written a few small
apps before using C#, but for my main projects, it is a problem, as I
basically have a large amount of code mostly written in C.
so, it was easier for me just to continue using/expanding my own
scripting language / VM (where the main advantage is mostly that I
control it, and can build it for whatever target I need it on, partly as
I don't really trust 3rd party dependencies).
the language isn't meant to "replace" C or C++ though, but rather to
address some use-cases which are weak areas for them, such as loading
scripts from source, ... (FWIW: dynamically compiling C code does not
make a very good scripting language... I have actually tried this...).
the main reason my script language ended up with a lot of ActionScript3
syntax was partly itself due to C#:
my script language was originally based on JavaScript;
C# had some features that I wanted, but the syntax wouldn't fit as well
on JS;
AS3 had a lot of similar features, but was also JS-based and had better
meshing syntax designs.
so, I ripped off a lot more of AS3's syntax (though the actual semantics
and feature-set are more varied).
(actually, the language reintroduces a lot of stuff from C as well, and
also has some C++ influenced features as well, ...).
for example, does it really matter the exact syntax used for, for
example, get/set properties, or overloaded operators, or more just that
the language has get/set properties and overloaded operators?...
example:
public int foo { get { return foo_i; } set { foo_i=value; } };
vs:
public function get foo():int { foo_i }
public function set foo(value:int) { foo_i=value; }
likewise:
public function operator+(x:Foo, y:Foo):Foo { x.add(y) }
both the JVM and .NET have had some influences on the VM architecture as
well though. (not feeling like going too much into specifics at the
moment though, and doubt that it is all that relevant...).
not that I expect anyone else would want to use it, this is just how
things go.
or such...