Scala for LowLevel除了使用什么第二语言?

Pla*_*kül 15 programming-languages scala low-level

我对Scala非常满意,只是喜欢它:)

但有时我真的想要更低级别,没有JVM并使用"酷"CPU等功能,如SSE等.

那么除了Scala之外什么是第二语言呢?

它应该是:

  • 编译成机器代码
  • 易于使用C库
  • 可以编程非常接近硬件
  • 当我想要时,可以以非常高的方式编程

所以基本上我想要一个Scala,我可以在我想要的时候抛出内联汇编程序:)我认为,这样的语言不存在,但也许有一些接近.

那么什么是一个好的选择?C++?,D?,OCaml?

我用C++(15年前)编写了一些编程,而使用OCaml则编程很少.在这两种情况下,我只解决了一些问题,而且从来没有对语言本身进行过"深入".

dsi*_*cha 18

你几乎是在描述D.

  • 编译成机器代码:检查.有一个实验性的.NET VM实现,但所有三个主要实现(DMD,LDC,GDC)都直接编译为本机代码,并且该语言旨在使本机编译可行.

  • 易于使用C库:D 支持C ABI和所有C类型.几乎所有你要做的就是翻译C文件对象文件中的头文件和链接.这甚至可以部分自动化.

  • 可以非常靠近硬件编程:检查.D是我称之为C语言的惯用超集.它不支持每一段C语法,它的模块系统完全不同,静态数组是D2中的值类型等.但是,对于C语言中的任何构造都是正确的(即排除预处理器)在D或标准库中有一个等价的构造.对于任何C代码(不包括预处理程序滥用),有一个规范的D转换看起来大致相同,如果您使用相同的编译器后端,则应生成相同的汇编语言指令.换句话说,每个C语言(不包括预处理程序滥用)都可以直接的方式转换为D.

    D的参考实现也支持内联ASM,因此你可以搞乱SSE等.

  • 当我想要时,可以以非常高的方式编程:检查.D被设计为主要是垃圾收集语言(尽管如果你坚持并且小心不使用假设GC的库/运行时功能,你可以使用手动内存管理).除此之外,高级编程主要通过模板元编程实现. 在您逃跑之前,请理解与C++相比,D中的模板元编程有很大改进. 在D与C++中进行模板元编程就像在C++与C中进行面向对象编程一样.在D模板中,元编程被设计到语言中,而在C++中,只有足够的功能可以使用聪明的hackish来使其几乎无法工作.C++与C语言中的面向对象编程也是如此Phobos的std.algorithmstd.range模块是D的高级子集的很好的例子.

  • 真正的男人使用文本编辑器在C中编程;-) (2认同)

mis*_*tor 8

以下是一些满足您的问题中提到的标准:


Dea*_*ler 6

我也正在考虑这个问题,因为我现在正在做一个C项目并且感觉非常没有效果,也缺少Scala.(我在更新世也做了很多C++ ...)我可能会转而去.D看起来也很吸引人.

如果对问题有意义,另一种选择是使用C +脚本语言,如Lua或Ruby.这就是Unix + shell和emacs永远做的事情.当你需要它时,你会得到性能和低级别的比特,当更重要的时候,你可以获得生产力.


olu*_*ies 5

C++ 0X,Erlang,也许还有Haskell和Go.C++和Erlang具有强大的用户群,并且可以使用C++ 0x和Erlang进行许多工作.(我不确定C/C++互操作对Go有多好)

C++ 0X("cee plus plus oh ex")是个不错的选择.它有lamda功能和其他好东西.

Walk of C++ 0X TechDays 2010:使用C++进行现代编程0x

此外,C++ 0X具有良好的泛型支持,如类型类对象和隐含,Oliviera,Moors,Odersky,OOPSLA 2010中所述.请参见下面的图12:

图12从Type Classes作为Objects和Implicits