我对用于性能计算的类C语言感兴趣。您能推荐一些具有以下属性的替代编程语言:
我主要对鲜为人知的语言感兴趣。
答案 0 :(得分:12)
答案 1 :(得分:9)
如果您对此不了解并且只想扩大视野,请查看Forth。阅读Forth总是让我觉得C是高级的。
答案 2 :(得分:6)
你没有在你的问题中明确说明它不能是C,所以我会继续推荐C.它满足你的三个项目符号,你不必担心不同版本的语言(就像每种不同类型的汇编程序一样)。
答案 3 :(得分:6)
好吧,我一直更喜欢C和/或C ++,因为有多种口味(MSVC,glibc等),它可以在许多不同的平台上运行(例如移动设备,Windows,Linux)和设备,并且可以编写跨平台(不同的处理器架构),甚至是高端图形(例如DirectX)。
你获得对平台资源的“体面”访问(条件各不相同),它可以像你选择的那样快速磨练它,而且比ASM更容易(IMHO)编写。还有一系列相当不错的支持工具和代码分析工具,可以让事情变得更容易。
此外,C和C ++已经有很长一段时间了,所以它(即使是今天)也是一个优秀而热情的社区!
答案 4 :(得分:3)
第四!
在某些架构上,Forth可能比机器语言更快。编译后的代码非常密集,因此可以最佳地使用代码缓存。
答案 5 :(得分:2)
FORTRAN比C早,并且仍然是数值计算的主要参与者之一。直到1990年(当语言基本上现代化时),语言没有任何形式的指针(已检查或未检查)。这种缺乏意味着没有办法动态管理内存;它还使编译器的aliasing分析变得容易,这是使Fortran代码快速运行的原因之一。
ALGOL是第一种结构化编程语言。虽然程序员的成功有限,但它对语言设计师有很大的影响。
Ada是命令式语言具有较强的类型系统和良好的模块化,这使得它适合具有较强的保证要求低级编程(这是美国政府在考虑军事和航空应用赞助) 。它的灵感来自Pascal,例如Modula-2和Modula-3。
远离低级命令式编程的主流,有FORTH。可以为内存很少的设备编译,甚至解释FORTH;它在包括微控制器在内的低端嵌入式系统中得到了很多应用。该语言基于反向抛光表示法,以HP计算器而闻名(实际上,HP计算器的语言受到FORTH的强烈影响)。许多实现没有变量:所有数据都保存在一个或多个堆栈上。
为了好玩,我会提到INTERCAL,这是深奥语言的祖父。
Esoteric languages可以启发,并且相当接近机器的几个工作(通常是虚拟机,但在原则上,你可以实现他们的实际的计算机,如果你够疯狂)。你可以看看brainfuck(一种图灵机和C之间的中间阶段的)或许多单指令语言,或befunge(什么,如果存储器是一个 2 - 维数组?)。
Cyclone看起来很像C.语法是相同的,并且气旋具有指针,未标记的结构和联合,goto语句和手动内存管理。然而它是一种安全语言:你不能有悬空指针或缓冲区溢出。并且您可以访问高级功能,例如模式匹配,异常,多态,抽象类型和可选的自动内存管理(不仅仅是垃圾收集,还包括区域)。旋风既有用又有启发性;对于一个顽固的C来说,它可以是一种发现什么是安全语言的好方法。 Cyclone可以编译为C,因此您可以在任何有C编译器的地方运行程序。
要在不同的方向,如果你想接近硬件,但仍没有实际硬件设计,看看synchronous languages,如Lustre和Esterel。这些语言用于编写高保障实时系统,如核电站,飞机和铁路信号。这些语言放弃了图灵的完整性,并确保程序员可以准确地知道他们的程序运行速度以及需要多少内存。如果您认为C靠近机器,那么找出真正靠近机器的语言可能会让您感到震惊。
答案 6 :(得分:1)
汇编最接近硬件,因此最快
答案 7 :(得分:1)
Ada最初是为嵌入式系统设计的(除其他外)。
答案 8 :(得分:1)
OpenCL可能很有趣。它有点像OpenGL着色器语言(带有扩展的C的子集),但用于通用并行数组计算。
答案 9 :(得分:1)
您可以开始用VHDL,Verilog,System C编程FPGA ......
答案 10 :(得分:0)
你不能比汇编语言更接近,除非你找到一个芯片制造商的工作并开始编写微代码!!!
如果您使用的是Windows,我认为您可以获得Microsoft MASM(宏汇编程序),这样您就可以快速启动并运行。我很久以前就用它了,这不是一个糟糕的产品。
答案 11 :(得分:0)
回答我的问题似乎有点尴尬,但我找到了两种语言:
它们可能无法满足所有约束条件,但它们非常适合性能计算,并且都转换为C语言。