当前位置: 首页 > 知识库问答 >
问题:

命令式编程语言和函数式编程语言之间有什么区别?

白腾
2023-03-14

关于命令式语言和函数式(声明式语言的一个子集)编程语言之间的差异,有什么明确的答案,可以用实际例子来解释吗?有哪些主要的或最重要的命令式语言?函数语言呢?

我确实在这里读到了这个答案,但它实际上让我更加困惑-(函数式编程语言和命令式编程语言之间有什么区别?

共有2个答案

傅玮
2023-03-14

没有什么大的区别。

我的意思是,现在计算机是你的奴隶(而你是一个非常不幸的国王)。要么是非常愚蠢的,你自己给他下达关于每一分钟细节的命令。比如“洗我马厩里的第一匹马”。(甚至“把一桶水带到马厩的第一个马厩。在那里洗马。清理马厩的第一个马厩”。)然后,“洗我的第二匹马”。(甚至是“桶……第二个失速……等等”)。等

或者是一个稍有见识的奴隶,你给他一个稍有常识的命令,比如“把我马厩里的马都洗干净”。但实际上,你可以对你最初愚蠢的奴隶说这句话,他多年来变得更聪明了,因为他写下了他需要执行的每个动作的食谱,所以更一般的食谱可以指更简单的食谱,而不是重新描述每一步。

所以现在真的没有区别了。假设你在与第二个奴隶交谈时遵守了某些限制,这使你更容易向他描述你的下一个请求。你还在做所有的描述。

这两种人都不像总经理,你可以向他们解释你对如何代表你完成工作的总体感受,他们自己也能解决细节问题。

当然,一个总经理需要许多助手,他们可能会利用许多愚蠢的奴隶。而且更笨。

聪明的总经理可能比你自己更了解如何管理你的帝国。他们甚至可能完全取代你掌舵。

上述观点认为,functional不是声明式的子集。

编辑:第二个奴隶拒绝从你那里理解某些事情。你可以告诉第一个,例如:“n是1。把一桶水带到第n个摊位。n现在是2。在第n个摊位洗马。n现在是3。清理第n个摊位”。这将导致运行时错误。

更聪明的奴隶不会理解你的意思。他知道第一个马厩不会突然变成第二个;它是第一个,一直都是。这有助于你不下达愚蠢的命令。这是功能性的——知道有些事情没有完成,拒绝服从愚蠢的命令。势在必行,这样做一点问题都没有。所以在命令式编程中,责任在你身上,只有你自己;函数范式强加给你的纪律减轻了你的负担。

(*)很抱歉从人类黑暗的历史中唤起这种令人厌恶的范式;即使在今天,在世界上的某些地方也不是那么遥远。

蒋俊人
2023-03-14

让我们使用这个简单的代码:a=b c来检查差异。

当我们用命令式语言(如c)编写a=bc时,我们只是将bc的当前值赋给变量a,仅此而已。我们没有对a是什么做任何基本的陈述。相反,我们只是在执行流程中的一个步骤。

当我们用声明性语言(如Microsoft Excel)编写a=bc时,我们在断言abc之间的关系,因此a总是其他两种语言的总和。这不是一个过程中的一个步骤,它是一个不变量,一个保证,一个真理的宣言。

函数式语言也是声明式的,但几乎是偶然的。例如,在哈斯克尔中,a=b c也断言不变关系,但这只是因为b和c是不可变的。

 类似资料:
  • 问题内容: 在阅读了有关该主题的一些资料之后,我仍然不确定编译语言和解释语言之间的区别。有人告诉我这是Java和JavaScript之间的区别之一。有人能帮我理解吗? 问题答案: 编译语言和解释语言之间有什么区别? 区别 不 在于语言。它在 执行中 。 从我的系统中得到了答案,这是一个答案: 在编译的实现中,原始程序被转换为本地机器指令,这些指令直接由硬件执行。 在解释的实现中,原始程序被翻译成其

  • 本文向大家介绍Go和Python编程语言之间的区别,包括了Go和Python编程语言之间的区别的使用技巧和注意事项,需要的朋友参考一下 走 Go是一种程序语言,由Robert Griesemer,Rob Pike和Ken Thompson于2007年在Google开发,并于2009年开源。Go的开发旨在简化并发编程和环境采用。 Python Python是Guido van Rossum在1991

  • 正式学习 Python 之前,我们有必要先搞清楚【 编程语言】这个概念。 在我们很小的时候,父母就教我们开口说话,也教我们如何理解别人讲话的意思。经过长时间的熏陶和自我学习,我们在不知不觉中学会了说话,也能听懂其他小朋友说话的意思,于是我们开始用语言与他人交流。 世界上存在许多种语言,包括汉语、英语、日语、俄语等等,每种语言都有固定的格式,比如汉语(中国话),每个汉字代表着不同的意思,我们必须正确

  • 本文向大家介绍什么是Perl编程语言?,包括了什么是Perl编程语言?的使用技巧和注意事项,需要的朋友参考一下 Perl是一种通用编程语言,最初是为文本处理而开发的,现在用于各种任务,包括系统管理,Web开发,网络编程,GUI开发等。 Perl是一种稳定的跨平台编程语言。 尽管Perl并不是正式的缩写,但很少有人将其用作实用提取和报告语言。 它用于公共和私营部门的关键任务项目。 Perl是一种开放

  • 我们要学习的编程语言是C++,因为自1998年起大学先修课程考试就基于C++语言了。之前的考试用的是Pascal语言。C++和Pascal都是高级语言,你或许也听说过Java、C和FORTRAN等其他高级语言吧。 从“高级语言”这个名字可以推断,应该同样存在低级语言,低级语言一般也称为机器语言或汇编语言。不严格地讲,计算机只能执行低级语言编写的程序。正因如此,高级语言编写的程序需要经过翻译才能运行

  • 易语言破解 1、借助E-Code Explorer查找按钮事件 2、下消息断点,查看堆栈再返回 3、eCode法–断按钮事件 4、字符串法—插件/搜索所有参考文本 按钮事件固定模式: 0040EC78 837D F4 00 cmp dword ptr ss:[ebp-C],0 ;关键判断 0040EC7C 0F84 3B000000 je dcse.0040ECBD ;关键跳 0040EC82 6