“堆栈”这种用词,经不起推敲,且毫无逻辑,英文也无对应
在阅读 ▌R2.5 资源的分配与回收方法应成对提供 这一节内容的时候,我注意到了一个用词:“堆栈”。
这是一个在中文互联网极其常见,又古老的词语,那么“堆栈”到底是“堆”(heap)还是“栈”(stack),又或者是“堆+栈”(heap+stack)?
据我所知,通常来说它在指:“栈”。这种用词毫无逻辑且经不起推敲,纯属历史遗留,应当改正。
我感觉这里指的应该是堆(heap)。https://learn.microsoft.com/zh-cn/cpp/c-runtime-library/potential-errors-passing-crt-objects-across-dll-boundaries?view=msvc-170
我感觉这里指的应该是堆(heap)。https://learn.microsoft.com/zh-cn/cpp/c-runtime-library/potential-errors-passing-crt-objects-across-dll-boundaries?view=msvc-170
本文这里的表达我觉得是:“堆+栈”(heap+stack),都指代了。不过看例子大概率是 “堆”。
DLL 没有自己的调用栈,也就不存在栈的概念。
首先”堆栈“这个词是有其含义的,“堆栈”一般指的是“stack”。
比如微软官方文档:
https://learn.microsoft.com/zh-cn/windows-hardware/test/wpt/stacks
(其对应的英文 https://learn.microsoft.com/en-us/windows-hardware/test/wpt/stacks)
再比如谷歌云文档:https://cloud.google.com/shell/docs/cloud-shell-tutorials/deploystack/overview?hl=zh-cn
“堆栈”都指的是”stack“。
而英国最权威的词典之一牛津词典里”stack“是”堆叠“的意思,含有”堆“字:
https://www.wordreference.com/enzh/stack
所以翻译成”stack“翻译成”堆栈“本身没有问题,表示栈是一层一层堆叠的。
不过使用”栈“一个字更能避免混淆,所以我个人是支持只使用一个”栈“字,而不使用”堆栈“的,但是出现了”堆栈“应该认识到指的是”stack“而非”heap“。
但问题在于这个文章里看起来指的是”堆(heap)“而非”栈(stack)“,因为他强调的是”资源的分配与回收方法应成对提供“这一点,对 C 语言来讲,如果不用内联汇编或者类似 longjump 之类的话,栈根本不存在这个问题。所以”堆栈“这个词在这里我认为确实不正确,应该改成”堆“。
首先”堆栈“这个词是有其含义的,“堆栈”一般指的是“stack”。
首先这是一句正确的废话。这句话非常没有价值,尤其你还强调了“一般”。因为就在仓库,他在计算机中使用了“堆栈”所表达的含义就不是:“栈”(stack),而是:“堆”(heap)。
这种词语早就该被扫进历史的垃圾堆里,毫无存在的价值,它在计算机中既不能代表栈,也不能代表堆,也很少有人拿它指代“堆+栈”,这种混乱不该存在,这没有什么好争议的。
比如微软官方文档:
这种愚蠢翻译也应该扫进历史的垃圾堆里,“Stacks”翻译为“堆栈”,甚至在很多地方不需要带 “s”,在众多古老中文书籍中都存在此用词。尤其众多文档中同样有。大多数人自己写堆栈这个词都不见得知道自己在说“堆”,还是“栈”,当使用“堆栈”这个词语,纯属徒增阅读难度。
最后,没有必要给这种过时的古老用词洗,我已经说了,它的中文翻译经不起推敲,没有价值。“堆栈”、“堆栈”,既有人拿它表示“堆”,也有人拿它表示“栈”,这个词语本身是更差的表达方式,而且存在根本的歧义,两个有明确指代的“字”,组成了一个没有多少价值的“词”。
不是“很少有人用它来指堆 + 栈”,而是用“堆栈”的人指的都是栈。没看懂你在杠什么。给出一个“堆栈”包含“堆”的正经文章谢谢。
这种错误的词语我都不知道有什么存在的必要和讨论的余地,没有价值。
在讨论段划分的时候, "堆"/"栈"/"堆栈" 三个词都是被广泛认可的, 但很明显有个异类试图混淆指代, 把 stack 翻译成 "堆栈" 就是个历史 错误, 因为一部分人被荼毒并习以为常了就认为这是最佳的? 明明有更简洁的叫法"栈", 为什么要坚持一个暧昧的/近似于行业黑话的翻译呢? 还是说你觉得让初学者面对这个你曾经或许困惑过的黑话体会你当年的"辛路历程"很有趣?
这种错误的词语我都不知道有什么存在的必要和讨论的余地,没有价值。
照这么说 C 语言把定长数组叫 array 也是个错误。B 语言里定长数组叫 vector 更符合词汇本意,保持协变性的矢量维度是固定的。
不是说非要讨论什么东西。假设有人看到了一篇文章里写“堆栈”,你总不能给人家洋洋洒洒骂一顿,而是应该知道文章里想表达的是什么意思吧,你又不能改别人写的文章。直接给喷一顿除了让别人看不懂之外意义何在。
在能改正的地方改正,在能讨论的地方讨论,在能教导的地方教导。
这种错误的词语我都不知道有什么存在的必要和讨论的余地,没有价值。
照这么说 C 语言把定长数组叫 array 也是个错误。B 语言里定长数组叫 vector 更符合词汇本意,保持协变性的矢量维度是固定的。
不是说非要讨论什么东西。假设有人看到了一篇文章里写“堆栈”,你总不能给人家洋洋洒洒骂一顿,而是应该知道文章里想表达的是什么意思吧,你又不能改别人写的文章。直接给喷一顿除了让别人看不懂之外意义何在。
你这句话更是莫名其妙, 提 issue 就是为了促进改善项目, 改不了的自然不强求, 但是如果不允许提建议你干脆关了该仓库 issue ?
在能改正的地方改正,在能讨论的地方讨论,在能教导的地方教导。
我也没说不改正啊,看看我之前说的我自己也都更倾向于“栈”一个字,避免混淆。。。 不真知道你在对我喷什么。
这种错误的词语我都不知道有什么存在的必要和讨论的余地,没有价值。
照这么说 C 语言把定长数组叫 array 也是个错误。B 语言里定长数组叫 vector 更符合词汇本意,保持协变性的矢量维度是固定的。 不是说非要讨论什么东西。假设有人看到了一篇文章里写“堆栈”,你总不能给人家洋洋洒洒骂一顿,而是应该知道文章里想表达的是什么意思吧,你又不能改别人写的文章。直接给喷一顿除了让别人看不懂之外意义何在。
你这句话更是莫名其妙, 提 issue 就是为了促进改善项目, 改不了的自然不强求, 但是如果不允许提建议你干脆关了该仓库 issue ?
我也没说不改正啊,看看我之前说的我自己也都更倾向于改成“栈”一个字,避免混淆。。。 真不知道你在对我喷什么。。。好好看看我发言再喷行么。 我只是在强调“堆栈”出现的情况指的是 stack 而已,什么时候说推荐使用“堆栈”了。
和愣头青交流真困难。
-
首先”堆栈“这个词是有其含义的,“堆栈”一般指的是“stack”。
我在最早已经重复过:“据我所知,通常来说它在指:“栈”。这种用词毫无逻辑且经不起推敲,纯属历史遗留,应当改正。”,我知道通常表达含义,但不代表我认可,我认为它毫无逻辑,这是矛盾点。
-
所以翻译成”stack“翻译成”堆栈“本身没有问题,表示栈是一层一层堆叠的。
我已经说了,我不认可,我的回答是:““堆栈”、“堆栈”,既有人拿它表示“堆”,也有人拿它表示“栈”,这个词语本身是更差的表达方式,而且存在根本的歧义,两个有明确指代的“字”,组成了一个没有多少价值的“词”。”、“这种愚蠢翻译也应该扫进历史的垃圾堆里,“Stacks”翻译为“堆栈””。
综上,这与将这里的描述“堆栈”改为什么是两件事情,从始至终没有在和你聊这个基本共识。
这种错误的词语我都不知道有什么存在的必要和讨论的余地,没有价值。
照这么说 C 语言把定长数组叫 array 也是个错误。B 语言里定长数组叫 vector 更符合词汇本意,保持协变性的矢量维度是固定的。 不是说非要讨论什么东西。假设有人看到了一篇文章里写“堆栈”,你总不能给人家洋洋洒洒骂一顿,而是应该知道文章里想表达的是什么意思吧,你又不能改别人写的文章。直接给喷一顿除了让别人看不懂之外意义何在。
你这句话更是莫名其妙, 提 issue 就是为了促进改善项目, 改不了的自然不强求, 但是如果不允许提建议你干脆关了该仓库 issue ?
我也没说不改正啊,看看我之前说的我自己也都更倾向于改成“栈”一个字,避免混淆。。。 真不知道你在对我喷什么。。。好好看看我发言再喷行么。 我只是在强调“堆栈”出现的情况指的是 stack 而已,什么时候说推荐使用“堆栈”了。
和愣头青交流真困难。
那你扯那么多废话干嘛? 洋洋洒洒小论文, 引经据典讨论观点 A 的正确性, 然后结尾写个支持 观点 B ? 然后你又批评指出问题的人, 又赞同批评的观点, 你知道自己在说什么吗? 看你的发言真没劲.
这种错误的词语我都不知道有什么存在的必要和讨论的余地,没有价值。
照这么说 C 语言把定长数组叫 array 也是个错误。B 语言里定长数组叫 vector 更符合词汇本意,保持协变性的矢量维度是固定的。 不是说非要讨论什么东西。假设有人看到了一篇文章里写“堆栈”,你总不能给人家洋洋洒洒骂一顿,而是应该知道文章里想表达的是什么意思吧,你又不能改别人写的文章。直接给喷一顿除了让别人看不懂之外意义何在。
你这句话更是莫名其妙, 提 issue 就是为了促进改善项目, 改不了的自然不强求, 但是如果不允许提建议你干脆关了该仓库 issue ?
我也没说不改正啊,看看我之前说的我自己也都更倾向于改成“栈”一个字,避免混淆。。。 真不知道你在对我喷什么。。。好好看看我发言再喷行么。 我只是在强调“堆栈”出现的情况指的是 stack 而已,什么时候说推荐使用“堆栈”了。 和愣头青交流真困难。
那你扯那么多废话干嘛? 洋洋洒洒小论文, 引经据典讨论观点 A 的正确性, 然后结尾写个支持 观点 B ? 然后你又批评指出问题的人, 又赞同批评的观点, 你知道自己在说什么吗? 看你的发言真没劲.
瞪大眼睛好好看看 conversation 再说话。
这种错误的词语我都不知道有什么存在的必要和讨论的余地,没有价值。
照这么说 C 语言把定长数组叫 array 也是个错误。B 语言里定长数组叫 vector 更符合词汇本意,保持协变性的矢量维度是固定的。 不是说非要讨论什么东西。假设有人看到了一篇文章里写“堆栈”,你总不能给人家洋洋洒洒骂一顿,而是应该知道文章里想表达的是什么意思吧,你又不能改别人写的文章。直接给喷一顿除了让别人看不懂之外意义何在。
你这句话更是莫名其妙, 提 issue 就是为了促进改善项目, 改不了的自然不强求, 但是如果不允许提建议你干脆关了该仓库 issue ?
我也没说不改正啊,看看我之前说的我自己也都更倾向于改成“栈”一个字,避免混淆。。。 真不知道你在对我喷什么。。。好好看看我发言再喷行么。 我只是在强调“堆栈”出现的情况指的是 stack 而已,什么时候说推荐使用“堆栈”了。 和愣头青交流真困难。
那你扯那么多废话干嘛? 洋洋洒洒小论文, 引经据典讨论观点 A 的正确性, 然后结尾写个支持 观点 B ? 然后你又批评指出问题的人, 又赞同批评的观点, 你知道自己在说什么吗? 看你的发言真没劲.
瞪大眼睛好好看看 conversation 再说话。
conversation 没问题, 倒是你大概率是写申论入脑了, 一个话题正说反说, 因为一个本身就没什么争议的话题引入大量的无用例子.
“堆栈”这个词在安全领域用的还是比较多的,比如堆栈溢出、堆栈平衡等等。因为堆和栈可以在同一块连续的虚拟内存中,如果一方被破坏,另一方也会遭到间接乃至直接的破坏,所以经常合在一起说。
“堆栈”本身就是一种泛指,可以指不断变化的内存区域,也可以指内存管理相关的数据结构,但这些问题在OS层面,不在语言层面,恐怕会越说越复杂,所以就用了“堆栈”这种比较宽泛的概念。
当然,如果引起读者的误解就不好了,后续优化吧~
“堆栈”本身就是一种泛指
这并未被主流所认可,甚至是少数人认为,可以看我最早的说辞:
据我所知,通常来说它在指:“栈”。 本文这里的表达我觉得是:“堆+栈”(heap+stack),都指代了。不过看例子大概率是 “堆”。
以及其他人的:
首先”堆栈“这个词是有其含义的,“堆栈”一般指的是“stack”。
所以”堆栈“这个词在这里我认为确实不正确,应该改成”堆“。
不是“很少有人用它来指堆 + 栈”,而是用“堆栈”的人指的都是栈。没看懂你在杠什么。给出一个“堆栈”包含“堆”的正经文章谢谢。
我感觉这里指的应该是堆(heap)。https://learn.microsoft.com/zh-cn/cpp/c-runtime-library/potential-errors-passing-crt-objects-across-dll-boundaries?view=msvc-170
就应该清晰的感觉到,大家并不认可它是泛指,反而主流的认为就是:“栈”,且绝大多数的情况下就是如此。
所以如我所说,有极大歧义,并没有绝对统一(即使统一也存在问题)。
也就是我最早说的问题:“那么“堆栈”到底是“堆”(heap)还是“栈”(stack),又或者是“堆+栈”(heap+stack)?”
目前的答案是:并无标准答案,每个人甚至有不同的理解,主流的两种是单指“栈”,或者“泛指”。
事实上泛指也只是我在本 issue 看到的,其他时候大多数只是听说。
这个用词有历史原因,有个人理解原因,但,总归不可否认的是:这不够好。
按照您的理解是“泛指”,也意味着这里表达的意思是“泛指”?那么这个优化措辞可能就比较困难了。
“堆栈”本身就是一种泛指
这并未被主流所认可,甚至是少数人认为,可以看我最早的说辞:
据我所知,通常来说它在指:“栈”。 本文这里的表达我觉得是:“堆+栈”(heap+stack),都指代了。不过看例子大概率是 “堆”。
以及其他人的:
首先”堆栈“这个词是有其含义的,“堆栈”一般指的是“stack”。
所以”堆栈“这个词在这里我认为确实不正确,应该改成”堆“。
不是“很少有人用它来指堆 + 栈”,而是用“堆栈”的人指的都是栈。没看懂你在杠什么。给出一个“堆栈”包含“堆”的正经文章谢谢。
我感觉这里指的应该是堆(heap)。https://learn.microsoft.com/zh-cn/cpp/c-runtime-library/potential-errors-passing-crt-objects-across-dll-boundaries?view=msvc-170
就应该清晰的感觉到,大家并不认可它是泛指,反而主流的认为就是:“栈”,且绝大多数的情况下就是如此。
所以如我所说,有极大歧义,并没有绝对统一(即使统一也存在问题)。
也就是我最早说的问题:“那么“堆栈”到底是“堆”(heap)还是“栈”(stack),又或者是“堆+栈”(heap+stack)?”
目前的答案是:并无标准答案,每个人甚至有不同的理解,主流的两种是单指“栈”,或者“泛指”。
事实上泛指也只是我在本 issue 看到的,其他时候大多数只是听说。
这个用词有历史原因,有个人理解原因,但,总归不可否认的是:这不够好。
按照您的理解是“泛指”,也意味着这里表达的意思是“泛指”?那么这个优化措辞可能就比较困难了。
你的回复毫无意义,并且没有任何水平,让人好奇你的英语和计算机水平,stack本身就是堆的意思,翻译成栈是因为在计算机结构里,stack和中文"栈"的作用相近,且heap占用了堆这个字导致无法使用堆命名,只好叫栈了,所以叫堆栈根本没有任何问题,stack本身就是形容一堆码放整齐的(堆,叠,跺),台湾还叫堆叠呢。
堆: 累积在一起的东西 栈: 储存货物或供旅客住宿的房屋 堆栈即可以表明stack本身的意思,在新华字典中堆栈就表明了累积某种物体的东西。
反倒是堆和栈这两个单独的字翻译才是不好的,不准确的,不严谨的
没见过说堆栈不好的😅除非他英语和语文都垃圾的要死
如果你觉得你贬低我的说辞能让你感觉到开心,那也未尝不可。
只是你不应该在这里发出来,如果你只是心里想点错的东西,或者对我本人瞧不上,我是无所谓的。
说实话,我很讨厌在我维护内容纠正措辞的时候又扯这些没有价值的人身攻击。前面的内容我已经说的很清楚了,所有的原因和逻辑,如果这都不能让你们理解,那也没什么好谈的了。
是我在为社区的发展新人的学习做出贡献而不是你,我没有义务为所有胡搅蛮缠的又水平不足但是又极其自信的开发者一直讲述这些东西。
最后,如果这能让你开心,你可以继续,但请记住:
- 你无意义的发言因为我而变得有了那么一丝价值,而得到我的回复,是你此生最大的荣耀。
我解释了你所谓的经不起推敲,而且你丝毫没有在我们的论题上进行任何辩证,只能拿出你那套精神啊Q法发出一堆毫无意义的话。不出意外你应该是发到了你的_语言律师群_内,然后沉浸在自己的世界中,毕竟那里有没技术力的家伙捧你臭脚。
表面上无所谓实际上根本就是自己解释不了,即你所说的一切都是建立在你无知的语言体系中。
stack和heap的翻译成栈和堆才是有问题的
所谓的"heap"叫Heap,才是历史遗留问题。
Heap这个词在计算机科学中最早出现在1964年,以Heap Structure这个数据结构出现。并且使用Heap泛指这种数据结构。
实际上Heap就不该出现**The meaning of "heap" is **的概念,也本就没有这种概念,这是早期被人滥用导致的,Donald Knuth 在《The Art of Computer Programming, Third Ed., Vol. 1》的第435页中提到:Several authors began about 1975 to call the pool of available memory a "heap" .
好笑的是,如果使用"heap"表示the pool of available memory,要证明它是正确的,要从以下两点,Heap这个数据结构或Heap这个词的本意。
然而无论上述哪一点在解释The meaning of "heap" is "free store"都是无法解释的通的。原因如下:
第一,那么请你找出使用Heap Structure实现并维护的动态内存分布区。在网上能找到的所谓的依据是Lisp早期使用Heap实现"堆"内存模型,后面被证明是假的。并且现在也没有办法统一"heap"是free store,目前已知最早是在Mr.Wijngaarden在 Algol 1971 中第一次这样使用,维基百科对"heap"的由来这个空起码有10年以上的历史空缺informally called the "heap"
第二,而且Heap表示凌乱的分层结构,而实际上,"堆"内存并不是分层,愚蠢的翻译者盲目的直译,加上愚蠢的程序员盲目的使用,导致现在有了"heap"和Heap的区分,而他们却被统一翻译成了"堆"。这还不是垃圾翻译?哦对,这也不能怪翻译,毕竟古早时期使用"heap"表示"the pool of available memory"的才是愚蠢者,现在用堆只是因为长期历史原因无法更正罢了。一个词本意和原意大相径庭的差距,所谓的"堆"和"heap"唯一的关系可能就是凌乱分层。哦对了,"堆"还不一定凌乱,可真是一个必要不充分条件
Stack和"栈"的关系就和表兄弟一样
Stack本身是表示FILO的特殊数据结构,但是"栈"字本身没有所谓的先进后出,它本身只有容纳的意思。
客栈: 客人想什么时候走什么时候走。 货栈: 有人要货的时候我才能走。
都没有所谓的先进后出,甚至连线性结构都没有。而在前面加一个堆进行补充起码拥有了线性结构。
[无论是意思还是概念模型,叠和堆栈都比单一的"栈"字好无数倍]
而堆栈有什么错误?硬要说错误,也只有"栈"这个字的语义歧义,应该使用没有歧义的字代替例如: 叠。而不是在前面加上堆形成并列式。一般来说堆栈本身已经可以很好的代表Stack表达的内容。
或许某些人认为直译就是好吧
毕竟自己用了那么久的东西,其实是错误的,还大言不惭的说另一个正确的东西是错误的,其实挺滑稽的。被人更正的时候就找自己的语言律师小团体来给自己打辩护,上来就是连论证都不论证了,更滑稽了。总之无论怎么样辨,真理都不会站在本就错误的一方。至于看不起这个问题,那确实,我挺看不起一个辩论问题时靠人数辩论的,而不是靠真理辩论的人,什么样的辩论需要"邀请"自己的小狗腿子?帝球当年一个人追一群骂,人家是为了真理。你一群人对着一个人骂,说白了就是为了语言律师的面子。
最后,实际上很多人都清楚什么是Stack,什么是Heap。堆栈,栈,堆,这些都不能用汉字来解释,因为这些词逐渐变成一种概念而非词本身,虽然它们是通过英语转换过来的,并带有亿点用词不当,但意思逐渐成为形态。没有任何改变的必要,只需要适当区分什么这些词在计算机和现实有什么区别就是了。
最后的最后,顺便把语言描述问题一块解决了。
// In a.dll
int* foo() {
return (int*)malloc(1024);
}
// In b.dll
void bar() {
int* p = foo();
....
free(p); // Non-compliant, crash
}
例中 a.dll 分配的内存由 b.dll 释放,相当于混淆了不同堆栈中的数据,程序一般会崩溃。
这里的描述还是非常不正确的,相当于混淆不同的堆栈导致崩溃这个是不正确,原文中可能想说,我们这样做,混淆了不同堆上的数据,free掉的可能不是申请的内存,导致出现了ub,一般会导致程序崩溃。或者更严谨一点:在跨DLL边界进行内存分配和释放的情况下,如果 DLL及其使用者使用了不同的CRT库副本,则会导致内存访问冲突或堆损坏。
还是那句话,你无意义的发言和低下的水平,因为我的回复,而让你有了一丝意义。
在能改正的地方改正,在能讨论的地方讨论,在能教导的地方教导。
我也没说不改正啊,看看我之前说的我自己也都更倾向于“栈”一个字,避免混淆。。。 不真知道你在对我喷什么。
其实意思很简单:不希望见到任何人为一种容易造成混淆的说法背书。
你的回复毫无意义,并且没有任何水平,让人好奇你的英语和计算机水平,stack本身就是堆的意思,翻译成栈是因为在计算机结构里,stack和中文"栈"的作用相近,且heap占用了堆这个字导致无法使用堆命名,只好叫栈了,所以叫堆栈根本没有任何问题,stack本身就是形容一堆码放整齐的(堆,叠,跺),台湾还叫堆叠呢。
堆: 累积在一起的东西 栈: 储存货物或供旅客住宿的房屋 堆栈即可以表明stack本身的意思,在新华字典中堆栈就表明了累积某种物体的东西。
反倒是堆和栈这两个单独的字翻译才是不好的,不准确的,不严谨的
没见过说堆栈不好的😅除非他英语和语文都垃圾的要死
你的回复毫无意义,并且没有任何水平,让人好奇你的英语和计算机水平,stack本身就是堆的意思,翻译成栈是因为在计算机结构里,stack和中文"栈"的作用相近,且heap占用了堆这个字导致无法使用堆命名,只好叫栈了,所以叫堆栈根本没有任何问题,stack本身就是形容一堆码放整齐的(堆,叠,跺),台湾还叫堆叠呢。
计算机领域有专门术语用法,更早的“本身”并不适合在计算机领域来使用。
我也很好奇你到底是做什么
我解释了你所谓的经不起推敲,而且你丝毫没有在我们的论题上进行任何辩证,只能拿出你那套精神啊Q法发出一堆毫无意义的话。不出意外你应该是发到了你的_语言律师群_内,然后沉浸在自己的世界中,毕竟那里有没技术力的家伙捧你臭脚。
表面上无所谓实际上根本就是自己解释不了,即你所说的一切都是建立在你无知的语言体系中。
我很好奇你到底是学过做过什么,以至于对一种有歧义的说法大加认同。从 Github 活动记录可知楼主给 C++ 标准库实现做过改进,你呢?
好的,恭喜你,不得不承认,你的若只发言成功引起了我的兴趣,以及想要继续回复的欲望。
在开始之前,记住,这是为了其它水平不够的开发者,不被你等这些人所误导。
本 issue 在讨论什么?
本 issue 由我提出,旨在期望仓库修改“堆栈”的用词,因为”堆栈“无法明确到底表示的是“堆”还是“栈”,我们期待其表示的含义符合自然语言的直接理解。
注意,此处有共识:我们清楚“堆”与“栈”指代的是一种存储,一种广义的用词,也是计算机中所有开发者的常用用词。
之前在讨论什么?
在 @Eurya2233369 出现之前,我们均认可了 ”堆栈“ 用词的不正确,想进行修改,不过此处依然出现了争议,具体来说:
-
我提出大多数时候”堆栈“指代的是”栈“,并说:”这种用词毫无逻辑且经不起推敲,纯属历史遗留,应当改正。“,而 @Timothy-Liuxf 认为不算大多数,而是就是 ”栈“。
不是“很少有人用它来指堆 + 栈”,而是用“堆栈”的人指的都是栈。没看懂你在杠什么。给出一个“堆栈”包含“堆”的正经文章谢谢。
-
但是这很快就被验证不对,因为 @rsp4jack 就认为当前此处的意思是表示”堆“。
我感觉这里指的应该是堆(heap)。https://learn.microsoft.com/zh-cn/cpp/c-runtime-library/potential-errors-passing-crt-objects-across-dll-boundaries?view=msvc-170
-
而仓库维护者则认为“堆栈”是一种泛指,说白了,就是认为有“堆” + “栈” 的含义。
“堆栈”本身就是一种泛指,可以指不断变化的内存区域,也可以指内存管理相关的数据结构,但这些问题在OS层面,不在语言层面,恐怕会越说越复杂,所以就用了“堆栈”这种比较宽泛的概念。
在这些之后我就已经进行了一个总结,以上这些讨论对话,已经几乎完美的证明了我的观点:
这是一个在中文互联网极其常见,又古老的词语,那么“堆栈”到底是“堆”(heap)还是“栈”(stack),又或者是“堆+栈”(heap+stack)?这种用词毫无逻辑且经不起推敲,纯属历史遗留,应当改正。
到此本应该结束了,仓库维护者在有空的时候考虑更合适的用词,留下此 issue,也避免误导,但是...
瞎扯
@Eurya2233369 说实话你的发言实在是让我不知道说什么,以至于我只能重复一下以上的内容,再重复一下我的正确。
写都写了这么多,我也不建议浪费更多时间来反驳你。
- 你的认知有误,我不认为你对计算机有足够的了解,甚至没有足够的共识。
另外,你称我为语言律师,说实话,这一句话也就能表达你对这个词语的不了解。
当前讨论的内容,从始至终都和语言无关,如果真的是在 C++ 中滥用了 “堆”、“栈”这些措辞,来表示存储,我才会说:“C++ 语言层面没有堆和栈,所谓的内存分区的概念,你们应该学习C++的存储期。而如果是在讨论某些底层实现,则应该额外的强调”。
我实在是不懂你的这个用词,不过也能表达你的不了解。
另外,我总结了一下你的观点:
而堆栈有什么错误?硬要说错误,也只有"栈"这个字的语义歧义,应该使用没有歧义的字代替例如: 叠。而不是在前面加上堆形成并列式。一般来说堆栈本身已经可以很好的代表Stack表达的内容。
总而言之你认为堆栈没错,那么我就可以很直白的告诉所有人,这是错的。
我们进一切能力,尽可能的让所有的非特殊专有名词,它的表达,它的用词,符合我们的自然语言。我认为你也无法理解这些。
不出意外你应该是发到了你的_语言律师群_内,然后沉浸在自己的世界中,毕竟那里有没技术力的家伙捧你臭脚。
他们要是都有如此水平,或者都有你说的那样忠诚,那就好了。
我再说一遍,本 issue 是一个脱离于语言抽象的,非语言的问题,讨论的是一个几乎用了几十年的错误的词语,而仓库用到这个词语的地方,所描述的,也是非语言层面的问题,我还是那句话,你的水平不够。
总结
虽然之前的讨论也有一点不礼貌和争吵,但是好歹还是有共识的,只是说我可能更加的激进。
直到你的出现 @Eurya2233369 。还是那句话,得到我的回复,你应该感到荣幸,这让你的回答拥有了那么一丝的意义。
你所说的连基本事实论证都没有,纯纯精神胜利法是吧?论证需要你的论点而你所说的只有你的主观意识形态,说简单点,就是你急眼了,你无法反驳我的任何错误。你只能说这个是错误的,但你拿不出证据。你的命题里说着英文无对照,又反过来说讨论的是一个几乎用了几十年的错误的词语,你隔这自证命题呢是吧,从头到尾你都没有拿出你的论点,在说别人的时候记得思考下自己为什么水平那么烂。别从头到尾都是一副专业人士的样子,实际上什么都不懂,一开始你的发言就不带任何论点,让人笑掉大牙。
我本来以为你只是技术水平不行,实际上阅读理解也存在问题。
@frederick-vs-ja 已经对你的发言有了评价。
你的回复毫无意义,并且没有任何水平,让人好奇你的英语和计算机水平,stack本身就是堆的意思,翻译成栈是因为在计算机结构里,stack和中文"栈"的作用相近,且heap占用了堆这个字导致无法使用堆命名,只好叫栈了,所以叫堆栈根本没有任何问题,stack本身就是形容一堆码放整齐的(堆,叠,跺),台湾还叫堆叠呢。
堆: 累积在一起的东西 栈: 储存货物或供旅客住宿的房屋 堆栈即可以表明stack本身的意思,在新华字典中堆栈就表明了累积某种物体的东西。
反倒是堆和栈这两个单独的字翻译才是不好的,不准确的,不严谨的
没见过说堆栈不好的😅除非他英语和语文都垃圾的要死
你的回复毫无意义,并且没有任何水平,让人好奇你的英语和计算机水平,stack本身就是堆的意思,翻译成栈是因为在计算机结构里,stack和中文"栈"的作用相近,且heap占用了堆这个字导致无法使用堆命名,只好叫栈了,所以叫堆栈根本没有任何问题,stack本身就是形容一堆码放整齐的(堆,叠,跺),台湾还叫堆叠呢。
计算机领域有专门术语用法,更早的“本身”并不适合在计算机领域来使用。
我也很好奇你到底是做什么
我解释了你所谓的经不起推敲,而且你丝毫没有在我们的论题上进行任何辩证,只能拿出你那套精神啊Q法发出一堆毫无意义的话。不出意外你应该是发到了你的_语言律师群_内,然后沉浸在自己的世界中,毕竟那里有没技术力的家伙捧你臭脚。
表面上无所谓实际上根本就是自己解释不了,即你所说的一切都是建立在你无知的语言体系中。
我很好奇你到底是学过做过什么,以至于对一种有歧义的说法大加认同。从 Github 活动记录可知楼主给 C++ 标准库实现做过改进,你呢?
笑了,你就是我说的那种连论证都不论证的蠢货,当我拿出证据时只能让你的"狗腿子"来帮你打辩护,符合我之前对你们的上来论证都不论证了,你们的水平就和短板木桶一样。至于我做出过什么贡献,别急,后面慢慢看。
我本来以为你只是技术水平不行,实际上阅读理解也存在问题。
@frederick-vs-ja 已经对你的发言有了评价。
即你所说都是建立在你无知的语言