Nim

命令式编程语言
授权协议 MIT
开发语言 C/C++ HTML/CSS
所属分类 程序开发、 脚本编程语言
软件类型 开源软件
地区 不详
投 递 者 吴谦
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Nimrod(已改名为 Nim)是一种静态类型的编译系统编程语言。它结合了 Python、Ada和Modula等成熟语言的成功理念。

高效的

  • Nim生成不依赖于虚拟机的本机无依赖可执行文件,这些可执行文件很小并且允许重新分配。
  • Nim编译器和生成的可执行文件支持所有主要平台,例如Windows,Linux,BSD和macOS。
  • 在C ++和Rust的启发下,Nim的内存管理是确定性的,并且可以使用析构函数和移动语义进行自定义。它非常适合嵌入式,硬实时系统。
  • 诸如零开销的迭代器和用户定义函数的编译时评估之类的现代概念,与在堆栈上分配的基于值的数据类型的首选项相结合,导致了性能极高的代码。
  • 支持各种后端:它可以编译为C,C ++或JavaScript,因此Nim可用于所有后端和前端需求。

富有表现力的

  • Nim是独立的:编译器和标准库是在Nim中实现的。
  • Nim具有强大的宏系统,可以直接操纵AST,提供几乎无限的机会。

优雅的

  • 宏无法更改Nim的语法,因为不需要它-语法足够灵活。
  • 具有本地类型推断,元组,泛型和和类型的现代类型系统。
  • 语句按缩进分组,但可以跨越多行。

示例代码:

import strutils

echo "Type in a list of ints of ints (separate by whitespace): "
let tokens = stdin.readLine.split
echo tokens.each(parseInt).max, " is the maximum."
 相关资料
  • 关于命令式语言和函数式(声明式语言的一个子集)编程语言之间的差异,有什么明确的答案,可以用实际例子来解释吗?有哪些主要的或最重要的命令式语言?函数语言呢? 我确实在这里读到了这个答案,但它实际上让我更加困惑-(函数式编程语言和命令式编程语言之间有什么区别?

  • 到目前为止,本书所示的大部分代码,实际上,应该是一般的OCaml代码,都是纯函数式的。纯函数式代码不会修改程序内部状态,没有I/O操作,不去读时钟,也不会以其它方式与外部的可变部分交互。因此一个纯函数行为类似一个数学方程式,对给定的输入总是会返回相同的结果,除了返回值之外对外部没有任何影响。另一方面,命令式代码通过副作用运作,修改程序内部状态或与外部交互。命令式函数有新的作用,并潜在每次调用返回不

  • 本书到目前为止一直都在使用命令式编程,它使用编程语句改变程序状态。考虑下面这段简单的命令式程序。 def add(a, b): return a + b def fancy_func(a, b, c, d): e = add(a, b) f = add(c, d) g = add(e, f) return g fancy_func(1,

  • 本文向大家介绍Linux vim编辑命令模式,包括了Linux vim编辑命令模式的使用技巧和注意事项,需要的朋友参考一下 vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim)。vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率。vi是“visual interface”的缩写,vim是vi IMproved(增强版的vi)。在一般的系统管理维护中v

  • 抱歉,我在谷歌搜索中找不到答案...在kotlin中运行bash命令的语法是什么?我想做一个curl命令。那里的留档似乎非常有限,或者我不擅长谷歌搜索?

  • 我有一些自定义测试脚本,可以使用命令运行,该命令执行一些节点脚本以启动E2E/Unit测试。但在此之前,我必须在其他终端窗口中使用(这也是一个自定义节点脚本,细节无关紧要)启动webpack dev server。因此,我希望省略手动执行,并将其移动到自定义脚本,即我希望在节点脚本中以编程方式执行webpack dev server。如何使用节点脚本以编程方式执行并停止它?提前感谢!

  • 问题内容: 从node.js以编程方式执行mongodb admin / console命令的最佳方法是什么?具体来说,我想在执行一系列插入操作后使用mongodump导出mongodb集合。像这样: 问题答案: 尝试使用:

  • 1 命令语法 ffmpeg [全局选项] {[输入文件选项] -i 输入文件} ... {[输出文件选项] 输出文件} ... 即 ffmpeg [global_options] {[input_file_options] -i input_file} ... {[output_file_options] output_file} ...