Lambda the Ultimate

inactiveTopic Introducing C#, Present and Future
started 11/18/2002; 3:41:17 AM - last post 11/21/2002; 2:29:39 AM
Ehud Lamm - Introducing C#, Present and Future  blueArrow
11/18/2002; 3:41:17 AM (reads: 2404, responses: 7)
Introducing C#, Present and Future
The OOPSLA presentation on the new C# features is now available, including the dmeo files.

Am I the only one who thinks that types should not be required at run time?


Posted to OOP by Ehud Lamm on 11/18/02; 3:42:59 AM

Joe Grossberg - Re: Introducing C#, Present and Future  blueArrow
11/18/2002; 8:45:59 AM (reads: 1261, responses: 0)
Umm ... I'm on Linux. It's in .ppt format ... I'm finally downloading OpenOffice.

Patrick Logan - Re: Introducing C#, Present and Future  blueArrow
11/18/2002; 2:12:09 PM (reads: 1225, responses: 1)
Please say more Ehud...

Am I the only one who thinks that types should not be required at run time?

Dan Shappir - Re: Introducing C#, Present and Future  blueArrow
11/19/2002; 2:04:38 AM (reads: 1213, responses: 0)
Interesting presentation, though nothing earthshaking. C# does seem better than Java, which is after all it's yardstick. The proof of the pudding will be in the eating, and I've yet to write serious code using C#. Also other factors come to play in such a comparison: development environment (VS.NET is good, but there are numerous Java environments of various flavors, e.g. JBuilder, IntelliJ) and libraries/framework (.NET vs. J2EE).

Additional obvious factors are Java's multi-platform support (which is the prime reason I've developed in Java and not yet in C#) and C#'s better support for integrating with code developed in other languages.

Specifically with regards to the presented features:

out parameters are better than nothing (Java) but I think there are better alternatives for this functionality (touples).

Anonymous functions are nice, but why not simply allow nested functions? Also, I notice in one example that anonymous functions support closures. This is very interesting and I wonder how they are building this functionality into the VM. And again, why not provide general closure support? This feature alone could get me using C#.

Looking at the same sample (the large account filter) one can't help but notice how delegates are just a very verbose alternative to functions as first class citizens. Couldn't they just make this whole delegate thing implicit?

Ehud Lamm - Re: Introducing C#, Present and Future  blueArrow
11/19/2002; 6:38:18 AM (reads: 1223, responses: 0)
One way of compiling generics is by macro expansion. This is a form of compilation be erasure: the code is translated into non-generic code.

The Ada model, for example, allows generic units that are type safe. Types are not needed at run time.

Proposals for generics in Java and C# can follow the same approach (i.e., compiling into standard byte codes) or propose changes to the VM itself.

Patrick Logan - Re: Introducing C#, Present and Future  blueArrow
11/19/2002; 7:45:56 AM (reads: 1123, responses: 0)
Ah... thanks Ehud.

Patrick Logan - Re: Introducing C#, Present and Future  blueArrow
11/19/2002; 7:49:06 AM (reads: 1130, responses: 0)
re: Dan... nothing earthshaking

I think this is the key observation. Java and C# have various relative advantages and disadvantages. Nothing either way is a clear tipping point.

As they compete for favor the worst that could happen is feature competition.

After all they are both good enough to host a good implementation of Scheme. 8^)

Anton van Straaten - Re: Introducing C#, Present and Future  blueArrow
11/21/2002; 2:29:39 AM (reads: 1043, responses: 0)
After all they are both good enough to host a good implementation of Scheme. 8^)

Yes - Java/JVM and C#/.NET/CLR are really just inefficient but broadly interoperable target platforms for real languages. No-one actually writes Java code by hand, do they???