为什么大多数的程序员的编程界面背景都是黑色的?

为什么大多数的程序员的编程界面背景都是黑色的?

invalid s,我特别喜欢和聪明人交往,因为不用考虑他们的尊严——乔布斯

因为现在几乎所有的显示器的显示原理都是——发光。

CRT:电子束轰击荧光材料,从而在屏幕上激发闪光,显示字符 / 图像。

LCD:整块背板发光(反射背光灯管发出的光),借助液晶材料的电致浑浊,遮蔽不需要的光,从而把字符 / 图像显示出来。

LED:微型发光二极管发光,组成字符 / 图像。

作为对比:

黑 / 白板:利用不同物质(颜料)对环境光反射能力的不同,书写 / 绘制字符 / 图像

纸张:同上

墨水屏:同上


两者最根本的不同,在于 CRT/LCD/LED 本身都是光源,是一种发光体;而后者本身不发光,必须反射外部光源照射过来的可见光,才能在人的眼底形成图像。

自然界的发光体极少。日月,萤火虫,火……

若不是现代的光污染,没有月亮的夜晚,伸手不见五指才是正常。

这个差别是极为关键的。

对反射体来说,它的亮度总是和环境相协调的——环境光有多亮,它就会有一个对应的亮度。

烈日下的纸张也会亮的刺眼;星光下的宝石黯淡无光……

我们的眼睛,早就习惯了这种场景。

换句话说,反射体会“自适应于环境光亮度”;我们的眼睛经过亿万年的演化,也早已适应了这种场景。


但是,电脑显示器这种发光体完全改变了这一切。

它自身是发光的;因此烈日下,它的光芒显得太过灰暗,你自然看不清它显示了什么;黑夜里,它照样可以有 500 流明甚至更高的光通量,使得一下子从黑暗中到它前面的你睁不开眼。

室内的光通量并非一成不变。早上,中午,晚上,照度各有不同;但显示器的亮度,除非你随时调节,否则总是一成不变的。

它的亮度和周围环境的反差极易造成眼睛的不适应。因为我们必须不断的在不同的光亮度之间切换:一看显示器,500 流明,瞳孔要缩小,要衰减神经信号强度;眼睛余光一瞥手边摊开的书本或者从身边走过的同事,100 流明,瞳孔要放大,要增强神经信号强度……

哪怕只是看一小会儿,过亮 / 过暗的显示器都会造成极大的眼部疲劳;何况程序员们要在电脑前一坐一天。

除非采光条件极差、所以一天到晚完全依靠灯光照明的办公室,否则,这种显示器亮度和环境光亮度的不匹配无法避免。

而且,为了有效显示字符 / 图像,显示器亮度必须要压住环境光亮度,否则很容易看不清屏上字符、造成更大的视疲劳。

尤其对程序员来说,他们不光要看清每一个字符,不同字符串究竟是什么——是关键字、运算符、变量、类、对象还是函数;一段内容究竟是声明还是调用还是注释;变量 / 函数公开还是私有、是否 const、是字符串还是整型、浮点,等等等等——这无穷多的细节,遗漏一点都是灾难。

而为了帮程序员快速区分这些不同属性,他们使用的编辑器(Emacs/vim/ 各种 IDE)可以很智能的自动分析代码、然后把不同代码“染”上不同颜色,从而使他们可以一目了然。

然而,人眼对黑白图像的分辨力远高于彩色。这是因为,人眼中负责识别颜色的视锥细胞数量少,而且灵敏度低也比不上负责识别明暗的视杆细胞——因此古人说“夜不辨色”,关于阴曹地府的传说也总是黑白的。晚上你也可以关上灯,拉上窗帘,看看彩色的杂志封面是不是颜色暗淡了。

因此,想要让程序员一眼看出“这玩意儿是个类名所以染成了藏青色”“那东西是编译期常量所以用了天青色”“这东西是个函数所以用了淡绿色”……那么,显示器的亮度就必须足够高。否则真的没办法一眼分辨出这么几十种不同的颜色。

换句话说,由于职业原因,程序员使用电脑时,往往习惯性的把屏幕调的过亮,否则容易看不清字符颜色。

同时,由于职业原因,程序员面对的屏幕,必然绝大多数地方空白、只有少量字符(代码)。

提高显示器亮度,对大片白色背景来说,这就是一大片的高亮发光区——你敢调的稍暗,上面的字符就看不清了。

此外,由于显示器会发光,过亮的大片白色区域还会造成很强的遮蔽效应,使得字符颜色更难分辨。

因此,如果使用白色等高亮背景,这种“眼前屏幕亮度和环境光亮度的不匹配”造成的影响就会被放到最大。这和反射体是完全不同的。

如果使用黑色背景呢,显示器本身相当于一块黑板,仍然有一定的反射环境光的能力(从而产生了一定的自动调节能力);同时高亮度的字符如同细小的、闪亮的宝石,非常容易识别。盯着这种屏幕自然就不太容易引起视疲劳了。

当然,黑色屏幕虽然仍然能有一定的光反射能力,但反射效果并不好,容易让人觉得显示器那块亮度(相对于环境亮度)过低,仍然不太协调。如果选择灰色之类存在一定基础亮度的暗色,那么显示器背景和环境光强之间的差距就可以进一步降低。这就是很多人说自己“更喜欢深色而不是黑色背景”的原因。