如何解答

2022-06-04 11:53:53 +08:00
 codists

一、缘由

“如何提问”的文章很多,这里想谈一下“如何解答”这个问题。之所以写这篇文章内,源于我的两个提问:

提问 1:求助,执行字节码指令时栈的具体变化是怎么样的?

提问 2: Python array 文档里面的 machine values 具体指的是什么?

看完提问 1 的解答,我感觉心情舒畅;看完提问 2 的解答,我感觉整个人心情都不好了。

所以想借此谈谈一些个人观点,希望下次回答我的问题的大佬能先看下这篇文章。当然了,你我若无任何交集,那看不看这篇文章都无所谓。同时也是为了营造一个更好的中文提问与解答社区。

二、tips

下面具体谈谈“如何回答”。

2.1 可以解决的问题

如果知道怎么解决,那么直接提供解决方案,并尽可能提供参考资料。

例如提问 1 里面的解答:

6, 10 画错了。
两个都是要先出栈两次。只是 10 的 TOS1 如果支持 inplace ,等同于出栈一次。

这类解答是最让人感到舒服的 ,直接指出问题,并提供解决方案。如果再提供一些参考资料,那么可以说相当令人满意。

2.2 不可以解决的问题

对于无法解决的问题,那么最好提供具体的建议

例如提问 1 里面的解答:

我自己画出来的也不对,不过能确定你地址 6 、10 的地方画错了,6 的那里要出栈两个再写入( Binary operations remove the top of the stack (TOS) and the second top-most stack item (TOS1) from the stack. They perform the operation, and put the result back on the stack.),10 是 inplace 的操作,你 append 了。咱俩可以讨论一下

这类解答可以看出解答者也是真的去验证了。

三、不好的解答

看下提问 2 里面的解答:

建议学一下 C 语言 /剩下的你该去学 C 语言了 / 所以楼上让你学 C 语言还真说对了
合着你知道”machine value“不是一个常见的用法?这本来就不算是一个专业术语,我们帮你推测验证它的具体含义,然后你说没有给出定义?要饭要的这么理直气壮的吗?

“计算机科学与技术”专业毕业的人不知道内存表示和补码不是一码事?不会 C 语言? CSAPP 没看过?毕业挺好,下次不要毕业了。
我看合着大家回答没啥问题啊,但是整个就一网络喷子的作风,其实我还是比较赞同你说的 machine value 为内存表示了,不同机器 /大小端,不同平台表示也可能不同。

看到三个大佬“建议学 C 语言”之类的回答,我不能说有错,我只能说:私以为这样的回答和不回答貌似也没有多大差别。以及所谓的“要饭的”,“网络喷子”之类的回答就让人感到莫名其妙。

对于提问 2 里面的谁对谁错的问题,本帖无意再讨论,里面很多人的回答都是“前面的人回答没有问题”——如果你也要来重复这句话,那么就没有必要了,因为你偏离了解答问题的初衷——解答问题的最终目的是为了让提问者明白,而不是解答者之间互相认同。

三、总结

之所以写这边文章,只是希望下次回答我的问题的大佬能先看下这篇文章,我不希望看到像提问 2 里面那样的回答。当然了,你我若无任何交集,那看不看这篇文章都无所谓。

同时也是为了营造一个更好的中文提问与解答社区。

2127 次点击
所在节点    程序员
13 条回复
lscho
2022-06-04 12:01:07 +08:00
那您有没有意识到是您在提问 2 中 #3 的回复过于不友善导致的呢?前两楼正儿八经的回答,您来个“听君一席话 如听一席话”、“请问你和一楼的大佬真的看懂问题了吗?”、“说话带点逻辑吧。ball ball 你们了!”

问问题就摆正心态,可以带着质疑问题的态度回复,但是不能带着质疑回答问题者的态度回复。
pcbl
2022-06-04 12:05:02 +08:00
只要对方的回答是有用的,他骂我一顿我都能接受。
最受不了洋洋洒洒几百上千字都是废话的回答。
jackyin
2022-06-04 12:16:28 +08:00
提问时,是自己来求答案的,自然要把问题写清楚,态度也要好,不然怎求的到答案?
回答时,我想怎么答就怎么答,我甚至可以说说风凉话,阴阳怪气一下,反正我又不有求于人。除非你给钱,自然就多多的人认真回答了,因为求财啊。

所以呢,面对所谓的不好的解答略过就行,无需在意,甚至面对你觉得不好的解答也要表达谢意,也许有人看到你的谦逊的态度,会给你更好的答案。如果你的态度是高高在上,不耻下问,谁愿意再给你更好的答案呢?
wunonglin
2022-06-04 12:28:47 +08:00
如果回答者回复的不是你期望的答案,那么你忽视即可。
jackyin
2022-06-04 12:31:51 +08:00
刚看了下链接,认真回答的人都要被你怼死了,一楼那大哥回答的那么认真还要被这样怼。
我本以为人家只扔下一句“建议学一下 C 语言”,原来是人家给了详细答案,然后给的建议。
难怪网上各种小作文,只要剪辑下内容,意思就完全变了。

我看了下别人回答,都比较认真,并且也没带阴阳怪气的语气,你的回复尽是阴阳怪气,不断的用反问来怼。
learningman
2022-06-04 12:33:12 +08:00
回答你问题还要被阴阳,回复你就是欠了你的是吧

https://www.v2ex.com/t/854656?p=1#r_11698464
https://www.v2ex.com/t/854656?p=1#r_11698578
huntagain2008
2022-06-04 12:41:04 +08:00
liprais
2022-06-04 12:42:39 +08:00
看了下回复楼主老阴阳师了。
nailuoGG
2022-06-04 13:01:56 +08:00
刚开始以为是楼主被羞辱了,点开回复一看好像是反过来了。

问问题应该是和回复者一起来解决问题,但是你这样的回复会让人觉得在考校别人

你直接忽略没用的回复就好了,减少中文社区的戾气从自己做起
GeruzoniAnsasu
2022-06-04 18:26:08 +08:00
in fact, people reply but not answer

期望每个人都是以解答问题的心态点进来的,这种想法本来就不可取



其实你可以观察下「解答」退化成「回复」的分界线在哪
GeruzoniAnsasu
2022-06-04 18:34:45 +08:00
看了下原帖


------

>
# 这里的 string 是指字节串(bytes)而不是字符串(str)。
# machine values 就是值(例如 int 、float 等)的机器表示(内存表示)。
# 内存里面每个位有 0 和 1 两种状态,通常每 8 位组成 1 个字节,每个字节取值 0~255 。
# 同一块内存可以按不同的方式来解释。

>
value (值)是指整数值(1, 2, 3 ...),实数值(0.1, 1.0, 10.0, ...)、布尔值(true, false)等。
值都有对应的类型,类型可以看做值的集合。

machine value (机器值)是指机器(计算机 CPU)能够直接处理的值。

machine value 可以简单的用几个字节表示,例如:
无符号整数(8 位,16 位,32 位,64 位等),采用原码表示。32 位无符号整数取值范围为 0 到 2**32-1 。
有符号整数(8 位,16 位,32 位,64 位等),采用补码表示。32 位有符号整数取值范围为 -2**31 到 2**31-1 。
浮点数(32 位,64 位等),按 IEEE 754 标准规定的方法表示。32 位浮点数取值范围大约为 -3.4028235e+38 到 3.4028235e+38 ,以及 3 个特殊值。

machine value 的基本运算(加减乘除等)通常就是一条机器指令,这些运算与数学上的运算有些差异,有溢出、误差等情况。

详细可以参考 CSAPP 的第二章。

与 machine value 对应的就是高级语言里的值。
例如 python 里面的 int ,可以表示很大的整数(取决于内存大小)。
每个 int 占用的内存不固定,绝对值越大占用内存越多。
对应的运算也是一个复杂的函数,最终需要很多条机器指令。


是好解答还是坏解答?以你的定义
documentzhangx66
2022-06-04 20:49:14 +08:00
还是我来吧。

1.提问 2 的第二问,作者进行 because 解释的原因其实是错的,因为它拿 array 对比 list ,这两者的差异只是存储上只是是否连续以及是否有指针的区别。但作者原话却说到机器数值上去了,牛头不对马嘴。我本以为作者会讲内存压缩的高级话题,我去翻了下 pdf 原文,结果根本不是这回事,这作者只是单纯的讲错了而已。

https://raw.githubusercontent.com/hiddenJuliet/pythondocument/master/Fluent%20Python.pdf
P.48

2.并不是每个回答者,都是顶尖高手,都敢质疑原文的作者是否出错。那个贴的 1 楼与 2 楼已经觉察到不对劲,但他们因实力没达到顶尖高手的地步,没自信说原作者写错了,但他们也给你指出了一条正确的路子,让你去学 C 语言,去对比 array 与 list 的差异。解决思路与方向是对的。

3.当你不懂时,别人能花费时间给你回答,无论是否答对,你都应该感谢别人,而不是因为别人答错了,去讥讽别人。当然,如果你达到我这种级别,去喷喷这些回答者,那是他们的荣幸。
l00t
2022-06-05 02:22:24 +08:00
@documentzhangx66 一个都是同一类型,一个支持不同类型,这个才是本质区别好不好。其他都是由此带来的表现罢了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/857225

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX