首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SICP术语:计算对象

SICP术语:计算对象
EN

Stack Overflow用户
提问于 2014-08-19 11:30:05
回答 2查看 609关注 0票数 3

在SICP中,计算对象的精确定义是什么?这是一个价值吗?是一种表达吗?我不太清楚,你能告诉我哪个是正确的意思并解释原因吗?

你能在解释中举几个例子吗?

我试图通过绘制概念图(见下文)来理解SICP中使用的术语,但是我被计算对象的意义所困,因为我无法确定这个术语是指值还是表达式?

编辑:

阅读答案后更新概念图:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-19 12:58:25

我认为你在文本中强调的关键是:

编程语言的一个关键方面是它提供了使用名称引用计算对象的方法。我们说,名称标识了一个变量,其值是对象。

“计算对象”是可以作为变量值的任何东西。将它称为“计算对象”(与简单的“对象”相反)可能只是在这里增加了一些混乱,因为从上下文中可以清楚地看到,非计算对象(例如,一张纸)不能是程序中变量的值。不过,也有一些与程序相关的东西不是计算对象。

例如,在Scheme中,变量不是计算对象;您不能将变量存储在另一个变量中。在某些语言中,变量或指针至少是计算对象,可以是变量的值。

在文本中的定义中,我们看到了源代码(即表达式)。计算表达式产生的计算值可以存储在变量中。例如,可以计算表达式(+ 2 3)以生成整数2,该整数被打印为2。但是,值得注意的是,在Lisp语言(更广泛地说,是同音语言)中,源代码也可以表示为一个值。例如,计算表达式(list '+ 2 3)会产生一个名为"+"、整数值2和整数值3的符号列表。该列表以(+ 2 3)格式打印。

那么,我们已经知道了在哪里使用对象,但是实际上存在哪些对象呢?这取决于语言的定义。“计划”的定义指定了某些类型的对象:

  • 数字(有各种类型的数字)
  • 符号
  • 字符串
  • 反单元格(本质上是对,我们使用约定从它们构建列表和树)
  • 空列表
  • 布尔值真假
  • 程序(通常称为函数)
  • 矢量和阵列

其他语言将提供其他类型,并可能提供比我在这里列出的更多。问题是,对象的存在是由语言设计人员决定的,目的是提供足够的原始类型,以便程序员能够根据它们定义所需的任何东西。

票数 5
EN

Stack Overflow用户

发布于 2014-08-19 12:37:55

我认为“计算”一词只是为了区分这些物体和物理物体。在您的概念图中,它可能是“与值相同”。注意,几乎任何东西都可以是一个对象,并且可以在Scheme中进行操作,包括表达式(在宏/元编程中)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25382286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档