我对语言功能有所了解:
在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();
}
虽然这个建议非常简单,但我想知道是谁决定将哪种语言特性变成一种语言。 C#是微软的先驱,所以我确信公司内部有一个部门,但是像PHP这样的开源语言呢? (java算吗?我知道他们有java 7中的交换字符串,谁对此负责?)这个过程是什么?
答案 0 :(得分:2)
这个过程取决于语言。例如,Java有一个特定的正式流程来批准语言(我认为核心库)的变化:基于JSRs提议的Java Community Process。 (我不确定自Oracle收购以来这是否有所改变;我不熟悉JCP。)使用C#,Visual Basic和F#等Microsoft语言,看门人是Microsoft内部的语言设计团队(如faester所示) )。这些团队从客户那里获得非正式的输入,但也更正式地通过MSDN Connect和Microsoft MVP程序等程序获得。然后你再次拥有像Python这样的社区,其讨论和设计过程更加开放(例如在邮件列表上进行),尽管在Python的情况下仍有最终权威,Guido van Rossum。
因此,如果您孤立地询问“谁决定”,那么实际上没有任何答案。你必须问“谁决定语言X?”真。
答案 1 :(得分:1)
我猜大多数语言都是由与您一样的人构建的 - 具有从使用现有语言发展而来的某些功能请求。来自C#的Anders Hejlsberg一直在研究Delphi和Turbo Pascal earliser,它当然必须给C#带来一些灵感(他实际上也表达了一些遗憾,一旦将它们放入语言后就无法删除它们,但这是另一个故事。)在主要语言的情况下,我也猜测语言设计师阅读SO和类似的地方,以获得想法和灵感。像clojure这样的较小(和较冷的?)语言似乎是出于对某些需求的响应而引起的,这些需求导致它们受欢迎:Clojures不可变集合和优雅的并发处理肯定是对多核等的响应。
答案 2 :(得分:0)
你已经可以在C#中做到这一点。
foreach(var item in Items.Take(50))
{
// Do Stuff
}
老实说,向某种语言添加功能通常会导致在客户端库无法实现的功能上出现非常大且无法实现的差距。