gpt4 book ai didi

terminology - “Data is just dumb code, and code is just smart data”是什么意思?

转载 作者:行者123 更新时间:2023-12-03 01:16:17 25 4
gpt4 key购买 nike

我刚刚在 The Structure And Interpretation of Computer Programs 中发现了一个想法:

Data is just dumb code, and code is just smart data

我不明白这是什么意思。有人可以帮助我更好地理解它吗?

最佳答案

这是 SICP 的基本类(class)之一,也是计算机科学最强大的思想之一。它的工作原理如下:

我们所认为的“代码”实际上本身并没有能力做任何事情。代码仅在解释上下文中定义程序——在该上下文之外,它只是一个字符流。 (实际上是一个位流,实际上是一个电脉冲流。但让我们保持简单。)代码的含义是由运行它的系统定义的 - 而这个系统只是将您的代码视为告诉它您想要做什么的数据。 C 源代码由 C 编译器解释为描述您希望其创建的目标文件的数据。加载程序将目标文件视为描述要排队执行的某些机器指令的数据。机器指令被 CPU 解释为定义其应经历的状态转换序列的数据。

解释型语言通常包含将数据视为代码的机制,这意味着您可以将代码以某种形式传递给函数,然后执行它 - 甚至在运行时生成代码:

#!/usr/bin/perl
# Note that the above line explicitly defines the interpretive context for the
# rest of this file. Without the context of a Perl interpreter, this script
# doesn't do anything.
sub foo {
my ($expression) = @_;
# $expression is just a string that happens to be valid Perl

print "$expression = " . eval("$expression") . "\n";
}

foo("1 + 1 + 2 + 3 + 5 + 8"); # sum of first six Fibonacci numbers
foo(join(' + ', map { $_ * $_ } (1..10))); # sum of first ten squares

像scheme这样的一些语言有“一等函数”的概念,这意味着你可以将函数视为数据并传递它而不需要评估它,直到你真正想要的为止。

结果是“代码”和“数据”之间的划分几乎是任意的,只是视角的函数。抽象级别越低,代码就必须越“智能”:它必须包含有关如何执行的更多信息。另一方面,解释器提供的信息越多,代码就越愚蠢,直到它开始看起来像完全没有智能的数据。

编写代码的最强大方法之一是对您需要的内容进行简单描述:数据将转换为代码,描述如何通过解释上下文获取您需要的内容。我们称之为"declarative programming" .

举一个具体的例子,考虑 HTML。 HTML 没有描述图灵完备的编程语言。它只是结构化数据。它的结构包含一些智能,可以让它控制其解释上下文的行为——但不是很多智能。另一方面,它比普通网页上出现的文本段落包含更多的智慧:这些都是非常愚蠢的数据。

关于terminology - “Data is just dumb code, and code is just smart data”是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/871833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com