Вероятно, было три года с тех пор, как я обнаружил язык программирования NIM. Тогда она еще не достигла версии 1.0, несмотря на развитие в течение почти десятилетия. Я был заинтригован этим претензиями и особенностями, но не погрузился.
В прошлом году я решил дать NIM серьезную попытку. Проведя некоторое время с языком, я полностью влюбился в него. NIM позволил мне понять преимущества определенных языковых конструкций, а через изучение NIM я также научился писать лучший код.
Имеет не только сам язык, стабилизированный с течением времени, но экосистема Ним также развивалась. Сегодня NIM показал, что он достиг зрелости и должен считаться серьезным соперником для растущего числа случаев использования.
Официальный сайт NIM
Сильный статически набранный язык
NIM может похвастаться эффективностью, выразительностью и элегантностью. Это статически набранный и составленный язык с очень эргономичной системой типа.
Типы всех переменных известны при компиляционном времени, и компилятор не позволит вам сделать ошибки, связанные с тривиальными типами, которые настолько распространены на динамических языках, где переменные типы оцениваются только во время выполнения. Одним из них предотвращает целую категорию ошибок в коде, написанном в NIM.
Язык NIM использует конститут
, Пусть
и var
Ключевые слова при объявлении переменных для дифференцировки переменных, которые являются неизменными и оценены при компиляционном времени, просто неизменяемым и смежным соответственно.
Система типа проста, но гибка и обеспечивает семантику для наследования, различных типов, кортежей, универсальных и порядковых или типов сумм.
Python, как синтаксис
NIM сочетает в себе успешные концепции от зрелых языков, таких как Python, Ada и Modula. Общий синтаксис аналогичен Python, поскольку вдавливание используется для обозначения блоков вместо фигурных скобок.
Пример популярной перекрестной платформы Nigui Библиотека, которая оборачивает GTK3.0 на Mac и Linux и API Win32 в Windows.
Пример из ArrayMancer Библиотека, реализующая простую нейронную сеть.
Компиляция к C, C ++ или JavaScript
Одно из волшебных вещей о NIM состоит в том, что он компилировал C, C ++ или JavaScript, с помощью C, являющейся ценой компиляции по умолчанию. Это позволяет вам использовать NIM, чтобы написать что-либо от очень низкого уровня драйверов к веб-приложениям и интернатам.
При создании собственных приложений, компилятор NIM генерирует бесплатные выполненные зависимость, которые являются небольшими, быстрыми и простыми для распространения.
Когда библиотеки строительства Компилятор NIM могут генерировать DLL или статические библиотеки, которые будут использоваться с других языков.
В результате NIM компиляции C или C ++ он также имеет невероятную совместимость с C или C ++. В экосистеме NIM есть даже ряд инструментов, которые позволяют автоматически генерировать привязки NIM для библиотек C или C ++.
Отличная стандартная библиотека
Стандартная библиотека языка мощная без перенапряжения. Он обеспечивает большое количество типов данных и модулей, которые вы можете использовать для достижения практически всего, что вы можете изобразить. Стандартная библиотека NIM ближе к тому, что из Python или узла, чем C. Это даже обеспечивает поддержку большинства баз данных прямо из коробки.
С исключением Система
Модуль, который реализует основу NIM и неявно импортируется компилятором, каждый модуль, предоставляемый стандартной библиотекой, должен быть импортирован вручную при использовании. Это означает, что вы можете импортировать только символы, которые вы используете в ваших модулях и предотвращают загрязнение пространства имен.
NIM стандартная библиотека
Быстрорастущая система упаковки
На верхней части функциональности, предоставляемой стандартной библиотекой, NIM имеет постоянно растущую систему пакета, управляемого сообществом, а также отличный менеджер пакетов, известный как Ловкий Отказ
Nimble используется для установки зависимостей из каталога пакета NIM для использования в вашем проекте.
В каталоге пакета вы можете ожидать найти:
- Веб-каркасы
- API Клиенты для многих публичных API
- Проклятия и терминальные интерфейсы
- Ночные библиотеки пользовательских интерфейсов
- Игра Библиотеки двигателя и графических программиров и привязки
- Машинное обучение, статистика и математические библиотеки
- Широкий массив сообществ поддерживает типы данных данных
- Привязки для массивного количества библиотек C и C ++.
- И много больше.
Серьезно, этот список просто царапает поверхность, когда речь идет о количестве пакетов, сообщество NIM поделились в Каталог пакета NIM
Чрезвычайно настраивается
NIM имеет сильные методы MetaProgramming и обеспечивают макро-систему, которая может использоваться для увеличения языка по мере необходимости. Макросистема удобна для абстрагирования повторяющихся шаблонов в вашем коде или построении конкретного языка домена, который на самом деле просто код NIM.
Макросы выполняются во время компиляции. Все код NIM скомпилирован в абстрактное синтаксическое дерево комминирутором, и на этом уровне работает макрос. MACROS NIM можно использовать для преобразования абстрактного синтаксического дерева напрямую и гораздо более гибко, что традиционные текстовые макросы.
Вы можете добиться практически всего в NIM без необходимости макросов, но они позволяют расширить NIM с пользовательскими функциями Lanuage при необходимости.
Последние мысли
NIM действительно изменил так, как я думаю о строительных системах и стал одним из самых мощных инструментов в моем панели инструментов в качестве разработчика программного обеспечения. Это позволило мне написать веб-приложения и API с уровнем уверенности в моем коде, что я иначе не имел. Он также выступил в качестве весеннего доски, которая привела меня к изучению программирования 3D-графического программирования, нейронных сетей и программирования встроенных систем.
Мой опыт с NIM до сих пор был достаточно положен, что я почувствовал необходимость поделиться этим с миром. Go Дайте NIM попробуйте, вы можете просто почувствовать то же самое.
Ресурсы
Если вы заинтересованы в обучении больше о NIM, Страница обучения на официальном сайте Вероятно, лучшее место для начала. Он содержит большой список как официальных, так и сообщественных ресурсов, которые начнут вас.
Оригинал: “https://dev.to/buildsavvy/why-you-should-consider-the-nim-programming-language-1bpb”