首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编程是模拟现实世界吗?

编程是模拟现实世界吗?
EN

Software Engineering用户
提问于 2020-10-19 14:25:50
回答 6查看 1.6K关注 0票数 7

假设我们在现实世界中有一辆汽车,这辆车将由原子组成,我们可以对这辆车进行操作(例如:我们可以移动汽车或改变它的颜色等等)。

假设我们在计算机世界中有一个汽车对象(在RAM中),这个汽车对象显然不是一个真实的汽车,而是一个真实汽车的代表,但是我们可以想象这个汽车对象是一个真实的汽车,我们也可以对这个汽车对象进行操作(例如:我们可以移动汽车对象或者改变它的颜色等等)。

现在,如果我们想要改变汽车的颜色,在现实世界中,我们必须操纵一些原子组成汽车,以实现这一点。为了改变计算机世界中汽车物体的颜色(在RAM中),我们必须操纵一些组成汽车物体的比特来实现这一点。

然而,我认为现实世界和计算机世界之间的一个不同之处是,在现实世界中,人们可以看到汽车,而在计算机世界中,人们看不到汽车物体(你必须在屏幕上涂上汽车物体,让人们看到它)。

那么,我们能把编程看作是对现实世界的模仿吗?更具体地说,我们能把现实世界想象成“真实世界的RAM”,它可以包含任何对象(这些对象将由原子组成),就像RAM可以包含任何对象一样(这些对象将由位组成)吗?

EN

回答 6

Software Engineering用户

发布于 2020-10-19 14:55:02

不是的。

面向对象的编程有时会对现实世界建模,但正如俗话说的“所有模型都是错误的,但有些是有用的”。即使在现实世界中,改变汽车的颜色并不意味着改变汽车中原子的状态,而是增加新的颜色。现实世界并不像计算机那样轻易地改变它的状态,当我们更多地了解我们的物理世界时,我们正在了解它是多么的不确定。

不幸的是,许多学校通过“汽车”编程模式教授OOP,这是很可怕的。对现实世界进行一对一的建模往往是解决手头问题的一种糟糕的方法。我建议为编程开发一个更好的心智模型,一个更多基于耦合和改变原因的模型。

票数 20
EN

Software Engineering用户

发布于 2020-10-19 15:52:25

我倾向于认为编程不是为了模拟现实世界,而是作为一种可执行的数学建模形式。你可以为任何事物建立数学模型,即使是没有现实世界中的等价物的东西(这有时会被超越;非欧几里得几何学的想法是一种智力推测,直到爱因斯坦革命和布尔代数在有人拥有制造数字计算机的基础技术之前似乎是一种奇怪的好奇心)。

数学要求严谨,而不是有用;编程是一样的。我当然可以写一些与真实世界非常接近的模拟,但是没有什么能迫使这种情况发生。就像你可以对自然界中不存在的系统建模一样,你也可以编写程序来计算没有模拟的东西。

票数 3
EN

Software Engineering用户

发布于 2020-10-19 15:10:11

把汽车看作原子的集合并不特别有用,除非你在研究汽车上的量子效应,这是不太可能的。当一个机械师在发动机螺栓上转动扳手时,他并不关心原子。他可能关心引擎的温度,但这可以通过一个简单的测量来建模;您不需要LHC来计算出来。

所以你剩下的是日常属性,比如螺栓的螺距,适合它的扳手的大小,以及紧固时必须用到的扭矩标准。这些东西可以在计算机内部建模,计算机可以根据这些属性预测当你转动扳手时可能会发生的事情。

请注意,我没有说任何关于冶金,化学(生锈螺栓),或身体健康的人转动螺栓。无论是你还是计算机,都不需要无所不知,才能从计算机中传递有用的信息。相反,事实上,当我们对任何事物建模时,尤其是在计算机中,我们总是依赖部分信息。

计算机总是模拟现实世界的行为或后果吗?不,当然没有。计算机中的许多抽象是为了计算机本身而存在的。其中许多抽象都是抽象的。我们有集合,因为很多东西都可以建模为实体的集合(“实体”本质上是“名词”),包括用户界面上的控件。这些实体可以是任何东西,包括汽车,但它们也可以是一个神经网络中的数字集合,在这个网络中,你实际上是在把现实世界中的一些关系分解成一些片段,并建立输入和输出之间的连续关系的模型。很远的地方,比如说,你手里拿着的棒球。

记住,所有的电脑都知道你要用的油漆颜色是用来混合产生这种颜色的颜料的公式。除非你告诉它,否则它不会知道更多关于油漆的事情。

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

https://softwareengineering.stackexchange.com/questions/418109

复制
相关文章

相似问题

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