Языки программирования

Учебник Nim для начинающих

15 уроков · 6 разделов · бесплатно, без регистрации

Nim выглядит как Python, а компилируется в код со скоростью C — необычное сочетание, которое стоит понять.

Курс «Nim: питонический синтаксис и скорость C» состоит из 6 разделов и 15 уроков: Зачем Nim, Типы и переменные, Процедуры и функции, Объекты и структуры данных, Метапрограммирование и Практика: производительность. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Зачем Nim

    1. Что такое Nim и зачем он нужен

      Nim простыми словами: язык с синтаксисом как у Python и скоростью как у C. История создания, где применяется сегодня и чем отличается от других языков.

    2. Первая программа и компиляция

      Как написать программу "Hello, world" на Nim, скомпилировать её командой nim compile и разобраться, что происходит на выходе. Пошагово для новичков.

  2. 2 Типы и переменные

    1. let, var и const: три способа объявить значение

      В чём разница между let, var и const в Nim: неизменяемое значение, изменяемая переменная и константа времени компиляции — когда что выбирать.

    2. Вывод типов и явная типизация

      Как Nim определяет тип переменной по значению без указания типа и когда стоит писать тип явно через двоеточие.

    3. Базовые типы: int, float, string, bool

      Обзор встроенных типов Nim: int, float, string и bool, операции над ними и отличия от Python — например, целочисленное деление.

  3. 3 Процедуры и функции

    1. proc: объявление процедуры

      Как объявить процедуру в Nim: ключевое слово proc, типизированные параметры, стрелка возвращаемого типа и неявный возврат через result.

    2. Перегрузка процедур

      Перегрузка процедур в Nim: несколько процедур с одинаковым именем и разными типами параметров, и как компилятор выбирает нужную версию.

    3. Параметры по умолчанию и именованные аргументы

      Параметры по умолчанию в Nim и вызов процедур с именованными аргументами: как упростить сигнатуры и сделать вызовы понятнее.

  4. 4 Объекты и структуры данных

    1. object: собственные типы данных

      Как объявить свой тип через object в Nim, создать экземпляр и обратиться к полям — и чем это похоже и не похоже на классы Python.

    2. seq: динамические последовательности

      Динамические массивы seq в Nim: создание, добавление элементов через add, срезы и сравнение со списком list из Python.

    3. Table: словари в Nim

      Словари в Nim через модуль std/tables: импорт, создание Table, добавление и чтение пар ключ-значение, проверка наличия ключа и сравнение с dict Python.

  5. 5 Метапрограммирование

    1. Templates: подстановка кода на этапе компиляции

      Что такое template в Nim: как шаблон подставляется в место вызова во время компиляции, чем он быстрее обычной процедуры и какие ошибки подстерегают новичков.

    2. Макросы: код, который пишет код

      Введение в macro в Nim: чем макрос отличается от template, как он работает с деревом синтаксиса программы и как собрать простой генерирующий код макрос через quote do.

  6. 6 Практика: производительность

    1. Производительные вычисления на Nim

      Считаем числа Фибоначчи и строим решето Эратосфена на Nim: почему компилируемый код с самого начала работает быстрее, чем аналогичный код на Python, и куда уходит время в каждом варианте.

    2. Nim и Python: когда выбирать что

      Практические критерии выбора между Nim и Python: скорость разработки против скорости выполнения, экосистема библиотек и типичные сценарии, где каждый язык раскрывается лучше всего.