1. Введение в Nim: синтаксис, базовые типы и настройка окружения
Введение в Nim: синтаксис, базовые типы и настройка окружения
Добро пожаловать в курс «Язык Nim: от новичка до профессионала». Мы начинаем погружение в один из самых интересных современных языков программирования. Nim сочетает в себе элегантность Python, производительность C и возможности метапрограммирования Lisp.
В этой статье мы подготовим рабочее место, напишем первую программу, разберем фундаментальные строительные блоки языка и научимся работать с переменными и базовыми типами данных.
Почему Nim?
Nim — это статически типизированный компилируемый язык. Его главная философия заключается в эффективности и выразительности. Согласно apptractor.ru, Nim легко взаимодействует с кодом на C, C++ и JavaScript, а также поддерживает компиляцию под Windows, Linux, macOS и даже WebAssembly.
Ключевые преимущества для старта: * Скорость: Nim компилируется в C, что позволяет достичь производительности на уровне низкоуровневых языков. * Читаемость: Синтаксис использует отступы (как в Python), избавляя код от лишних скобок и точек с запятой. * Безопасность: Строгая типизация и управление памятью помогают избегать многих классических ошибок.
Настройка окружения
Прежде чем писать код, необходимо установить компилятор. Официально рекомендуемый способ установки для большинства систем (Linux, macOS, WSL) — использование утилиты choosenim. Это аналог rustup в Rust или nvm в Node.js.
Установка на Linux и macOS
Откройте терминал и выполните команду:
После завершения установки скрипт попросит вас добавить путь к бинарным файлам в переменную окружения PATH. Обычно это строка вида export PATH=PATH. Добавьте её в конфигурационный файл вашего шелла (например, .bashrc или .zshrc).
Установка на Windows
Для Windows можно скачать готовый установщик или zip-архив с официального сайта. Однако, если у вас установлен менеджер пакетов scoop или choco, установка становится проще:
Проверка установки
Чтобы убедиться, что всё работает корректно, введите в терминале:
Вы должны увидеть информацию о версии компилятора, дате сборки и вашей операционной системе.
Первая программа: Hello, World!
Традиционно начнем с вывода текста на экран. Создайте файл с названием hello.nim и откройте его в любом текстовом редакторе (VS Code, Sublime Text, Vim).
Напишите следующую строку:
Запуск и компиляция
Nim — компилируемый язык. Это значит, что исходный код сначала преобразуется в машинный код (через промежуточную трансляцию в C), и только потом исполняется.
Чтобы скомпилировать и сразу запустить программу, используйте команду:
Разберем флаги:
* c (compile) — команда компиляции.
* -r (run) — запустить полученный бинарный файл сразу после успешной компиляции.
После выполнения вы увидите в консоли: Привет, мир Nim!.
Переменные и константы
В Nim существует три ключевых слова для объявления переменных, и понимание разницы между ними критически важно. Это var, let и const.
1. var — изменяемые переменные
Если значение переменной будет меняться в процессе выполнения программы, используйте var.
2. let — неизменяемые переменные (Single Assignment)
Используйте let, если переменная получает значение один раз во время выполнения и больше не меняется. Это делает код безопаснее и понятнее. Значение может быть вычислено в момент запуска.
3. const — константы времени компиляции
Значение const должно быть известно до запуска программы, прямо в момент компиляции. Это самая строгая форма неизменяемости.
> Лаконичный код не мешает читабельности, он ей способствует. > > habr.com
Nim поддерживает вывод типов (type inference). В примерах выше мы не указывали типы явно (int, string), компилятор определил их сам на основе присвоенных значений.
Базовые типы данных
Несмотря на умный вывод типов, Nim — язык со строгой статической типизацией. Это значит, что вы не можете просто так сложить число и строку.
Числа
* int: Целое число. Размер зависит от архитектуры (32 или 64 бита).
* float: Число с плавающей точкой.
Для удобства чтения больших чисел можно использовать подчеркивания:
Рассмотрим пример математической операции. Допустим, нам нужно перевести температуру из градусов Цельсия в Фаренгейты. Формула выглядит так:
где — температура в градусах Фаренгейта, — температура в градусах Цельсия, — коэффициент масштабирования, а — смещение нуля.
Реализуем это в коде:
Обратите внимание: если бы мы написали 32 (целое число) вместо 32.0 (float), компилятор выдал бы ошибку, так как Nim не делает неявного приведения типов между int и float при сложении.
Строки и символы
* char: Одиночный символ в одинарных кавычках 'a'.
* string: Строка в двойных кавычках "Привет".
Строки в Nim изменяемы (mutable), если объявлены через var.
Логический тип
* bool: Принимает значения true или false.
Синтаксис и структура кода
Nim использует отступы для обозначения блоков кода, подобно Python. Стандарт — 2 пробела (табуляция запрещена).
Комментарии
Согласно github.com, комментарии бывают однострочными и многострочными:
Управляющие конструкции: if и else
Ветвление выглядит привычно для тех, кто знаком с Python:
Обратите внимание на двоеточие : в конце условий и отступы в блоках кода.
Циклы
Самый распространенный цикл — for с использованием итератора countup или оператора ..:
Цикл while используется, когда количество итераций заранее неизвестно:
Процедуры (Функции)
Функции в Nim называются процедурами и объявляются ключевым словом proc.
Важные детали:
=.В Nim есть специальная неявная переменная result. Она автоматически объявляется в каждой процедуре, возвращающей значение. Вы можете присваивать ей результат, и он будет возвращен в конце, даже без явного return.
Итоги
Мы сделали первый шаг в изучении Nim. Вот ключевые моменты, которые нужно запомнить:
choosenim для управления версиями компилятора.nim c -r file.nim компилирует и сразу запускает программу.var — для изменяемых данных, let — для неизменяемых (runtime), const — для констант времени компиляции.int и float.В следующей статье мы углубимся в более сложные структуры данных, такие как массивы, последовательности и объекты.