状态与无状态属性和优点是什么? [重复]

问题描述 投票:5回答:1

我从各种来源中读到,以状态的定义类似于:]]

  • “程序关于存储输入的条件”;
  • '程序的任何给定时间的内存位置的内容执行'
  • 但是然后我查找成为stateless

的特征(例如,“ Haskell是无状态的”):
  • ''当应用程序不依赖其状态时;
  • '物理状态无法更改'
  • '相同输入的相同输出-内存中的地址始终保持不变'
  • '方法不依赖于一个实例及其对应的实例变量'
  • 现在,我必须误解了(模糊的?)以前的定义,因为与“无状态”模型紧密结合的FP语言当然也可以存储输入吗?还是关于函数的某些事情只是在评估而不是变异数据?


好吧,我某种

在了解了其在程序验证,调试和并发中的用法后,有时这种模型有时功能强大。

但是当我继续阅读有关方法时,它确实变得相当复杂:

  • “消除了与race条件“
  • 更多expressive
  • 代码(无论是什么?)
  • 静态评估
  • ...可用于很好地指导计算机的位置[在井字游戏树中]“ https://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf(或者静态键入是否完全是另一个问题?)

    所以,我也想知道在迭代编程语言中能够操纵状态的优势,许多论坛都提供了示例,例如如何通过调用add()改变一个人的“年龄”,从而使“年龄”变量超出其范围。

也许这是我缺乏OOP经验,但是在更广泛的应用程序中使用状态的确切优势是什么?

[如果可以提供任何示例代码,请您尝试使用Python / Haskell作为这些相反学科的对比代表吗?我在阅读其他语言方面的专长似乎确实妨碍了我对其他帖子的解释的理解。

我从各种来源中获悉,一种状态被定义为:“程序关于存储输入的条件”; '...

python oop haskell functional-programming state
1个回答
1
投票

[如果您考虑的程序中没有任何状态,并且该程序无法读取外部状态(例如,检查系统时间),那么除了将值作为参数传递之外,还需要任何函数,将无法区分任何不同的情况,因为不可能存在不同的情况。

© www.soinside.com 2019 - 2024. All rights reserved.