比特垃圾桶

计算机术语

比特垃圾桶(英語: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.