【问题标题】:What is a 'value' in the context of programming?在编程的上下文中什么是“价值”?
【发布时间】:2011-03-19 01:28:30
【问题描述】:

您能否在不参考特定编码技术或特定语言或架构的情况下为编程上下文中的“价值”提出一个精确的定义?

[上一个问题文本,供讨论参考:“什么是编程的价值?如何精确定义这个词?”]

【问题讨论】:

  • @Vag,不,我的意思是取决于上下文。 “什么是价值”太模糊了。你的意思是什么是价值?我们在谈论整数、浮点数、字符、字符串、布尔值吗?你是说变量吗?你的意思是代码在编程中的价值吗?我只是在寻找一个准确的问题,并认为代码可能有助于集中你的思想,从而集中你的问题。
  • 我认为当程序员使用“价值”一词时,他们会在特定的上下文中这样做,主要是他们正在处理的代码。然后,这会将这个讨论折叠成一个架构,即二进制计算,然后我们就可以使用这个定义。我确实认为您是正确的,一般/理论计算术语“价值”太模糊而无法定义。你不能在一般情况下有一个具体的定义。
  • @Vag:投票重新开放,但请注意你的语气。
  • @Vag:你可以更好地表达你的问题。如果你这样做,我敢打赌你会在这里得到更好的接待。你没有付出太多努力。
  • 也许我可以建议换个说法:“您能否在不参考特定编码技术或特定语言或架构的情况下,在编程上下文中为“值”提出一个精确的定义?”

标签: terminology


【解决方案1】:

你查过维基百科中的article吗?

在计算机科学中,值是根据某种数据类型解释的位序列。相同的位序列可能具有不同的值,具体取决于用于解释其含义的类型。例如,该值可以是整数或浮点值,也可以是字符串。

【讨论】:

  • 维基百科的解释是不正确的:“在计算机科学中,值是根据某种数据类型解释的位序列。”如果我建造一台没有位的计算机,它仍然是价值操纵。
  • 我知道你只是在引用维基百科,但“位序列”似乎对值的表示过于具体,你不觉得吗?我的意思是,当然,我们选择的任何其他表示形式都可能与“位”同构,但我真的不认为将其编码到定义中是有意义的。
  • Errrrrr...一台没有位的计算机...也许您应该从阅读有关计算机的维基百科文章开始...:S
  • 麦克马德,我不关注你。没有位的电脑很多:en.wikipedia.org/wiki/Ternary_computer
  • 我不同意“二进制计算机科学”就是计算机科学,尽管我之前肯定从未听说过这个术语。大多数计算机科学可以在不参考计算机的情况下完成,其余的通常是参考抽象远高于比特级别的机器来完成的。我想不出有多少“计算机科学”真正关心实现后如何表示。
【解决方案2】:

【讨论】:

【解决方案3】:

在这里,我来试一试:值是可以被计算机操作的一段存储信息(在信息理论意义上)。

(我不会说一个值有意义;寄存器中的随机数可能没有意义,但它仍然是一个值。)

【讨论】:

  • 当然;随机数包含大量信息,但可能对任何人都没有意义。
  • 我赞成这一点,因为我认为如果我们从“有序的符号序列”的意义上解释“信息”,这是我们能得到的最接近的结果。如果我们采用这个定义,它与我基于图灵磁带给出的定义是同构的。
  • 回想起来,我对“可以被计算机操纵”感到不舒服。这仅指一流的价值观。从一等值我们可以得到我们可以推理的高阶值,但如果不将它们编码成一等表示,计算机就无法对其进行操作。
  • 我看到这是我们定义之间真正的实质性差异。例如,您会说任何函数都是一个值,因为您显然可以将它唯一地表示为一些位序列。我更愿意使用“价值”来表示真正由计算机直接操作的更简单、更“原子”的东西。也许你的定义更好,但当我听到“价值”时,我的定义与我的想法相符。
  • 自己试一试: 1. 不提一些编程语言 P 的语义 S 概念“值”是没有意义的。 2. 如果存在等价于 S 的归约语义 RS,则值是归约到自身的 RS 的这些项。 3. 如果存在等效于 S 的“命令式”语义 IS(即其中提到了一个存储的语义),那么值就是可存储在 IS 存储中的元素。 4. 如果没有如 (2) 或 (3) 中定义的语义,那么在 P 的上下文中,“值”是没有意义的。
【解决方案4】:

基于正在进行的关于“位”是一个不可接受的定义的 cmets,我认为这个更好一些(尽管可能仍然存在缺陷):

值是可以在一段可能无限的图灵机磁带上表示的任何东西。

编辑:我正在进一步完善它。

值是任何可能无限的符号序列的可能解释集合的成员。

这相当于早期基于图灵机磁带的定义,但它实际上概括性更好。

【讨论】:

  • 你不妨说,值是可以映射到整数的任何东西。这是相同的陈述,更清晰。 (稍作编辑,“整数”而不是数字)
  • 但是“价值”的定义取决于“整数”的定义,我不想打开那罐蠕虫。然而,这似乎可以用来制定一个可接受的替代但等效的定义。
  • 是的,但是它可以表示的任何其他数字形式都可以一对一地映射到整数。例如,它不能直接表示一个无理数,除非您可以将该无理数定义为其他事物的函数。 (但它可以表示有理数,因为它们映射到整数。)
  • 终于明白你的回答了。这背后有很多理智。但我想正确的定义介于我们之间。
  • @Gian:我认为这是最狭义的意义分配,但我们正在争论英语语义。我看到了你定义的广度,但我认为我不能超越“价值”这个词和价值的分配,因为它赋予了一些价值,因此意义和/或上下文。这可能是我的年龄:)
【解决方案5】:

我只是碰巧浏览了 Pierce 的“类型和编程语言”——他将编程上下文中“值”的一个相当精确的定义滑入文本中:

[...] 定义了称为 values 的术语子集,它们是可能的最终评估结果

这似乎是一个相当简洁的定义 - 即,我们采用所有可能项的集合,在所有评估发生后可能剩下的就是值。

【讨论】:

  • 请注意,它与我之前提出的定义完全一致。一个问题仍然存在,如果在没有评估概念的情况下给出语言语义怎么办?例如,它可以是类汇编语言。我的定义很适合这种情况。
  • Pre-state/post-state 似乎是高级语言评估的合理模拟?
【解决方案6】:

简而言之,值是赋予变量(包含该值的对象)的某种意义

例如 type=boolean;名称=帮助;变量=存储位置; value=存储在该位置的内容;

进一步细分:

X = 2;其中 X 是一个变量,而 2 是存储在 X 中的值。

【讨论】:

  • 这是否意味着name的值为help?
猜你喜欢
  • 2018-10-30
  • 2013-04-07
  • 2011-04-27
  • 1970-01-01
  • 2022-01-08
  • 2011-09-29
  • 1970-01-01
  • 2021-10-11
  • 2020-08-26
相关资源
最近更新 更多