【发布时间】:2010-10-07 19:31:59
【问题描述】:
我即将开始一个基于 LFS 的 Linux 发行版,只是为了一个爱好项目。我计划做一些非常非标准的任务,其中大部分将涉及更改发行版中的几乎所有脚本。 (主要是 init 脚本,但我也会编写一组简单的包管理器脚本。)因为我要远离规范,而且我从来都不是动态类型语言的粉丝(perl, python、bash 和其他都很好,但不是我的强项),我想知道是否有人知道实际上已经声明变量的解释语言。
【问题讨论】:
-
Python 是强类型的。不是动态的。如果没有显式转换,您无法静默添加数字和字符串。
-
@gdivos:Python 既是强类型的 又是 动态的。它是动态的,因为您可以尝试使用任何类型的参数调用任何函数,并且直到运行时才会检测到不匹配的参数类型。静态语言会在编译时(或至少在运行时之前)检测到该问题。
-
不存在解释语言。每种语言都可以由编译器或解释器实现。而且,事实上,绝大多数编程语言至少有一个实现。此外,大多数现代语言实现实际上都有编译器和解释器。既然你提到了 Haskell:Hugs 就是一个 Haskell 解释器。 V8 是一个 JavaScript 编译器。微软的 PowerShell 是一个编译器。几年前,Bash 开发人员正在考虑切换到编译实现。 HotSpot JVM 既是解释器也是编译器。
-
此外,是否需要声明变量与语言是否为静态类型以及实现是否使用编译器、解释器或两者都完全正交。例如,未来版本的 ECMAScript 将要求声明变量,但 ECMAScript 是动态类型的。
-
您可能不再创建那个 Linux 发行版,但请尝试 Ammonite。它是作为脚本语言的 Scala。
标签: linux scripting package linux-from-scratch