Кто решает, какие функции превращают его в язык? - PullRequest
2 голосов
/ 06 мая 2011

У меня есть идея для языковой функции:

В C # мне было бы полезно иметь возможность комбинировать оператор foreach с циклом for, чтобы проходить, скажем, максимум 50 элементов. Я понимаю, что это можно сделать так:

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

но я думаю, что было бы хорошо, если бы это можно было написать так (или что-то подобное):

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

Хотя это предположение довольно тривиально, меня удивляет, кто решает, какие языковые особенности превращают его в язык. Microsoft впервые внедрила C #, так что я уверен, что в корпорации есть отдел для этого, но как насчет языков с открытым исходным кодом, таких как PHP? (учитывается ли java? Я знаю, что в Java 7 есть строки переключателей, кто за это отвечал?) Что происходит?

Ответы [ 3 ]

2 голосов
/ 06 мая 2011

Процесс зависит от языка.В Java, например, есть особый и формальный процесс для ратификации изменений языка (и, я думаю, базовой библиотеки): процесс сообщества Java, основанный на предложениях, называемых JSR.(Я не уверен, изменилось ли это с момента приобретения Oracle; я лично не знаком с JCP.) С такими языками Microsoft, как C #, Visual Basic и F #, привратниками являются команды разработки языка в Microsoft (как указывает faester).Эти команды получают неофициальный вклад от клиентов, но также более формально через такие программы, как MSDN Connect и программа Microsoft MVP.С другой стороны, у вас есть такие сообщества, как Python, где процесс обсуждения и разработки более открыт (например, проводится в списках рассылки), хотя в случае с Python остается окончательный авторитет, Гвидо ван Россум.

Так что, если вы спросите, кто решит"в изоляции, на самом деле нет одного ответа.Вы должны спросить "кто решает для языка X?"на самом деле.

1 голос
/ 06 мая 2011

Я полагаю, что большинство языков создаются людьми, которые, как и вы, имеют определенные запросы функций, которые выросли из работы с существующими языками.Андерс Хейлсберг из C # работал над Delphi и Turl Pascal Earliser, что, безусловно, должно было вдохновить C # (на самом деле он также выражает сожаление по поводу того, что он не может удалить функции после того, как они были введены в язык, но это другая история.) В случае основных языков я также предполагаю, что разработчики языка читают SO и подобные места, чтобы получить идеи и вдохновение.Меньшие (и более холодные?) Языки, такие как clojure, похоже, возникают как ответ на определенные требования, которые вызывают некоторую их популярность: неизменяемые коллекции Clojures и элегантное обращение с параллелизмом, безусловно, являются ответом на многоядерные и т. Д.

0 голосов
/ 06 мая 2011

Вы МОЖЕТЕ уже сделать это в C #.

foreach(var item in Items.Take(50))
{
    // Do Stuff
}

Честно говоря, добавление функций в язык обычно включает в себя очень большой и необслуживаемый пробел в функциональности, который не может быть выполнен клиентской библиотекой.

...