gpt4 book ai didi

programming-languages - 最动态的动态编程语言

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

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




9年前关闭。




看来我必须同意这个 post当它指出

[...] code in dynamically typed languages follows static-typing conventions



我遇到的许多动态语言代码确实看起来非常静态(考虑 PHP),而动态方法看起来有些笨拙或不必要。

大多数时候,它只是省略类型签名,在类型推断/结构类型的上下文中,它甚至根本不需要暗示动态类型。

所以我的问题(并不是太主观)是,在哪些动态语言或应用领域中,所有这些更高级的动态语言功能(不能轻易地在静态/编译语言中复制)实际和惯用地使用.

例子:
  • 反射(reflection)
  • 一流延续
  • 运行时对象更改/生成
  • 元编程
  • 运行时代码评估
  • 不存在的成员(member)行为

  • 这些技术有哪些有用的应用?

    最佳答案

    上述技术广泛应用的一些例子是:

  • 延续出现在像 Rails 或 Seaside 这样的 Web 框架中。它们可用于允许 API 伪造本地上下文。在 Seaside 或 Rails 中,这使得 API 的行为更像是本地 GUI 表单处理程序,而不是 HTTP 请求处理程序,这有助于简化对应用程序用户界面元素进行编码的任务。然而,尽管许多动态语言对延续有很强的支持,但它们肯定不是这种类型的语言所独有的。
  • 反射广泛用于 O/R 映射器和序列化,但许多静态类型语言也支持反射。在鸭子类型的语言中,它可用于在运行时通过查看对象的元数据来确定是否实现了设施。一些 O/R 映射器(和类似工具)通过实现对实例变量的访问并将更新重定向到数据访问层中的缓存记录来工作。这有助于使持久性对开发人员相对透明,因为字段访问看起来很像局部变量。
  • 运行时对象更改稍微有用(想想猴子补丁),但主要是一个噱头。立即想到它的真正杀手级用途并不多,但人们肯定会使用它。当由于某种原因无法选择子类时,它的一种可能用途是修复稍微损坏的行为。
  • 元编程对于一个术语来说是一个相当模糊的定义,但可以说泛型和 C++ 模板是元编程的一个例子——发生在静态类型语言上。在支持元类的语言上,自定义元类可用于实现特定行为,例如单例或对象注册表。另一个元编程示例是 Smalltalk 的 #notImplemented:尝试调用不存在的方法时调用的方法。方法名称和参数提供给 #notImplemented: 的实现者, 随后可用于反射性地构造方法调用。捕获它可以用于(例如)实现通用代理机制。

  • LISP 程序员会争辩说,LISP 是最动态的语言,因为它对直接使用代码的解析树(称为“宏”)提供一流的支持。这个工具使得在 LISP 中实现 DSL 变得微不足道 - 并将它们透明地集成到您的代码库中。

    关于programming-languages - 最动态的动态编程语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2147662/

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