In my “Minus 100 points” article, Shawn took me to task for the reasons why we didn’t put ‘with’ in the language.
Unreceptive to change is, when I think about it a bit, probably a true statement. We are fairly unreceptive to change – it took a lot of customer feedback to get us to change our stance on accessibility for properties. I don’t think that is necessarily a bad thing – I think the best languages were designed either by a single person or by small groups, and I’m not a big fan of languages designed by committee (Ada comes to mind…). The C# Language Design Team is a benevolent dictatorship – we all have our say, but Anders is the overall custodian of the language design. I think that’s important if a language is going to stay true to its philosophy.
On a specific issue, we might appear unreceptive for a number of reasons.
The first reason is that your request is probably not the first time we have heard such a request. We do take note of them (see property example above), but in most cases we’ve already spent a considerable amount of design time on the issue (by that I mean hours). In the case of ‘with’, we looked at what other languages had done, how well the construct worked, and then made the call on whether we thought it would be good to add it. We have a considerable amount of language design experience and familiarity on the team, which means we generally know the prior art fairly well. I’m sorry if this comes of as arrogant at times – we’re working at doing a better job of communicating in this area.
‘With’ was a very conscious decision, especially because it’s present in both Pascal and Delphi, Anders’ previous babies (okay, Pascal was really Wirth’s baby, but Anders was involved with one of the more popular variants).
As I said, we might choose to add it in the future, but given the divided nature of the customer feedback that we get, it’s likely that we’ll stay where we are.