Programming languages 正在寻找一种既支持解释编译模式又支持本机编译模式的新语言 我目前在Perl、Python、C、C、C++、java和其他几种语言中编程,我正在寻找一种新的语言,当做个人项目时,它是一个主语言。

Programming languages 正在寻找一种既支持解释编译模式又支持本机编译模式的新语言 我目前在Perl、Python、C、C、C++、java和其他几种语言中编程,我正在寻找一种新的语言,当做个人项目时,它是一个主语言。,programming-languages,scripting-language,interpreted-language,compiled-language,Programming Languages,Scripting Language,Interpreted Language,Compiled Language,我现时的准则是: 可以作为解释语言运行(即,无需等待编译即可运行) 可以编译为本机代码 是强类型的(即使是可选的) 支持宏/模板化/代码变形/wtf您想调用它 拥有相当数量的图书馆,或易于访问 想法?建议?Scala?它确实运行脚本,尽管它们首先被编译(透明地)。我不确定你所说的代码变形等是什么意思,但它对DSL来说非常好。它可以满足您的所有其他需求—与Java一样编译、强类型,并且拥有合理数量的自己的库以及所有Java库。我还是一个初学者,但到目前为止我还是很喜欢它。通用Lisp适合:有一

我现时的准则是:

  • 可以作为解释语言运行(即,无需等待编译即可运行)
  • 可以编译为本机代码
  • 是强类型的(即使是可选的)
  • 支持宏/模板化/代码变形/wtf您想调用它
  • 拥有相当数量的图书馆,或易于访问

想法?建议?

Scala?它确实运行脚本,尽管它们首先被编译(透明地)。我不确定你所说的代码变形等是什么意思,但它对DSL来说非常好。它可以满足您的所有其他需求—与Java一样编译、强类型,并且拥有合理数量的自己的库以及所有Java库。我还是一个初学者,但到目前为止我还是很喜欢它。

通用Lisp适合:有一个可选的类型,有效的本机编译可用,强大的REPL使它成为脚本编写的完美选择,还有一个强大的宏元编程


OCaml也很适合,使用CamlP4进行元编程。

我建议Haskell符合您的标准

  • 可以作为解释语言运行吗?是的,通过GHCI
  • 可以编译为本机代码吗?对
  • 是强类型的吗?非常感谢。甚至可能是当今最强类型的语言,除了一些定理证明者,如Agda
  • 是否支持宏/模板/变形?如果使用模板haskell。但是,这是该语言的可选扩展,因此大多数库不使用宏。我自己也没有使用过模板haskell,所以我不能评论它是否有用
  • 有像样的图书馆支持吗?标准库还不错。还有Hackage,一个Haskell库的开放存储库,有点像CPAN

此外,听起来您已经知道很多命令式/面向对象语言。我想如果你再学一门语言的话。这可能是你在其他地方已经看到的功能的一个稍微不同的排列。向工具箱中添加另一种编程范例(如函数式编程)可能是一种更好的学习体验。虽然我想这是否是一种优势取决于你是想学习新东西还是想快速提高工作效率。

这个列表很难让你满意。除了两种或三种语言之外,你必须改变规则:Python是强类型的(也许你是指静态的?),如果你愿意使用Cython等,可以(但不应该只是为了好玩)进行本机编译。真正强大的宏系统排除了除Lisp以外的一切,一些其他语言的奇怪扩展,也许还有一些其他的,非常鲜为人知的语言。甚至C也有强大的宏支持…C有可笑的宏(如果你能称它们为宏的话),相比之下。。。嗯,其他的一切;因为Lisp拥有最强大的宏,其他一切都受到Lisp的启发。C预处理器宏可能随时都会派上用场,但它们是一个巨大的不卫生的烂摊子,太有限了。此外,遗憾的是,C语言和与之向后兼容的语言几乎是唯一使用文本替换作为预处理器的语言。+1用于CL。宏(和CLOS MOP)可能会产生一些令人费解的可能性。这是一个很好的建议,尽管每次我想起语法时我都会吓得发抖。但你是对的,它确实符合我的大部分要求。Lisp的另一个主要问题是,尽管它有很多可用的库,但它们很难找到,并且没有真正的中心索引(尽管cliki还不错)。我忘了提到Scheme——它可能比CL的库要好一点。实际上,我经常使用Bigloo来完成我的小脚本任务。Java被编译成字节码,而不是本机代码。据我所知,scala也是这样。这和解释Lisp的想法一样陈旧。现代JVM进行JIT编译。JIT仍然与预编译为本机代码不同。然后运行AOT编译器。你想从本机代码编译中得到什么?我想提出这个建议+1,特别是因为最后一段很重要。当你学习Haskell(不管你是否懂十几种命令式语言)时,你不会在几周后编写真实世界的应用程序。