<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Nim</id>
	<title>Nim - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Nim"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Nim&amp;action=history"/>
	<updated>2026-07-15T00:21:15Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Nim&amp;diff=2873254&amp;oldid=prev</id>
		<title>imported&gt;Yumeto：​使用DisamAssist清理消歧義連結：Go（改連結至Go語言）。</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Nim&amp;diff=2873254&amp;oldid=prev"/>
		<updated>2026-03-02T15:25:28Z</updated>

		<summary type="html">&lt;p&gt;使用&lt;a href=&quot;/index.php?title=User:Peacearth/DisamAssist.js&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Peacearth/DisamAssist.js（页面不存在）&quot;&gt;DisamAssist&lt;/a&gt;清理&lt;a href=&quot;/index.php?title=WP:DAB&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;WP:DAB（页面不存在）&quot;&gt;消歧義&lt;/a&gt;連結：&lt;a href=&quot;/wiki/Go&quot; title=&quot;Go&quot;&gt;Go&lt;/a&gt;（改連結至&lt;a href=&quot;/wiki/Go%E8%AA%9E%E8%A8%80&quot; title=&quot;Go語言&quot;&gt;Go語言&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{about|一種程式語言|同名的遊戲|尼姆游戏}}&lt;br /&gt;
{{Multiple issues|&lt;br /&gt;
{{expert|time=2017-05-05T12:07:57+00:00}}&lt;br /&gt;
{{Primarysources|time=2022-11-23T04:53:07+00:00}}&lt;br /&gt;
}}&lt;br /&gt;
{{NoteTA&lt;br /&gt;
|G1 = IT&lt;br /&gt;
|zh-hans:宏;zh-hant:巨集;&lt;br /&gt;
|zh-hans:代码;zh-hant:程式碼;&lt;br /&gt;
|zh-hans:标识符;zh-hant:標識符;&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox programming language&lt;br /&gt;
| name = Nim&lt;br /&gt;
| logo = Nim-logo.png&lt;br /&gt;
| logo size = 160px&lt;br /&gt;
| logo caption = The Nim crown logo&lt;br /&gt;
| screenshot = &amp;lt;!-- Filename only --&amp;gt;&lt;br /&gt;
| screenshot caption = &lt;br /&gt;
| paradigms = [[编程范式|多范式]]: [[编译语言|编译]], [[并发计算|并发]], [[过程式编程|过程式]], [[指令式编程|指令式]], [[函数式编程|函数式]], [[面向对象编程|面向对象]]&lt;br /&gt;
| designer = Andreas Rumpf&amp;lt;!-- Do not WP:LINK to late German classical archaeologist. --&amp;gt;&lt;br /&gt;
| developer = &lt;br /&gt;
| released = {{Start date and age|2008}}&lt;br /&gt;
| latest release version = {{wikidata|property|reference|edit|P348}}&lt;br /&gt;
| latest release date = {{wikidata|qualifier|P348|P577}}, {{Time ago|{{wikidata|qualifier|raw|P348|P577}}}}&lt;br /&gt;
| latest preview version = &lt;br /&gt;
| latest preview date = &lt;br /&gt;
| typing = [[类型系统|静态]]&amp;lt;ref name=&amp;quot;nimbyex&amp;quot;&amp;gt;{{cite web |url=https://nim-by-example.github.io/ |title=Nim by example |website=[[GitHub]] |access-date=2014-07-20 |archive-date=2014-12-29 |archive-url=https://web.archive.org/web/20141229134826/https://nim-by-example.github.io/ |dead-url=no }}&amp;lt;/ref&amp;gt;, [[类型系统|强类型]]&amp;lt;ref name=&amp;quot;nimrodbg&amp;quot;&amp;gt;{{cite conference |url=https://ibob.github.io/slides/nimrodbg/#/ |language=bg |title=Метапрограмиране с Nimrod |last1=Караджов |first1=Захари |last2=Станимиров |first2=Борислав |year=2014 |conference=VarnaConf |conference-url=http://varnaconf.com/ |access-date=2014-07-27 |archive-date=2015-02-17 |archive-url=https://web.archive.org/web/20150217215618/http://ibob.github.io/slides/nimrodbg/#/ |dead-url=no }}&amp;lt;/ref&amp;gt;, [[类型推论]], [[类型系统|结构化]]&lt;br /&gt;
| dialects = &lt;br /&gt;
| influenced by = [[Ada]], [[Modula-3]], [[Lisp]], [[C++]], [[Object Pascal]], [[Python]], [[Oberon]]&lt;br /&gt;
| platform = [[IA-32]], [[x86-64]]&lt;br /&gt;
| operating system = [[跨平台]]&amp;lt;ref&amp;gt;{{Cite web |url=https://nim-lang.org/install.html |title=Install Nim |access-date=2018-10-12 |archive-date=2018-10-10 |archive-url=https://web.archive.org/web/20181010145920/https://nim-lang.org/install.html |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| license = [[MIT License|MIT]]&amp;lt;ref name=&amp;quot;FAQ&amp;quot;&amp;gt;{{cite web |url=https://nim-lang.org/faq.html |title=FAQ |website=Nim-lang.org |access-date=2015-03-27 |archive-date=2017-07-11 |archive-url=https://web.archive.org/web/20170711004631/https://nim-lang.org/faq.html |dead-url=no }}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;#039;license1&amp;#039;&amp;gt;{{cite web |url=https://github.com/nim-lang/Nim/blob/master/copying.txt |title=copying.txt |website=GitHub |access-date=2015-03-27 |archive-date=2018-09-26 |archive-url=https://web.archive.org/web/20180926201511/https://github.com/nim-lang/Nim/blob/master/copying.txt |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| website = {{URL|nim-lang.org}}&lt;br /&gt;
| file_ext = .nim&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nim&amp;#039;&amp;#039;&amp;#039;是一个[[指令式編程|指令式]]、[[通用编程语言|通用]]、[[多重编程范式|多范式]]、[[静态类型]]、[[編譯語言|编译型]]的[[编程语言]]，由Andreas Rumpf设计和开发，设计目标是高效、富有表现力以及优雅。Nim支持[[元编程]]、[[函数式编程|函数式]]、[[訊息傳遞 (軟體)|消息传递]]、[[过程式编程|过程式]]以及[[面向对象程序设计|面向对象]]编程。&lt;br /&gt;
&lt;br /&gt;
==语言设计==&lt;br /&gt;
&lt;br /&gt;
Nim的设计目标是像[[C语言|C]]一样快速，像[[Python]]一样有表达力，并像[[Lisp]]一样有扩展性。具体地说，它受以下语言的影响：&lt;br /&gt;
*[[Modula-3]]：有跟踪的和无跟踪的指针&lt;br /&gt;
*[[Delphi]]：类型安全的字符集&lt;br /&gt;
*[[Ada]]：子范围类型、distinct类型、安全变体/case对象&lt;br /&gt;
*[[C++]]：[[运算符重载]]、[[泛型]]&lt;br /&gt;
*[[Python]]：[[越位规则]]&lt;br /&gt;
*[[Lisp]]：宏系统、包罗[[抽象语法树|AST]]、[[同像性]]&lt;br /&gt;
*[[Oberon]]：成员导出标记&lt;br /&gt;
*[[C♯|C#]]：[[async/await]]、lambda宏&lt;br /&gt;
*[[Go語言|Go]]：延迟执行&lt;br /&gt;
&lt;br /&gt;
另外，Nim支持{{tsl|en|Uniform Function Call Syntax|统一函数调用语法}}&amp;lt;ref&amp;gt;{{Cite web |url=http://nim-lang.org/docs/manual.html#procedures-method-call-syntax |title=Nim Manual:Method call syntax |accessdate=2017-10-01 |archive-date=2017-09-24 |archive-url=https://web.archive.org/web/20170924001618/https://nim-lang.org/docs/manual.html#procedures-method-call-syntax |dead-url=no }}&amp;lt;/ref&amp;gt;，即並未區分函數、方法的調用語法。亦支持等价标识符，即不同的變數名稱可能被視為相同，其忽略非首字母的大小寫以及底線。&amp;lt;ref&amp;gt;{{Cite web |url=http://nim-lang.org/docs/manual.html#lexical-analysis-identifier-equality |title=Nim Manual:Identifier equality |accessdate=2017-10-01 |archive-date=2017-09-24 |archive-url=https://web.archive.org/web/20170924001618/https://nim-lang.org/docs/manual.html#lexical-analysis-identifier-equality |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==编译器==&lt;br /&gt;
Nim编译器可生成优化过的C代码并将编译推迟给外部的编译器&amp;lt;ref name=&amp;quot;infoq&amp;quot;&amp;gt;{{cite video |url=http://www.infoq.com/presentations/nimrod |title=Nimrod: A New Approach to Metaprogramming |first=Andreas |last=Rumpf |work=[[InfoQ]] |time=2:23 |date=2014-01-15 |accessdate=2014-07-20 |archive-date=2014-10-10 |archive-url=https://web.archive.org/web/20141010103352/http://www.infoq.com/presentations/nimrod |dead-url=no }}&amp;lt;/ref&amp;gt;（包括 [[Clang]] 及 [[GCC]] 在内的众多编译器都受支持）。编译器还可生成 [[C++]]、[[Objective-C]] 以及[[JavaScript]]的代码来便捷地与其他语言的[[应用程序接口]]（API）交互。这使得Nim可用以编写[[iOS]]和[[Android]]的应用程序。&lt;br /&gt;
&lt;br /&gt;
Nim编译器自身是{{le|自举|Self-hosting (compilers)}}的，也就是使用Nim语言自身编写的。&amp;lt;ref&amp;gt;{{Cite web |url=https://github.com/nim-lang/Nim#compiling |title=存档副本 |accessdate=2017-05-05 |archive-date=2015-04-24 |archive-url=https://web.archive.org/web/20150424221016/https://github.com/Araq/Nim#compiling |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==库==&lt;br /&gt;
Nim程序可使用众多来自[[C语言]]和[[C++]]的[[函式庫]]。[[语言绑定]]可用于许多函式庫，例如[[GTK+]]2、[[OpenGL]]、[[WinAPI]]、[[zlib]]、{{tsl|en|libzip}}、[[OpenSSL]] 以及 [[cURL]]。&amp;lt;ref name=&amp;quot;lib&amp;quot;&amp;gt;{{cite web |url=http://nim-lang.org/lib.html |title=Nim Standard Library |work=Nim documentation |accessdate=2015-04-04 |deadurl=yes |archiveurl=https://web.archive.org/web/20150406053933/http://nim-lang.org/lib.html |archivedate=2015-04-06 }}&amp;lt;/ref&amp;gt; Nim 可与 [[PostgreSQL]]、[[MySQL]] 以及 [[SQLite]] 数据库共同工作，可与 [[Lua]] 和 [[Python]] 语言的解释器交互。&lt;br /&gt;
&lt;br /&gt;
== 例子 ==&lt;br /&gt;
=== Hello world ===&lt;br /&gt;
[[Hello world|Hello, World!]]用Nim写为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nim&amp;quot;&amp;gt;&lt;br /&gt;
echo(&amp;quot;Hello, world!&amp;quot;)&lt;br /&gt;
# Procedures can be called with no parentheses&lt;br /&gt;
echo &amp;quot;Hello, World!&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
另一输出&amp;quot;Hello World&amp;quot;的版本：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nim&amp;quot;&amp;gt;&lt;br /&gt;
stdout.write(&amp;quot;Hello, world!\n&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 阶乘 ===&lt;br /&gt;
使用指令式方式计算正数的[[阶乘]]：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nim&amp;quot;&amp;gt;&lt;br /&gt;
import strutils&lt;br /&gt;
&lt;br /&gt;
var n = 0&lt;br /&gt;
try:&lt;br /&gt;
  stdout.write &amp;quot;Input positive integer number: &amp;quot;&lt;br /&gt;
  n = stdin.readline.parseInt&lt;br /&gt;
except ValueError:&lt;br /&gt;
  raise newException(ValueError, &amp;quot;You must enter a positive number&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
var fact = 1&lt;br /&gt;
for i in 2..n:&lt;br /&gt;
  fact = fact * i&lt;br /&gt;
&lt;br /&gt;
echo fact&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
使用来自Nim标准库的math模块：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nim&amp;quot;&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
echo fac(x)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 反转字符串 ===&lt;br /&gt;
简单的一个例子展示了Nim的很多特征：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nim&amp;quot;&amp;gt;&lt;br /&gt;
func reverse(s: string): string =&lt;br /&gt;
  for i in countdown(s.high, 0):&lt;br /&gt;
    result.add s[i]&lt;br /&gt;
&lt;br /&gt;
let str1 = &amp;quot;Reverse This!&amp;quot;&lt;br /&gt;
echo &amp;quot;Reversed: &amp;quot;, reverse(str1)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
很独特的特征之一是隐式&amp;lt;code&amp;gt;result&amp;lt;/code&amp;gt;变量。在Nim中具有非空返回类型的所有过程都有一个隐式的结果变量表示被返回的值。在for循环中调用了&amp;lt;code&amp;gt;countdown&amp;lt;/code&amp;gt;，它是迭代器。如果省略了迭代器，编译器将尝试使用&amp;lt;code&amp;gt;items&amp;lt;/code&amp;gt;迭代器，如果为指定类型定义了一个的话。&lt;br /&gt;
&lt;br /&gt;
=== 图形用户界面 ===&lt;br /&gt;
通过gintro&amp;lt;ref&amp;gt;[https://github.com/StefanSalewski/gintro gintro] {{Wayback|url=https://github.com/StefanSalewski/gintro |date=20201118103134 }}&amp;lt;/ref&amp;gt;模块使用具有gobject内省的[[GTK]]3：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nim&amp;quot;&amp;gt;&lt;br /&gt;
import gintro/[gtk, glib, gobject, gio]&lt;br /&gt;
&lt;br /&gt;
proc appActivate(app: Application) =&lt;br /&gt;
  let window = newApplicationWindow(app)&lt;br /&gt;
  window.title = &amp;quot;GTK3 application with gobject introspection&amp;quot;&lt;br /&gt;
  window.defaultSize = (400, 400)&lt;br /&gt;
  showAll(window)&lt;br /&gt;
&lt;br /&gt;
proc main =&lt;br /&gt;
  let app = newApplication(&amp;quot;org.gtk.example&amp;quot;)&lt;br /&gt;
  connect(app, &amp;quot;activate&amp;quot;, appActivate)&lt;br /&gt;
  discard run(app)&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
这个代码要求gintro模块，它不是标准库的一部份。要安装模块gintro和很多其他模块可以使用工具nimble，它是nim的一部份。要用nimble安装gintro模块可以如下这样：&lt;br /&gt;
 nimble install gintro&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{Reflist|2}}&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
{{Portal|计算机程序设计}}&lt;br /&gt;
* [https://nim-lang.org/ 官方网站]{{Wayback|url=https://nim-lang.org/ |date=20170506133022 }}&lt;br /&gt;
* [https://github.com/nim-lang/Nim Nim 在 Github 上的托管地址]{{Wayback|url=https://github.com/nim-lang/Nim |date=20150424221016 }}&lt;br /&gt;
* [https://github.com/nim-lang/nimble 包管理器Nimble]{{Wayback|url=https://github.com/nim-lang/nimble |date=20170509102410 }}&lt;br /&gt;
&lt;br /&gt;
{{程序设计语言}}&lt;br /&gt;
[[Category: 系统编程语言]]&lt;br /&gt;
[[Category: 函数式编程语言]]&lt;br /&gt;
[[Category: 过程式编程语言]]&lt;br /&gt;
[[Category: 静态类型编程语言]]&lt;br /&gt;
[[Category:2008年建立的程式語言]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Yumeto</name></author>
	</entry>
</feed>