Первая программа на Nim
Play ITЗагрузка интерактивного демо…
Первая программа на Nim
Где применяют Nim
Nim компилируется в C/C++/JS/objC: синтаксис похож на Python, производительность близка к C. Метапрограммирование и макросы; ниша — утилиты, игры, embedded, когда нужен один бинарник без runtime.
Старт: установщик choosenim (рекомендуемый способ с nim-lang.org), затем nim r hello.nim. Устройство компиляции — в архитектуре; сравнение с Python по синтаксису — первая программа на Python.
Подготовка рабочего окружения
Шаг 1 — Установка компилятора Nim
Для написания и запуска программ на Nim требуется компилятор. Официальный сайт языка — https://nim-lang.org. На главной странице доступна кнопка Download, ведущая к странице загрузки.
Выберите операционную систему:
- Windows: рекомендуется использовать установщик
.exeили архив.zip. Установщик автоматически добавит Nim в переменную PATH, что упрощает вызов компилятора из командной строки. - macOS:
brew install nim
Разбор:
-
brew— пакетный менеджер macOS. -
install nimустанавливает компилятор Nim и сопутствующие инструменты. -
После установки команды
nimиnimbleстановятся доступны в терминале. -
Это самый быстрый путь получить рабочее окружение на macOS.
-
Linux (Debian/Ubuntu) или официальный скрипт с nim-lang.org:
sudo apt install nim
Разбор:
- Команда рассчитана на Debian/Ubuntu и использует пакетный менеджер
apt. sudoзапускает установку с правами администратора.install nimскачивает и ставит пакет компилятора из подключённых репозиториев.- Подходит для быстрого старта на Linux без ручной сборки.
Проверка установки:
nim --version
Разбор:
- Команда выводит версию установленного компилятора Nim.
- Её используют как проверку, что установка завершилась корректно.
- Если команда не найдена, обычно проблема в переменной
PATH. - Номер версии помогает сверить документацию и доступные фичи языка.
Если команда возвращает версию компилятора (например, Nim Compiler Version 2.0.0), значит, установка прошла успешно.
Шаг 2 — Выбор текстового редактора или IDE
Nim не требует специализированной среды разработки. Программы на Nim можно писать в любом текстовом редакторе, поддерживающем подсветку синтаксиса. Однако для повышения продуктивности рекомендуется использовать один из следующих вариантов:
- Visual Studio Code с расширением Nim от Pragmagic. Это расширение обеспечивает подсветку синтаксиса, автодополнение, навигацию по коду и интеграцию с компилятором.
- Vim или Neovim с плагином nim.nvim или nim.vim.
- JetBrains IDE (IntelliJ IDEA, CLion и другие) с плагином Nim.
- Простой редактор, такой как Notepad++ (Windows) или Kate (Linux), если требуется минималистичный подход.
Для новичков оптимальным выбором будет Visual Studio Code благодаря простоте установки, бесплатности и широкой поддержке языков.
Установка расширения в VS Code:
- Откройте VS Code.
- Перейдите в раздел Extensions (Ctrl+Shift+X).
- В поиске введите "Nim".
- Установите расширение с иконкой в виде зелёного треугольника и подписью "Nim by Pragmagic".
- После установки перезапустите редактор.
Расширение автоматически обнаружит установленный компилятор Nim, если он доступен в PATH.
Создание первой программы
Шаг 3 — Написание кода
Создайте новый файл с расширением .nim. Например, назовите его hello.nim.
Откройте файл в выбранном редакторе и введите следующий код:
echo "Hello, World!"
Разбор:
echo— встроенная процедура вывода в консоль.- Строковый литерал
"Hello, World!"передаётся как аргумент. - Это минимальная исполняемая программа на Nim в одну строку.
- Выполнение начинается сразу с этой строки, отдельная
mainне требуется.
Это полная программа на Nim. Она состоит из одного оператора — вызова встроенной процедуры echo, которая выводит переданную строку в стандартный поток вывода (обычно терминал).
Особенности синтаксиса:
- Nim не требует объявления точки входа в программу, такой как
main()в C или Java. Выполнение начинается с первой исполняемой строки файла. - Строки заключаются в двойные кавычки.
- Точка с запятой в конце строки не обязательна.
- Отступы могут использоваться для структурирования кода, но в данном случае они не нужны, так как программа состоит из одной строки.
Чуть сложнее — переменные и арифметика:
let language = "Nim"
var year = 2008
year += 1
echo language, " с ", year, " года"
Разбор:
let language— неизменяемая строковая константа на время выполнения.var year— изменяемое целое значение.+= 1увеличивает год (пример инкремента).echoпринимает несколько аргументов и печатает их подряд.
Сохраните файл.
Шаг 4 — Компиляция и запуск
Компиляция:
nim c hello.nim
Разбор:
nim cзапускает компиляцию файла без автоматического выполнения.hello.nim— входной исходник, который преобразуется в исполняемый файл.- Получившийся бинарник можно запускать отдельно и повторно.
- Такой режим удобен для явного разделения этапов "собрать" и "запустить".
Флаг c означает "compile" — компиляция без немедленного запуска. Компилятор создаст исполняемый файл (в подкаталоге nimcache или в текущей директории, в зависимости от настроек) с именем hello (или hello.exe на Windows).
Чтобы сразу скомпилировать и запустить программу, используйте флаг r:
nim r hello.nim
Разбор:
nim rсочетает два шага: компиляцию и немедленный запуск программы.- Команда экономит время на учебных примерах и быстрых проверках.
- При изменении исходника повторный запуск пересобирает проект автоматически.
- Это стандартный workflow для первых экспериментов с Nim.
Эта команда компилирует файл и немедленно запускает полученный исполняемый файл. В терминале появится строка:
Hello, World!
Разбор:
- Это ожидаемый вывод программы после успешной компиляции и запуска.
- Появление строки подтверждает, что и компилятор, и запуск бинарника работают.
- Такой "контрольный" вывод часто используют как smoke test окружения.
- Если строка не появилась, стоит проверить путь к файлу и ошибки сборки выше по логу.
Если вы работаете в VS Code с установленным расширением Nim, можно использовать встроенную команду запуска:
- Нажмите
Ctrl+Shift+P. - Введите "Nim: Run file".
- Выберите эту опцию — редактор автоматически выполнит
nim rдля текущего файла.
Понимание процесса компиляции
Компилятор Nim преобразует исходный код в промежуточное представление, а затем — в C-код. По умолчанию Nim использует компилятор GCC или Clang для генерации машинного кода. Это означает, что на этапе компиляции Nim зависит от установленного C-компилятора в системе.
На Windows официальный установщик Nim включает в себя MinGW-w64, поэтому дополнительных действий не требуется. На Linux и macOS компилятор C обычно уже установлен (например, gcc или clang).
Компиляция в C даёт Nim несколько преимуществ:
- Высокая портируемость — программа, написанная на Nim, может быть скомпилирована практически на любой платформе, где есть C-компилятор.
- Лёгкая интеграция с существующим C-кодом.
- Возможность отладки на уровне C при необходимости.
Исполняемый файл, созданный Nim, не требует наличия интерпретатора или виртуальной машины. Он полностью автономен и может быть запущен на любой совместимой системе без дополнительных зависимостей.
Расширение первой программы
После успешного запуска "Hello, World!" можно добавить простые элементы взаимодействия. Например, запрос имени пользователя и персонализированный приветствие:
import std/readline
echo "Как тебя зовут?"
let name = readLine(stdin)
echo "Привет, ", name, "!"
Разбор:
import std/readlineподключает функции чтения строки из потока ввода.- Первый
echoвыводит пользователю приглашение ввести имя. readLine(stdin)читает строку из стандартного ввода (stdin).let nameсохраняет введённое значение в неизменяемую переменную.- Второй
echoсклеивает несколько аргументов и выводит персональное приветствие.
Здесь:
readLine(stdin)считывает строку из стандартного ввода.letобъявляет неизменяемую переменнуюname.- Оператор
echoможет принимать несколько аргументов, которые будут выведены подряд.
Сохраните изменения и снова запустите (см. блок nim r выше). Программа запросит имя и выведет персонализированное сообщение.
Частые ошибки
| Симптом | Причина |
|---|---|
nim не найден | choosenim не в PATH |
| Ошибка C компилятора | На Windows нужен MinGW/msys2 |
undeclared identifier | Nim чувствителен к отступам и регистру |
Что попробовать
nim check hello.nim— быстрая проверка без полной сборки.when defined(windows)— условная компиляция под ОС.- Сравните с Python — похожий синтаксис.
- Соберите мини-утилиту из простых приложений.
Быстрая проверка синтаксиса:
nim check hello.nim
Разбор:
- Команда проверяет файл без полной линковки исполняемого файла.
- Полезна для быстрого цикла "написал — проверил" в учебных примерах.
- Ошибки типов и синтаксиса появятся сразу в терминале.
Условная компиляция под ОС:
when defined(windows):
const PathSep = '\\'
else:
const PathSep = '/'
echo "Разделитель: ", PathSep
Разбор:
whenвыбирает ветку на этапе компиляции, а не во время запуска.defined(windows)проверяет целевую платформу сборки.- В бинарник попадёт только одна константа
PathSep. - Так пишут кроссплатформенный код без лишних runtime-проверок.
Проект и зависимости (Nimble)
Для программы из нескольких файлов удобен пакетный менеджер Nimble:
nimble init myapp
nimble build
Разбор:
nimble init myappсоздаёт каркас проекта и файл конфигурации пакета.- В этом шаге формируется структура каталогов и базовые метаданные.
nimble buildсобирает проект по описанию из.nimble-файла.- Такой workflow нужен, когда проект выходит за рамки одного файла.
Файл myapp.nimble описывает зависимости; исходники лежат в src/. Это тот же уровень, что pip для Python, но сборка остаётся нативной через nim c.
В подборках
Статья входит в тематические подборки и блок "С чего начать?" на главной. Соседние шаги того же маршрута:
Первые шаги (маршрут подборки) — Первая программа на Zig, Первая программа на Dart, Первая программа на Elixir, Первая программа на R, Первая программа на Scala, Первая программа на Julia.