buffer有诸多好处,不必细说,但是它不是个好东西。这有点标题党,应该说,有时候buffer不是个好东西。
或者说,没有不好的技术,只有应用于错误的场合。
证据1:
#include <cstdio>
#include <cstdlib>
main()
{
int a;
printf("hello world!"); printf("hello world!"); printf("hello world!");
fflush(stdout); //如果没有这句,在eshell和msys
shell(mingw)中,上句中的内容会在下句后输出。在windows控制台下无此问题
scanf("%d", &a);
getchar();
}
eshell 和 msys shell没有经过我的同意(也许/如果有设置选项,那么这个默认设置就是糟糕的),就使用了buffer,让我困惑了小于半年吧。
证据2:
在EC-SRP中,我的buffer方案最终被无情的事实否决了。
在光强改变后10余秒甚至更久,信号才作出响应,对于我这种性急的人,可能样口已经倒掉三次以上了。
原因就在于buffer缓冲了数据,同时也使得数据到达延迟了。
还有些证据,不细说。
事实上,当我们替别人做出选择的时候,无论我们的居心多么地好,那都是buffer行为。我们凭什么认为自己经别人亲自的选择更好,或者说,我们凭什么认定我们比别人更有智慧选择?
除非特别声明,我希望看到的是真实的世界。
想起了费曼先生提到的,他和他的女朋友承诺绝不说谎。当他的女朋友陷入绝症的时候,费曼先生迫于压力骗她说没啥大事儿。
看到真实世界需要勇气,想保护别人也是善意,但是我们凭什么认定别人比自己更脆弱?
其实buffer并不是最糟糕的东西。最糟糕的是你fflush,系统也响应了,可是仍然有另一个buffer存在。这也是gen3人为什么那么令人无法忍受的原因。
当然,如果自信能把buffer做得如同不存在一样,也好。不过正如许多父母对孩子所做的,还需要确保能把这种完美的buffer永远做下去,让true
man永远也意识不到......如果有那样的中间层,我宁可死,请参见小说《真实的虚幻》。