更高级的脚本语言是否使用 shell 脚本来工作?

更高级的脚本语言是否使用 shell 脚本来工作?

我刚刚学习 bash,当我看到 bash 使用“echo”时,我尝试搜索 PHP 和 bash 之间的关系,似乎人们正在构建将 bash 脚本和 PHP 脚本混合在一起的程序。

Javascript 和 PHP 等脚本语言是否使用 shell 脚本来工作?PHP 和 Javascript 解释器是否以某种方式依赖于 shell 脚本?

当涉及到编译代码时,这有什么不同吗?(我知道脚本语言和编译语言之间的区分并不那么明确,因为你可以编译 Javascript 并解释一些通常编译的语言。所以在这部分问题中,我想问的是,当涉及到编译代码时,无论语言如何,是否存在任何区别。)

答案1

bash 中的“echo”和 PHP 中的“echo”之间没有任何关系。它们只是恰好共享用于相同操作的相同关键字,彼此之间不依赖。通常,某些语言的设计会影响其他语言,而那些设计新语言特性的人通常会受到现有语言的影响。这就是为什么许多语言使用 $prefix 作为变量,为什么某些关键字在各种语言中都很常见,以及为什么许多语言使用花括号来分隔块。虽然它们可能复制了该特性的语法或总体设计,但它们通常是独立实现的。

Javascript 和 PHP 等脚本语言是否使用 shell 脚本来工作?PHP 和 Javascript 解释器是否以某种方式依赖于 shell 脚本?

不,它们不使用 shell 脚本来工作。shell 和这些语言都依赖于操作系统的流写入接口。假设在 Linux 中,如果要打印到 stdout,则需要通过使用 write() 系统调用的系统调用 ID、指向要写入的数据的指针和 stdout 的文件编号(即 1)来引发软件中断,从而对内核执行 write() 系统调用。无论您使用 shell、解释型语言还是编译型语言,它们都必须调用 write() 系统调用来写入 stdout。有些语言可能只允许您编写常规字符串,其他语言可能提供基本的格式化功能,但所有这些语言最终都会使用 write() 系统调用。

答案2

事实并非如此。运行时环境和库背后的代码库可能使用 shell 脚本作为粘合剂,但 JavaScript 和 PHP 等语言的运行时并不依赖它们。使用echo和等命令printf表明创建者受到了 C 和 shell 等语言的影响。这也适用于编译语言。

退一步想一想,像if和这样的结构的存在for是否while意味着 shell 脚本的执行依赖于 C 或反之亦然。

相关内容