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
