【问题标题】:Why Scripting (Dynamic) Languages Don't Have Pointers? [closed]为什么脚本(动态)语言没有指针? [关闭]
【发布时间】:2014-06-30 12:25:51
【问题描述】:

我想知道为什么脚本语言(python、php、ruby、perl)没有 C/C++、Objective-C 等指针?

【问题讨论】:

  • 因为通常不需要使用指针来完成您在较低级别语言中可能需要它们完成的大部分任务。
  • 脚本语言有引用形式的“指针”。它们不像在 C 中那样恰好是裸内存地址,而是指特定的数据结构、值或对象。毕竟,这就是您希望在 C 中使用它们的目的,但在这种情况下无法防止使用无意义的地址。

标签: php python ruby perl pointers


【解决方案1】:

因为指针虽然用途广泛,但却是令人头疼的错误来源。高阶语言的全部意义在于将危险或冗长的结构抽象为更安全、更短的结构:你用权力换取开发的便利。因此,例如,动态语言中的数组都知道如何分配自己,释放自己,甚至调整自己的大小,因此程序员无需担心(也不会搞砸)。除非我们真的想控制处理器的每个周期,否则我们通常不会用汇编编程,这也是同样的原因:太冗长,太容易出错(这就是为什么 C/C++、Objective-C 等等首先存在)。动态语言在同一方向上更进一步。

【讨论】:

    【解决方案2】:

    问题太笼统,也无法在 Stackoverflow 上回答。 但答案是——脚本语言尽可能地独立于硬件。这包括不了解 RAM 结构和内容。

    【讨论】:

      【解决方案3】:

      这两个类别之间的主要区别在于脚本语言不一定以直接方式处理诸如内存之类的事情。在您的 C 语言中,您有内存并且必须分配和管理它。然而,在 PHP 中,您通常不会直接管理内存(在大多数情况下,内存使用对程序员来说是透明的)。底层软件为您执行此操作。所以完全有可能在不了解机器级代码、malloc 等知识的情况下编写软件。

      【讨论】:

        猜你喜欢
        • 2012-10-25
        • 1970-01-01
        • 2017-07-31
        • 2012-11-01
        • 2014-03-19
        • 1970-01-01
        • 2011-03-12
        • 1970-01-01
        • 2011-04-07
        相关资源
        最近更新 更多