NIM是一种静态类型的编译系统编程语言。它结合了成熟语言(如Python、Ada和Moda)的成功概念。
NIM生成本地无依赖关系的可执行文件,不依赖于虚拟机,这些文件很小,很容易重新分发。
NIM编译器和生成的可执行文件支持所有主要平台,如Windows、Linux、BSD和MacOS。
受C++和Rust的启发,NIM的内存管理是确定性的,并且可以通过析构函数和移动语义进行自定义。它非常适合嵌入式、硬实时系统。
零开销迭代器和用户定义函数的编译时求值等现代概念,再加上堆栈上分配的基于值的数据类型的偏好,会产生性能极高的代码。
支持多种后端:编译成C、C++或JavaScript,使NIM可以满足所有后端和前端需求。
NIM有一个强大的宏系统,可以直接操作AST,提供几乎无限的机会。
宏不能更改NIM的语法,因为不需要它-语法足够灵活。
导入strformat type Person=Object Name:String age:Natural#确保Person中的Person=[Person(Name:";John";,age:45),Person(Name:";Kate";,age:30)]为Person in People:#类型安全字符串插值,#编译时求值。Echo(fmt";{Pers.name}是{Pers.age}岁";)。
#多亏了NIM';s&39;迭代器和';Year&39;构造,#迭代器和普通的#函数一样容易编写。它们被编译成内联循环。迭代器oddNumbers[idx,T](a:数组[idx,T]):t=for x in a:if x mod 2==1:对奇数产生x([3,6,9,12,15,18]):回波奇数。
#使用NIM的宏系统将密集的#以数据为中心的x86指令描述#转换为#汇编程序和JIT使用的查找表。对于数据中的w,将宏、结构宏导入LookupTable(data:static[string]):untype=result=newTree(NnkBracket)。Split(';;';):结果。为操作码中的o添加newLit(W)const data=";mov;btc;cli;xor";opcode=toLookupTable(Data):echo o