我即将为一个业余爱好项目启动一个基于LFS的Linux发行版.我计划做一些非标准的任务,其中大部分都涉及更改发行版中的几乎所有脚本.(主要是init脚本,但我也会编写一套简单的包管理器脚本.)因为我要远离常规,因为我从未成为动态类型语言的粉丝(perl, python,bash和其他都很好,但不是我的强项),我想知道是否有人知道实际上已声明变量的解释语言.
通常,静态类型语言是编译语言.我想原因是,对类型的静态分析相当昂贵,你必须深入了解你正在处理的所有代码.完成后,将所有信息写入文件会感觉很浪费,这样您下次就不必再这样做了.所以你很快就会得到一个编译语言.
另一方面,将编译语言转换为"未编译"的语言相当容易.您只是不将编译结果存储在任何位置,而是直接执行它们.我知道提供这样一个包装器的一个编译器是GHC,标准的Haskell编译器.您可以添加#!/usr/bin/runhaskell
到源文件,然后直接执行它们.由于你计划远离常态,Haskell看起来非常合适;).但是期望脚本的启动时间相当长,因为所有"编译时"分析和优化都不是免费的.
Haskell不是用于shell脚本的,它是一种函数式语言,所以如果你以前从未见过它,可能需要一些时间来习惯.但它的语法开销很小,函数式语言的强度也是抽象的,所以我不明白为什么你不能创建一个让shell脚本变得有趣的库.甚至还有一些实验性的Haskell shell,但它似乎更像是一个概念验证,而不是一个真正的解决方案.
一般来说,我会说所有类型分析的开销很大,但我建议你选择你最喜欢的静态类型编译语言,并寻找一个类似于runhaskell
执行其中编写的脚本的包装器.