2010-08-16 67 views
3

看一些語言功能,我有時想知道如何實現這樣的功能。所以我的問題是,衆多的現有的語言功能是最難實施?這個解釋爲什麼如此受歡迎(可能甚至需要?)。哪些現有語言功能最難實現?爲什麼?

要維護訂單,請每個帖子只有一個功能。

回答

4

MHMH - 以前沒有問過這個嗎?

高效關閉處理。 因爲閉包在Lisp和Smalltalk中使用(在那裏叫做「Block」),所以在幾乎任何其他編程語言中使用閉包的次數都很多,所以實現必須非常快。所以堆棧分配是我們想要的速度。但是,由於「真正的」閉包可能會超出其定義的方法堆棧框架,因此必須注意在需要時將它們從堆棧中取出。 閉包在任何地方都很有用:回調,枚舉/收集協議,長跳轉,動作工作者隊列,觀察者協議,延遲評估(未來和懶惰)等等。 BTW:JavaScript也支持閉包!

+0

另外,Ruby非常依賴塊(閉包)。大多數Ruby循環都是使用閉包實現的。另外,可能是Ruby實現之後糟糕名稱的原因之一是它們的糟糕性能。 :) – 2010-08-16 16:06:27

2

即使是最奇怪和最複雜的語言特性,例如C++模板,實際上也相對容易實現。真正困難的是有效地實現這些功能。

對我來說,最困難的功能是融合ML類語言。對於臨時實現來說是微不足道的,如果你希望它在股票硬件上更高效,那就相當棘手。詳細信息,請參閱任何體面的ML實施

相關問題