跳转到内容

比特垃圾桶

本页使用了标题或全文手工转换
维基百科,自由的百科全书

比特垃圾桶(英語:bit bucket)或比特桶计算机行话,指丢失的计算机数据所在的地方。如果数据因传输错误或者系统崩溃丢失,或者其他在任何意义上以任何形式而丢失,就可以说数据被丢进了比特垃圾桶,一个存储着所有丢失地计算机数据的神秘地点,例如:

一个无法通过奇偶校验的错误字节,会被粗暴地丢进比特垃圾桶,一个计算机中的废纸篓。

——Erik Sandberg-Diment,《纽约时报》,1985年6月9日。[1]

价值数百万美元的时间和研究数据进了比特垃圾桶?

——W. Paul Blase,《华盛顿邮报》,1990年2月17日。[2]
纸片接收器(或者“比特垃圾桶”),存储着UNIVAC计算机打孔卡片的碎纸。

比特垃圾桶的原始含义是一个电传打字机或者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;

多了两行代码。

参见

参考资料

  1. ^ 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). 
  2. ^ 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). 
  3. ^ 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. 
  4. ^ O'Brien, Frank. The Apollo Guidance Computer: Architecture and Operation. Springer. 2010: 45 [8 November 2013]. ISBN 9781441908773. 
  5. ^ 存档副本. [2016-02-19]. (原始内容存档于2020-02-27). 
  6. ^ "Using null stream as bit bucket页面存档备份,存于互联网档案馆)" — an article on C# at java2s.org.