gpt4 book ai didi

oop - 为什么 Smalltalk 支持一流的功能,而不支持其他功能特性?

转载 作者:行者123 更新时间:2023-12-02 07:21:59 24 4
gpt4 key购买 nike

一个 answerIs Javascript a Functional Programming Language?说:

Functional programming means that the program is conceptualized as a evaluation of a function, rather than a control flow. The code is a description of functions, and has no inherent concept of a control flow.



我了解到,当一种语言支持一流的功能并且没有控制流时,从它的设计目标来看,它必须被定义为一种函数式语言。

那么为什么 Smalltalk 这种函数式语言不支持其他函数式特性,例如不变性、代数数据类型、模式匹配、偏应用?

最佳答案

Smalltalk 是在虚拟机提供的以下功能之上设计的

  • 对象分配: #basicNew#basicNew:原语
  • 自动解除分配: GC
  • 消息发送: send字节码系列
  • block : [:arg | ...]语法(见下文)
  • 非本地退货: [:arg | ... ^result]语法
  • 后期绑定(bind):方法查找机制
  • native 代码编译:口译员(见下文)

  • 添加了现代实现
  • 区 block 关闭:哪个替换了 block
  • 快速编译: JIT 编译器,它取代了解释器
  • 堆栈展开: #ensure:留言

  • 请注意,Smalltalk 编译器、调试器或异常机制等其他“功能”不在列表中,因为它们可以派生自其他功能(即,它们是在用户代码中实现的。)

    这些功能被确定为旨在在裸机上运行的通用面向对象环境的基本构建 block (即不支持操作系统。)

    设计者考虑的不是函数式编程。相反,他们认为每件事都是一个对象,每一个计算都是一个消息发送统一的隐喻。为此, block 和非本地返回也起到了将“函数”建模为对象的作用,以确保每个已知概念都包含在 OO 范式中。这并不意味着他们将函数式编程作为目标。它们不包括其他特性(功能性或非功能性),因为它们试图识别一组最小的原始元素,这些元素将支持一个没有障碍的通用系统。

    关于oop - 为什么 Smalltalk 支持一流的功能,而不支持其他功能特性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43157701/

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