为什么Java 8的功能样式结构称为“流”?

永无止境

传统上,术语“流”被认为与I / O操作有关。Java为它们的功能样式操作选择术语“流”的原因是什么?

斯图尔特·马克斯

“流”并不一定与I / O相关,而是一种泛泛的概念,指的是流经系统的信息。

与SIMD处理或基于矢量的计算有关的流处理Mr.Me的Wikipedia链接概念也与Java 8 Streams API提供的计算风格相似。

但是,我相信Java 8中“流”的主要灵感来自这本书:《计算机程序的结构和解释》,2 / e。阿伯森(Abelson),萨斯曼(Sussman)和萨斯曼(Sussman)。麻省理工学院出版社,1996年。(可麻省理工学院出版社网站上免费阅读此书。)

这是我的精装版第217-218页第3章“模块性,对象和状态”的简介部分的一些段落

在本章中,我们将研究两种显着的组织策略,这些策略是由两种非常不同的系统结构“世界观”产生的。第一个组织策略集中于对象,将大型系统视为行为随时间变化的不同对象的集合。在一个替代组织策略的浓缩的信息,在系统流,就像一个电气工程师观看的信号处理系统。

...

处理对象,更改和标识的困难是我们的计算模型中需要应对时间的根本结果。当我们允许并发执行程序时,这些困难会变得更大。当我们将模型中的模拟时间与评估期间计算机中发生的事件的顺序脱钩时,可以最充分地利用流方法。我们将使用称为延迟评估的技术来完成此操作

3.5节(Streams,第316ff页)包含有关streams方法的详细讨论。

可以肯定的是,Java 8的流与SICP引入的流不同。但是,一些基本概念(例如不变性,延迟评估和价值在系统中的流动)与“就地”改变价值相反,非常相似。上面提到的“随着时间进行抓紧”的概念似乎让人想起Java 8 Streams中遇到顺序处理顺序的问题

在开发系统时,我们用许多不同的词来描述图书馆试图代表的内容。我们最终比其他任何单词都更多地使用“流”,并且它卡住了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章