I'm going to swing by Anders' office on 4/27/2011 (27/4/2011 for my European friends). He's very interested in getting your feedback/questions on the latest Async CTP release. Of course, you can ask whatever you want, but things like "When is the next version of C# shipping?" or "What exactly will you ship when you ship?" will most likely go unanswered for hopefully obvious reasons. So, please stay away from asking about dates, future features and such. Focus on what's here now, what's in the CTP and other non-disclosure related material. That said, what do you want to know? Ask Anders!
It's been a while since Anders has graced us with his presence on C9. Let's take advantage of this. Ask questions, brothers and sisters! (Do me a favor and just post questions to this thread. Will make it much easier for me to parse - so, no debate. Just questions for Anders!).
So far what we have heard about Roslyn is all about the benefits for 'other ms groups' or 'the tool vendors', and most realiastic examples are all about "code highlighters" or 'refactors', but how could Roslyn serve us 'coders' better directly ? any thoughts ? this question is about broad 'vision', not specific feature in the planned releases.
I know Anders is always concerned about the 'aging problem' of a language, any thoughts about a solution for that ? invent a new language every 10 years ? and how does Anders think about the impact of Async on the languages' complexities ?
as a former Delphi coder, I wonders how many concepts Anders put into Delphi's VCL framework and Object Pascal language are moved into C# and CLR ? and how they improved or changed during this ? eg. I know Delphi has 'method pointers' which is similiar to singlecast delegates, its way better than function pointers in C++ but C#'s multicast delegates is even better.
ehh, this is just a tech question I hope its nothing about politics between Borland and Microsoft.
Jon Skeet thinks one of C#'s Greatest Mistakes is hadnt have Generics from the begining, he thinks its probably caused by time-constrants of shipping the product, but Don Syme said its a design decision as the team thought "generics is for academics only", and even the addition of generics in 2.0 is pushed by the MSR Cambridge guys. so, whats the story on Anders' side ?
I heard a story that, a lot of languages experts were invited to redmond to discuss the design of CLR 1.0, way before it shipped the first version, and many of them are dynamic language experts, but I heard many of their advices about making CLR more dynamic-friendly was not taken at first. now 10 years later Anders list Dynamic as one of the 'Future Trends', and C# has made significant improvement on 'dynamic' front recently, is it purely about the maturity and time, or the team changed their mind a little bit ? are they changing their mind again now as dynamic is not the 'buzzword' anymore recently, and Gilad Bracha said ms 'taking dynamic seriously for a while, then not taking it seriously', what happened ?
is the main purpose of C# dynamic keyword to improve Office/COM experience since its important for enterprise LOB applications and this market is what Microsoft really cares about ?
and is 'statically verifiable' the new buzzword now ? any vision on that front ?
@Charles: I saw Anders give a keynote once where he talked about ceremony versus essence. For instance:
MyClass() : this(string.Empty, null)
MyClass(string someString) : this(someString, null)
MyClass(string someString, Object someObject)
// Do something with someString and someObject
Is lots of ceremony for something that could essentially be
MyClass(string someString = string.Empty, Object someObject = null)
// Do something with someString and someObject
Now, in the same talk, Anders expressed his disgust for optional parameters, but I still think the former is a kludge compared to the latter.
My two questions would be: why the beef with optional parameters when they so elegantly bring that whole block down to the essence of it, and more in general, what ways does he see to reduce the amount of ceremony in future versions of C#?
@Charles: Is there any thoughts towards supporting higher kinds in C# and .NET in the future?
If C# had Generics and LINQ implemented from the beginning (Eg .net 3.5) how big would the framework have been?
If you started again with the knowledge and information you, what would you do/implement differently? Would you make Events first Class citizens (ref to Erik & RX)?
Would Microsoft consider doing a "offical" release of .net on Linux Platforms?
In terms of the Language support of the CTP in VB and C# which one is/was the most difficult to implement? What aspect of that language made it difficult?
Anders: Can you concieve of a time where a design only platform (ie no code) is all that is required in order to develop full featured applications or is this just a pipe dream?
There are quite a few common patterns that require lots of boilerplate code. Metaprogramming would seem the only adequate solution... are there any plans to introduce some form of metaprogramming in C#?
Do you think there is a role for the 'Minority Report' style of interface within the development paradigm? If so, what is it?
Are there things that c# programers are writing today, that behave one way in x86, but have different performance characteristics when run on a processor like ARM?
I would imagine that having smaller caches and no brach prediction hardware would have some design impact somewhere.
Could you discuss how Rx influenced the design and implementation of C# async, and also, whether language support will be added for Rx in the next version of C#?
What language features of any languages do you feel a bit "jealous" of at this time, and would like to see make it into C#? Which languages do you think of as being inspirational, and/or competitive to C#? Do you spend much time trying out new languages yourself?
Anders: What do you think the internet will morph into in the next 50 years?
As each release adds new keywords and concepts, does Anders miss the simplicity of the first versions of C#?
When Anders considers C# does he see a complete language, or does he mainly see the bits that he thinks are missing?
why is there both explicit casting and as operator conversions in the language?
DerivedClass dc = new DerivedClass();
BaseClass bc1 = (BaseClass)dc;
BaseClass bc2 = dc as BaseClass;
The distinction that one throws an exception when the object cannot be cast and the other returns null is kind of confusing. And then there is an "explicit operator" static method that can be coded to provide customized conversions. But that only works for casting, not for as operator conversions.
Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums, or Contact Us and let us know.