David Brown wrote:
> On Sun, Jan 06, 2008 at 11:44:05PM -0800, Christopher Smith wrote:
>
>>> Well, C# is just a Java ripoff. That's nothing new.
>
>> I hate it when people say this. C# is a language in its own right, and
>> distinct in lots of interesting ways. Java might well have a lot to do
>> with the motivations for creating the language, but it is important and
>> useful to evaluate each language in its own right.
>
> I'd go so far as to say that C# really doesn't share a lot in common with
> Java, beyond some superficial syntactical things, and are both OO
> languages.
Oh, that's not entirely fair. They do have a lot in common, although one
could quite reasonably argue that this is because Java had proven the
value of some of those points. Some highlights:

1) Both do single inheritence of behavior, but multiple inheritance of
types and covariant return types.
2) While both are ostensibly object oriented, they have non-object,
native types designed to align well with C.
3) Both are built on a VM-based runtime model with a standardized byte
code representation that provides runtime checks for the type system at
bind time and run time.
4) Both explicitly acknowledge concurrency by integrating the
thread/lock model in to the runtime and the language definition,
specifically by the use of an implicit lock/monitor inside each object.
5) Both use the statically checked, dynamically bound type systems.
6) Both have runtimes that have integrated notions of RMI and loading of
remote code.
7) Both have embraced generics (*not* the same as templates).

Now, both of them are the synthesis of ideas already somewhat proven by
other languages, so you can find other languages that fit the bill for
each of those points, but once you start to include even a few of those
points together you end up with surprisingly few languages (given Java's
huge success) that fit the bill and that haven't effectively died (for
example Dylan).

While they do have significant differences (the two big ones being: C#'s
approach to generics leveraged its more robust VM architecture,
resulting in a fairly different end result, even if the basic concepts
and syntax are similar, and C# has gone way further down the C++ path of
mixing in functional programming concepts as a result of LINQ and
related work), it is fair to acknowledge that they have a lot of
similarities beyond just being OO languages.

--Chris

-- 
[email protected]
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg

Reply via email to