Ним (язык программирования)


Nimуниверсальный , мультипарадигмальный , статически типизированный , компилируемый язык системного программирования [9] , разработанный и разработанный командой Андреаса Румпфа. Nim разработан, чтобы быть «эффективным, выразительным и элегантным», [10] поддерживающим метапрограммирование , функциональный , передачу сообщений , [7] процедурный и объектно-ориентированный стили программирования, предоставляя несколько функций, таких как генерация кода во время компиляции , алгебраические типы данных . , внешний функциональный интерфейс(FFI) с C , C++ , Objective-C и JavaScript и поддержкой компиляции на тех же языках.

Ним статически типизирован. [11] Он поддерживает функции метапрограммирования во время компиляции , такие как синтаксические макросы и макросы перезаписи терминов . [12] Макросы перезаписи терминов позволяют эффективно реализовывать библиотечные реализации общих структур данных, таких как большие числа и матрицы, как если бы они были встроенными средствами языка. [13] Итераторы поддерживаются и могут использоваться как сущности первого класса, [12] как функции can, что позволяет использовать методы функционального программирования . Объектно-ориентированное программирование поддерживается наследованием и множественной диспетчеризацией .. Функции могут быть универсальными, они могут быть перегружены, а универсальные функции дополнительно расширяются за счет поддержки Nim классов типов. Также поддерживается перегрузка операторов . [12] Nim включает настраиваемую автоматическую сборку мусора на основе отложенного подсчета ссылок с обнаружением циклов , которую также можно полностью отключить. [14]

[Ним] ... представляет самый оригинальный дизайн, который сочетает в себе Pascal и Python и компилируется в код C или JavaScript. [15]

Первоначальная разработка Nim была начата в 2005 году Андреасом Румпфом. Первоначально он назывался Nimrod, когда проект был обнародован в 2008 году. [18] : 4–11  Первая версия компилятора Nim была написана на Паскале с использованием компилятора Free Pascal . [19] В 2008 году была выпущена версия компилятора, написанная на Nim. [20] Компилятор является бесплатным программным обеспечением с открытым исходным кодом и разрабатывается сообществом добровольцев, работающих с Андреасом Румпфом. [21] Язык был официально переименован с Nimrod на Nim с выпуском версии 0.10.2 в декабре 2014 года. [22]23 сентября 2019 года была выпущена версия Nim 1.0.0, что свидетельствует о развитии языка и его набора инструментов.

Синтаксис Nim похож на Python . [23] Блоки кода и операторы вложенности идентифицируются с помощью пробелов в соответствии с правилом офсайда . Многие ключевые слова идентичны своим эквивалентам в Python, которые в основном являются ключевыми словами на английском языке, тогда как в других языках программирования обычно используются знаки препинания. С целью улучшения своих языков влияния, несмотря на то, что Nim поддерживает синтаксис на основе отступов , такой как Python, он обеспечивает дополнительную гибкость. Например, один оператор может занимать несколько строк, если запятая или бинарный оператор стоят в конце каждой строки. И Nim поддерживает определяемые пользователем операторы.

В отличие от Python, Nim реализует (собственную) статическую типизацию. Система типов Nim позволяет легко преобразовывать типы, приводить типы и предоставляет синтаксис для универсального программирования. В частности, Nim предоставляет классы типов, которые могут заменять несколько типов, и предоставляет несколько таких классов типов «из коробки». Классы типов позволяют работать с несколькими типами, как если бы они были одним типом. Например: