Heap: an untidy collection of objects placed haphazardly on top of each other. 原意是懒散无序地垒在一块,翻译成“堆”是十分合理的。
但是Stack明明有叠、摞luò、垛地意思,表示LIFO的秩序,TW翻译成堆叠就很容易理解,不容易和堆弄混淆,简体为何翻译成"堆栈|栈"呢?
虽然我个人觉得这个翻译十分不负责任,明明中文中有很好的替代字可以规避歧义,但无奈已经成为行业约定俗成的东西,正如很多数学名词也是因为翻译复杂化、歧义化。
那么只有去强行理解栈这个字了,如果想当然地理解为“客栈”、“栈道”,就会陷入无法区分堆、栈和Heap、Stack的对应关系。
我因此困扰过很多次,直到偶然看到说文解字中关于栈的解释。
首先,栈的繁体是棧, 左侧的木只是表示材料性质,而右侧则是表意的戔,这里可以看见上下层叠的结构(当然戋中间平行的两横也可以看做上下层叠结构,甚至两横一撇完全可以看作上下结构)。
其次,根据《说文解字》,栈棚互训,也就是两个字相通。又有
“
栈,棚也。——《说文》。按,栅者,竖编之,棚者,横编之。
”
根据字形和说文的按,可以知道栅栏是竖着的条子,就像现在的栅栏,是竖条横排。
而棚(即栈)对应的则是横条竖排,这就像一叠木头从下往上排列,也就和Stack的意思对应起来了。