Compartilhar via


What would you like to know about "how we do language design for VB and C#" ?

On June 6th I'll be speaking at the Norway Developer Conference in Oslo, on the subject "How we do language design at Microsoft (VB/C#)". It will cover topics like how we designed Async, how we run our week-to-week language design process, where we get ideas from, how we recognize and respond to user requests and market needs, and some of our attitudes towards what a language should be.

Afterwards, I'll put the slides up here on this blog.

 

QUESTION: Are there any areas that you'd like to see discussed? Any questions you'd like answered? If you post questions or topics here as comments on this blog, then I'll take two weeks to think them over, and I'll incorporate the answers into my slides.

 

Disclaimer: The talk and slides will come solely from my personal experience from the past few years in my job as language PM -- learning the ropes, working with the other language designers, running the VB language design meetings, and working as a VB/C# compiler developer. They certainly won't be Official Microsoft Statements on the subject "How Language Design Must Be Done".

Comments

  • Anonymous
    May 24, 2012
    Annoying, I won't be at NDC this year. However, I'd love to hear your thoughts on how you balance a design which may take a while to understand to start with, but is ultimately clean, vs something which is simple to get started with, but may be restrictive later on. This isn't so much on how you balance "experienced developers" vs "novice developers" (although that's part of it) - it's how you balance "first day vs third year" experience with a particular feature.

  • Anonymous
    May 24, 2012
    To overload a single comparision operator, involves overload to operators. The one you wan t to overload eg ">" but also its complement "<=". What's the rationale behind that decision? not to allow those operators to be overloaded individually. Also on Operators, why no support for custom operators? In F# you can define a Recursive Iterator which has a single yield statemente, to do the same in vb11's iterator. See example (www.dreamincode.net/.../snippet6577.htm) Involves enumerating through the result returned by the recursive call and yielding each item. (Lines: 32 - 36) Wouldn't this pattern suggest a "Yields" or "Yield All" keyword or an attribute eg "<System.Runtime.CompilerServices.RecursiveYield()>". On which the compiler can act on and rewrite the method to flatten/ SelectMany the results of the recursive call.

  • Anonymous
    May 25, 2012
    The comment has been removed

  • Anonymous
    May 27, 2012
    another one, how does the language teams interact with the runtime teams, library teams and operating system teams ? for example, you get rid of the baggage of XP with 4.5, obviously you will target more modern platforms in the future, how will the capabilities of underlying platforms impact the language design ? IIRC you mentioned the hight price of threads etc in the past talk of this topic, and Google Go implemented their 'goroutines' in userspace, with stack growing etc, that's an interesting topic.

  • Anonymous
    May 27, 2012
    Hey everyone -- thanks for the interesting questions!

  • Anonymous
    June 04, 2012
    If all .Net Languages are the same then why IL Code is not the same?

  • Anonymous
    June 04, 2012
    Safe travels, Lu, although I presume you are in Norway already by now. You should aim for a conference in New Zealand ;)

  • Anonymous
    June 05, 2012
    I do not know who to forward this request to, but I think String.IsNullOrEmpty should be renamed to String.Exists, much shorter,

  • Anonymous
    June 30, 2012
    FYI, the video is here http://vimeo.com/43549129

  • Anonymous
    July 09, 2012
    The comment has been removed

  • Anonymous
    August 07, 2012
    i want to ask something, why vb.net exe file is always bigger than c# exe file. for example in my machine, an empty win forms app with one forms size 24 KB exe file for vb.net dan just only size 7 KB for c# one. why ? can i get an explanation ? thanks. (maybe i can receive the answer in my e-mail : adi4vista@gmail.com)

  • Anonymous
    August 21, 2012
    Lucian, I think you may have misunderstood the recursive yield example. It can be linearised if you could some how reference the Yield machinery. See Example: www.dreamincode.net/.../entry-4167-concept-recursive-yield-on-to-a-common-channel