比特垃圾桶
比特垃圾桶(英语:bit bucket)或比特桶是计算机行话,指丢失的计算机数据所在的地方。如果数据因传输错误或者系统崩溃丢失,或者其他在任何意义上以任何形式而丢失,就可以说数据被丢进了比特垃圾桶,一个存储着所有丢失地计算机数据的神秘地点,例如:
一个无法通过奇偶校验的错误字节,会被粗暴地丢进比特垃圾桶,一个计算机中的废纸篓。
——Erik Sandberg-Diment,《纽约时报》,1985年6月9日。[1]
价值数百万美元的时间和研究数据进了比特垃圾桶?
——W. Paul Blase,《华盛顿邮报》,1990年2月17日。[2]
比特垃圾桶的原始含义是一个电传打字机或者IBM打孔卡片机器上的盒子,用来收集来自纸带或者打孔卡片的纸屑[3]。随后变为了一个形容一切无用数据所去地点的术语,这就是空设备,一个计算机中很有用的概念。[4] 有时,这样的设备也戏仿八十年代一次写入多次读取(英语:Write Once Read Many,缩写:WORM)的磁光盘而被称为“一次写入永不读取”(英语:Write Once Read Never,缩写:WORN)设备。在Signetics公司1972年一篇玩笑数据手册中,一次写入永不读取设备随先进不出队列和只写存储器而一同被提出。在1988年愚人节出版的《Compute!》杂志中,雅达利BASIC语言的作者Bill Wilknson则披露,雅达利在Atari 800系列计算机的操作系统中,作为程序彩蛋实现了一次写入永不读取设备。[5]
在编程语言中,这个术语则指一种不会被诸如中央处理器或内存使用,而丢弃向其写入的一些数据的比特流。例如,在.NET框架中则是System.IO.Stream.Null。[6]
编程语言
[编辑]C++11 中提供了std::ignore
,其operator=
是空操作、即丢弃对其所做的任何赋值,作为占位符搭配std::tie
使用。例:
#include <tuple>
struct S{
public:
bool b;
int i;
std::string str;
};
S fn(void){...};
bool b;
int i;
std::tie(b, i, std::ignore)=fn();
如果不这样,那么需要用一个对象来接住返回值:
S sRet=fn();
b=sRet.b;
i=sRet.i;
多了两行代码。
参见
[编辑]参考资料
[编辑]- ^ Sandberg-Diment, Erik. Parity: An Elegantly Simple Approach to Errors. New York Times (New York, N.Y.: New York Times Company). July 9, 1985 [8 November 2013]. (原始内容存档于2020-11-12).
- ^ Blase, W. Paul. No Harmless Hacker He. The Washington Post (Washington, D.C.: The Washington Post Company). Feb 17, 1990 [8 November 2013]. (原始内容存档于2016-03-25).
- ^ Cutler, Donald I. Introduction to Computer Programming. Prentice-Hall. 1964: 108 [8 November 2013].
The lost bits fall into a container called a bit bucket. They are emptied periodically and the collected bits are used for confetti at weddings, parties, and other festive occasions.
- ^ O'Brien, Frank. The Apollo Guidance Computer: Architecture and Operation. Springer. 2010: 45 [8 November 2013]. ISBN 9781441908773.
- ^ 存档副本. [2016-02-19]. (原始内容存档于2020-02-27).
- ^ "Using null stream as bit bucket (页面存档备份,存于互联网档案馆)" — an article on C# at java2s.org.