为什么大多数脚本语言都是松散类型的?

2023-12-20

为什么大多数脚本语言都是松散类型的?例如

javascript、python 等?


首先,您的术语存在一些问题。不存在这样的事情松散类型语言和术语脚本语言也很模糊,最常见的是所谓的动态编程语言.

弱类型 vs. 强类型关于如何严格区分不同类型(即,如果1 + "2" yields 3或错误)。

并且有dynamic vs. 静态类型,这大约是when类型信息在运行时或运行前确定。

那么现在,什么是动态语言?一种解释而不是编译的语言?当然不是,因为语言的运行方式从来不是语言的某些固有特征,而是纯粹的实现细节。事实上,同一种语言可以有解释器和编译器。 Haskell 有 GHC 和 GHCi,甚至 C 也有 Ch 解释器。

那么,什么是动态语言呢?我想通过人们如何使用它们来定义它们。

在动态语言中,您喜欢快速构建程序原型并使其以某种方式运行。你不想做的是正式指定你的程序的行为,你只是希望它按照预期的方式运行。

因此,如果你写

foo = greatFunction(42)
foo.run()

in a 脚本语言,你会简单地假设有一些greatFunction获取一个将返回某个对象的数字,您可以run。您不以任何方式向编译器证明这一点 - 没有预先确定的类型,没有IRunnable....这会自动让您进入以下域动态类型.

但是还有类型推断也。类型推断意味着在静态类型语言,编译器会自动为您找出类型。生成的代码可以非常简洁,但仍然是静态类型的。举个例子

square list = map (\x -> x * x) list

在哈斯克尔。 Haskell 提前计算出这里涉及的所有类型。我们有list是一个数字列表,map某个函数将其他函数应用于列表的任何元素,并且square从另一个数字列表生成一个数字列表。

尽管如此,编译器可以提前证明一切正常 - 任何支持的操作are正式指定。因此,我永远不会称 Haskell 为脚本语言,尽管它可以达到类似的表达水平(如果不是更高!)。


所以总而言之,脚本语言 are 动态类型因为这允许您在不指定的情况下对正在运行的系统进行原型设计,但是assuming所涉及的每个操作都存在,这就是脚本语言的用途。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么大多数脚本语言都是松散类型的? 的相关文章

  • 除了 Haxe 之外,还有其他针对 PHP 的编程语言吗?

    PHP 并没有得到太多的喜爱 但在易于部署 对于廉价托管 方面仍然是赢家 有没有任何编程语言 除了Haxe http haxe org 那个目标 PHP 用这种语言编写应用程序 然后将其翻译成 PHP 就像某些语言以 C 作为中间语言一样
  • “闭包”和“块”到底有什么区别?

    我发现很多人都用这个词closure and block可以互换 这些人中的大多数无法解释他们在说什么 一些 Java 程序员 甚至是来自非常昂贵的咨询公司的程序员 将匿名内部类称为 块 和 闭包 但我知道这不是真的 您不能从定义可变变量的
  • 什么是“表达问题”?

    我对这是什么有一个粗略的想法 但如果有人对 表达问题 有他们认为简洁直观的解释 我很想听听 Watch 这个想法是 您的程序是数据类型和对其进行操作的组合 该问题要求一种实现 允许添加类型的新情况和新操作 而不需要重新编译旧模块并保持静态类
  • 我想知道 &a 到底返回什么?

    Suppose 第一个案例 int a int p a it works no error 第二种情况 long int a long int b b a it wont work 我们大多数人都说 b 是变量而不是指针 但请看下面的内容
  • 常量的好处

    我知道关于常量的一大问题是 您不必遍历和更新到处使用该常量的代码 这很好 但假设您没有明确将其声明为常量 采用实际上不会更改的变量并将其设为常量有什么好处 这会节省处理和 或代码大小 等吗 基本上我有一个程序 编译器说某个特定变量没有更改
  • 复制文件列表 (txt)

    我见过一些脚本示例 但似乎没有一个提供如何从 t xt 列表中读取文件名的示例 这个例子不错 这样就可以将A文件夹中的所有文件复制到B文件夹中 xcopy c olddir java c newdir D E Q Y 但我需要类似下一个的东
  • 为什么是函数式语言? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我在这里看到很多关于函数式语言之类的讨论 为什么要使用一种语言而不是 传统 语言 他们在哪些方面做得更好 他们最差的是什么 理想的函数
  • 如何在 NSIS 中使用 try catch

    您好 我在安装时在 nsis 安装程序中的几台机器上遇到了奇怪的错误 使用 fontreg nsh 安装字体时给出 无效的 win32 文件句柄 我试过谷歌但没有得到这个问题的答案 现在我正在考虑抑制此消息 那么有什么方法可以抑制此消息 或
  • 学习游戏开发,有什么书推荐吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • F# 中的非类型化/类型化代码引用与宏卫生之间是否存在关系?

    我想知道 F 中的非类型 类型代码引用与宏系统的卫生之间是否存在关系 他们是否用各自的语言解决相同的问题 或者它们是不同的关注点 元编程方面是唯一的相似之处 即使在这方面 也存在很大的差异 您可以将宏的转换器视为从语法到语法的函数 就像您可
  • 基于原型的 OO 与基于类的 OO 相比有哪些优点?

    为什么基于类的 OO 如此受欢迎 而不是基于原型的 OO 他们在学校教授后者吗 尽管 Javascript 是基于原型的 但大多数人主要是在功能上使用它 或者通过尝试模拟基于类的系统的框架 我知道Sun已经做了一些研究Self http r
  • “入队”和“出队”之间的区别

    有人可以解释一下主要区别吗 我对任何语言编程中的这些函数都没有明确的了解 C 和 C 等编程语言中的一些基本数据结构是堆栈和队列 堆栈数据结构遵循 先进后出 策略 FILO 其中插入或 推入 堆栈的第一个元素是最后一个从堆栈中删除或 弹出
  • 我用带有垃圾收集器的语言构建了一个解释器。我需要一个用于解释器的垃圾收集器吗?

    这是一个幼稚的问题 但在我迄今为止看到的教程中并没有拼写清楚 如果我在一种高级语言 不是 C C 等 之上构建一个解释器 并且它有一个垃圾收集器 是否有必要为解释器本身制作一个 如果答案是肯定的 那一定是同一类宿主吧 即 如果主机是标记 清
  • GoogleTalk 应用程序是用什么编程语言开发的?

    有谁知道 Google Talk 应用程序是用哪种编程语言开发的 是的 我询问的是 Windows 客户端应用程序 http www google ro talk http www google ro talk googletalk exe
  • Windows 开箱即用支持的语言

    我被要求为一组 Windows 机器 我认为是 XP 编写一个 非常 简单的程序 如此简单以至于语言的选择并不是真正的问题 但是 我希望能够分发直接在 Windows 计算机上运行的二进制文件 脚本 而不需要预先安装任何解释器或虚拟机 我正
  • 哪种函数式编程语言在 Eclipse 中提供最好的支持?

    作为一项练习 我的团队正在考虑学习函数式编程 选择一种语言的因素之一是它在 Eclipse 中的支持 任何带有 Eclipse 插件的语言都可以 但是哪种语言提供最好的免费插件呢 额外问题 该语言的最佳在线 书籍教程 我不知道它是否是最好的
  • 特定领域语言与函数库

    这可能是主观的 我不知道 我有这个问题 我有点等同于 这个项目用什么语言 问题 因为我似乎无法解决它 我受委托为一个非常精通技术的社区 但不是程序员 写一本关于某个领域 比如说物理学的一个非常具体的分支 的书 这是一本关于他们日复一日使用的
  • 你为什么决定“反对”使用 Erlang?

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 你是否真的 尝试过 意味着在其中编程 而不仅仅是阅读有关它的文章 Erlang并决定在项目中不
  • 编译成 C/C++ 源代码的编程语言? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么随机不那么随机?

    有人可以解释一下现代编程语言 java c python javascript 如何应对随机性的限制以及这些限制 例如基于时间的种子 的起源 即 如果它们是由底层操作系统和基于英特尔的硬件强加的 基本上我想了解为什么没有适当的硬件就没有真正

随机推荐