Search code examples
programming-languageslanguage-features

Who decides which features make it into a language?


I have an idea for a language feature:

In C#, it would be useful for me to be able to combine a foreach statement with a for loop, to run through say only a maximum of 50 items. I realize that this can be done like so:

int count = 0;
foreach (item in Items)
{
    if (count > 50) break;
    item.acknowledge();
    count++;
}

but I think it could be nice if it could be written like so (or something similar):

foreach (upto 50 item in Items)
{
    item.acknowledge();
}

While this suggestion is pretty trivial, it makes me wonder who gets to decide which language features make it into a language. C# was pioneered by Microsoft, so I'm sure there's a department for that within the corporation, but what about open source languages like PHP? (does java count? I know they have switch strings coming in java 7, who was responsible for that?) Whats the process?


Solution

  • The process depends on the language. Java, for example, has a specific and formal process for ratifying language (and I think core library) changes: the Java Community Process based around proposals called JSRs. (I am not sure if this has changed since the Oracle acquisition; I'm not personally familiar with the JCP.) With Microsoft languages such as C#, Visual Basic and F#, the gatekeepers are the language design teams within Microsoft (as faester indicates). These teams get input informally from customers, but also more formally through programmes such as MSDN Connect and the Microsoft MVP programme. Then again you have communities like Python where the discussion and design process are more open (e.g. conducted on mailing lists) though in Python's case there remains a final authority, Guido van Rossum.

    So if you ask "who decides" in isolation, there isn't really any one answer. You have to ask "who decides for language X?" really.