垃圾进,垃圾出(英语:Garbage in, garbage out,缩写:GIGO),或译为废料进,废品出,是电脑科学资讯通信技术领域的一句习语,说明了如果将错误的、无意义的数据输入电脑系统,电脑自然也一定会输出错误、无意义的结果。同样的原则在电脑外的其他领域也有体现。

历史

本习语产生于电脑的早期时代,1957年11月10日,一篇报纸文章介绍了美国陆军的数学家所做的电脑工作,[1]其中一名军队专家威廉·D·梅林解释说,电脑自己不能思考,因此输入粗劣的数据将不可避免地产生错误的输出。甚至早在十九世纪,电脑的先驱查尔斯·巴贝奇就已经意识到了这条编程的基本原则:

之后,英国海上事故调查局也得到了相似的结论:

本习语可能是从先进先出后进先出这两个术语中派生出来的。[4][5]

例子

数码化

将低质量的老旧模拟录音或视频数码化,是清理信号、改善质量的第一步,然而数码化的过程本身并不能改善质量。原始模拟信号中录制的瑕疵会原封不动地保留下来。 [6]

统计学

统计学中,如果分析的原始数据是错误的、不准确的,那么统计的结论也就是不可信的。[7][8]

编程语言

有些编程语言,主要是动态类型的编程语言,对待调用函数时参数的类型和数值的正确性采取无所谓的态度。比如JavaScript函数parseInt。当输入无意参数时,比如parseInt("4个人去喝酒", "哈哈哈~"),会得到返回值“4”,其逻辑是尽量从垃圾输入中提取看上去说得过去的资讯,哪怕输出的是无意义资讯,也不愿报错。这种设计理念,就被称作“垃圾进,垃圾出”。

通常而言,垃圾进垃圾出的语言设计理念被认为是贬义的,因为不报错就等于悄悄出错,这导致计算错误或者被忽视,或者在其后的计算中引起连锁反应,前者使得错误本身难以发现,后者使得错误根源难以定位。[9]及时报错的处理方式是受到学术和工业界广泛认可的设计思路。[10]现代语言设计者和委员会,包含维护Javascript的委员会TC39本身都在尽可能的消除这种设计。

参见

参考文献

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.