Content deleted Content added
m Fix categories |
m WP:CHECKWIKI error fix for #61. Punctuation goes before References. Do general fixes if a problem exists. - using AWB (10822) |
||
Line 11:
| latest_test_version = 0.10.2<ref name="news">{{cite web|url=http://nim-lang.org/news.html|title=News|work=Official website|accessdate=2015-01-02}}</ref>
| latest_test_date = 2014-12-29
| typing = [[static typing|static]],<ref name="nimbyex">{{cite web|url=http://nim-by-example.github.io/|title=Nim by example|publisher=[[Github]]|accessdate=2014-07-20}}</ref>
| dialects =
| influenced_by = [[Ada (programming language)|Ada]], [[Modula 3]], [[Lisp (programming language)|Lisp]], [[C++ (programming language)|C++]], [[Object Pascal]], [[Python (programming language)|Python]]
Line 18:
| website = {{URL|http://nim-lang.org/}}
}}
'''Nim''' (formerly known as Nimrod) is an [[imperative programming|imperative]], [[multi-paradigm programming language|multi-paradigm]], [[compiled programming language]]<ref name="drdobbs">{{cite web|url=http://www.drdobbs.com/open-source/nimrod-a-new-systems-programming-languag/240165321|title=Nimrod: A new systems programming language|first=Andreas|last=Rumpf|work=[[Dr. Dobb's Journal]]|date=2014-02-11|accessdate=2014-07-20}}</ref> designed and developed by Andreas Rumpf. It is designed to be an "efficient, expressive, and elegant" programming language,<ref name="nim-lang">{{cite web|url=http://nim-lang.org/|title=The Nim Programming Language|work=Official website|accessdate=2014-07-20}}</ref> supporting [[metaprogramming]],<ref>{{cite web |url=http://developers.slashdot.org/story/15/02/15/0411217/nim-programming-language-gaining-traction?utm_source=slashdot&utm_medium=twitter |title=Nim Programming Language Gaining Traction |publisher=Slashdot anonymous poster|accessdate=15 Feb 2014}}</ref>
The Nim compiler was initially written in Pascal,<ref name="pas-sources">{{cite web|url=https://github.com/Araq/Nim/tree/ea1f1ec6d4d6c776eb0f81c2bebdd4cb4c817ebe/nim|title=Nim Pascal Sources|work=Nim|publisher=[[Github]]|accessdate=2013-04-05}}</ref> in 2008<ref name="news"/> a version of the compiler written in Nim was released. The compiler is open source and is being developed by a group of volunteers in addition to Andreas Rumpf.<ref name="contributors">{{cite web|url=https://github.com/Araq/Nim/contributors|title=Contributors|work=Nim|publisher=[[Github]]|accessdate=2013-04-05}}</ref> The compiler generates optimized C code and defers compilation to an external compiler<ref name="infoq">{{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}}</ref> (a large range of compilers including clang and GCC are supported) to leverage their optimization and portability capabilities. The compiler can also generate C++ and Objective C code to allow for easy interfacing with APIs written in those languages,<ref name="drdobbs"/>
== Description ==
Nim's syntax is an unusual blend between Python and Pascal.<ref>{{Cite web|url = http://www.drdobbs.com/jvm/the-rise-and-fall-of-languages-in-2013/240165192|title = The Rise And Fall of Languages in 2013|date = 2014-01-07|accessdate = |website = |publisher = Dr. Dobb's|last = Binstock|first = Andrew}}</ref>
Nim supports compile-time metaprogramming features such as AST macros and term rewriting macros,<ref name="manual">{{cite web|url=http://nim-lang.org/manual.html|title=Nim Manual|work=Official website|accessdate=2014-07-20}}</ref> the combination of these features is largely unique to Nim.<ref name="trforum">{{cite web|url=http://forum.nim-lang.org/t/70|title=Term rewriting macros|last=Araq|work=Nim Forum|date=2012-09-10|accessdate=2014-07-20}}</ref> Term rewriting macros enable library implementations of common data structures such as bignums and matrixes to be implemented with an efficiency as if they would have been builtin language facilities. Iterators are supported and can be used as first class entities<ref name="manual"/> in the language as can functions, these features allow for [[functional programming]] to be used. Object oriented programming is supported by inheritance and [[multiple dispatch]]. Functions can be generic and can also be overloaded, generics are further enhanced by the support for type classes. Operator overloading is also supported.<ref name="manual"/>
== Examples ==
|