Первая программа: от текста к исполняемому файлу | Курс по Nim, урок 3
Необходимые знания
Урок 1, Терминал и папки: первые команды: команды pwd, ls, mkdir, cd. Урок 2, Установка Nim и компилятора: компилятор, PATH, команда cd ~.
Чем закончился урок 2
Nim и компилятор C установлены, кода пока нет.
Исходный файл и исполняемый файл
Исходный файл, это текстовый файл, в котором записана программа. Имя исходного файла на Nim заканчивается на .nim.
Исполняемый файл, это готовая программа, которую компилятор собирает из исходного файла. На Windows его имя заканчивается на .exe, на Linux и macOS окончания нет.
Редактор и кодировка
Исходный файл пишут в текстовом редакторе, программе для набора текста без оформления. Кодировка это способ записи букв в файл. Подойдёт любой редактор, который сохраняет файл в кодировке с названием UTF-8. При другой кодировке русские буквы могут исказиться.
Редакторы урока:
1) Windows: Блокнот.
2) Linux и macOS: nano, редактор внутри окна терминала.
Инструкции для macOS написаны по документации, на Mac команды не запускались.
Папка курса
Файлы курса лежат в папке nim-kurs, вы создали её в задании урока 1. Откройте новое окно терминала.
Наберите по очереди:
cd ~
cd nim-kurs
Если команда cd nim-kurs выдала ошибку, папки нет. Создайте её командой mkdir nim-kurs и снова наберите cd nim-kurs.
Первая программа
Наберите в PowerShell:
notepad privet.nim
Блокнот спросит, создать ли новый файл. Нажмите "Да".
Наберите в Linux и macOS:
nano privet.nim
Если терминал не нашёл nano, на Ubuntu наберите sudo apt install nano и повторите команду. В другом дистрибутиве Linux сохраните файл в nim-kurs любым редактором.
В окне редактора наберите три строки программы, в Блокнот их можно скопировать. # и кавычки вводятся в английской раскладке. Пробелы слева не ставьте.
Пример privet.nim
# Первая программа курса
echo "Привет, Nim!"
echo "Вторая строка"
Сохраните файл:
1) Блокнот: меню "Файл", пункт "Сохранить".
2) nano: нажмите Ctrl+O (на Mac control+O), затем Enter. Потом Ctrl+X: редактор закроется, снова появится приглашение.
Первая строка, это комментарий. Знак # и текст за ним до конца строки компилятор пропускает. Комментарий пишут для человека.
echo печатает текст, стоящий после него в двойных кавычках. Каждый echo печатает с новой строки.
Сборка и запуск: nim c -r
На Windows щёлкните по окну PowerShell, Блокнот можно не закрывать. Переключите раскладку на английскую.
Наберите:
nim c -r privet.nim
Буква c означает сборку. -r это ключ, добавка к команде. Этот ключ запускает программу после сборки.
Вывод начинается со служебных строк о сборке. Hint значит подсказка, это не ошибка. Ваша программа напечатала две последние строки.
Вывод в PowerShell:
Hint: used config file 'C:\Users\Anna\nim-2.4.0\config\nim.cfg' [Conf]
Hint: used config file 'C:\Users\Anna\nim-2.4.0\config\config.nims' [Conf]
........................................................................
Hint: codegen mm: orc; threads: on; opt: none (DEBUG BUILD, `-d:release` generates faster code)
30611 lines; 0.404s; 37.293MiB peakmem; proj: C:\Users\Anna\nim-kurs\privet.nim; out: C:\Users\Anna\nimcache\privet_d [SuccessX]
CC: system/exceptions.nim
CC: std/private/digitsutils.nim
CC: system/dollars.nim
CC: std/exitprocs.nim
CC: std/syncio.nim
CC: system.nim
CC: privet.nim
Hint: [Link]
Hint: mm: orc; threads: on; opt: none (DEBUG BUILD, `-d:release` generates faster code)
11024 lines; 1.530s; 15.852MiB peakmem; proj: C:\Users\Anna\nim-kurs\privet.nim; out: C:\Users\Anna\nim-kurs\privet.exe [SuccessX]
Hint: C:\Users\Anna\nim-kurs\privet.exe [Exec]
Привет, Nim!
Вторая строка
Вывод в Linux:
Hint: used config file '/home/anna/.choosenim/toolchains/nim-2.4.0/config/nim.cfg' [Conf]
Hint: used config file '/home/anna/.choosenim/toolchains/nim-2.4.0/config/config.nims' [Conf]
.........................................................................
Hint: codegen mm: orc; threads: on; opt: none (DEBUG BUILD, `-d:release` generates faster code)
32936 lines; 0.187s; 37.32MiB peakmem; proj: /home/anna/nim-kurs/privet.nim; out: /home/anna/.cache/nim/privet_d [SuccessX]
CC: system/exceptions.nim
CC: std/private/digitsutils.nim
CC: system/dollars.nim
CC: system.nim
CC: privet.nim
Hint: [Link]
Hint: mm: orc; threads: on; opt: none (DEBUG BUILD, `-d:release` generates faster code)
11024 lines; 0.461s; 15.836MiB peakmem; proj: /home/anna/nim-kurs/privet.nim; out: /home/anna/nim-kurs/privet [SuccessX]
Hint: /home/anna/nim-kurs/privet [Exec]
Привет, Nim!
Вторая строка
Числа у вас будут свои. Длинные строки окно может переносить. Строки по порядку:
1) [Conf]: файлы настроек, которые прочитал Nim.
2) Точки: Nim обрабатывает файлы.
3) codegen и первая [SuccessX]: Nim перевёл программу на C, в out: указана папка с файлами на C.
4) CC:: компилятор C собирает файл. Кроме privet.nim, здесь файлы самого Nim.
5) [Link]: собранные файлы соединяются в исполняемый файл.
6) Hint: mm: и вторая [SuccessX]: сборка закончена, в out: указан исполняемый файл.
7) [Exec]: программа запущена.
8) Вывод вашей программы.
Смотрите на пункты 6 и 8: где лежит исполняемый файл и что напечатала программа.
Только вывод программы: --hints:off
Ключ --hints:off выключает служебные строки. Сообщения об ошибках остаются.
Наберите:
nim c -r --hints:off privet.nim
Вывод в PowerShell и Linux:
Привет, Nim!
Вторая строка
Запуск без компилятора
Наберите:
ls
Вывод в PowerShell, время и размеры у вас будут свои:
Каталог: C:\Users\Anna\nim-kurs
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 31.10.2026 14:23 280191 privet.exe
-a---- 31.10.2026 14:23 104 privet.nim
Вывод в Linux:
privet privet.nim
Рядом с privet.nim появился исполняемый файл.
Запись .\ или ./ указывает на текущую папку. Текущей папки нет в PATH, поэтому без этой записи терминал не найдёт программу.
Наберите в PowerShell:
.\privet.exe
Наберите в Linux и macOS:
./privet
Программа печатает те же две строки.
Ошибки в этих командах
В выводе Error. Если такого сообщения нет ниже, сравните файл с примером символ в символ, исправьте и соберите заново. Такое сообщение разберу в уроке 4.
Вместо русских букв значки. Файл сохранён в другой кодировке. Компилятор собирает такой файл без ошибок, искажение видно при запуске.
Вывод в PowerShell:
������, Nim!
������ ������
Исправьте кодировку в Блокноте:
1) наберите notepad privet.nim
2) откройте меню "Файл", пункт "Сохранить как"
3) в списке "Кодировка" замените значение, например ANSI, на UTF-8
4) в списке "Тип файла" выберите "Все файлы", иначе Блокнот допишет к имени .txt
5) нажмите "Сохранить", подтвердите замену
6) соберите заново: nim c -r privet.nim
В другом редакторе выберите UTF-8 при сохранении.
Ошибка со значками в кавычках. Файл в кодировке UTF-16 не собирается, исправление то же. Строка ошибки в PowerShell:
C:\Users\Anna\nim-kurs\privet.nim(1, 1) Error: undeclared identifier: '��'
Программа ничего не напечатала. Файл не сохранён: Блокнот создал его пустым. Сохраните файл и снова наберите nim c -r privet.nim.
Файл не найден. В текущей папке нет файла с таким именем. Строка ошибки в PowerShell и Linux:
Error: cannot open 'privet.nim'
Перейдите в nim-kurs и проверьте имя командой ls. Если там privet.nim.txt, Блокнот дописал .txt. Исправьте имя командой mv privet.nim.txt privet.nim: старое имя, затем новое.
Программа без .\ или ./. PowerShell печатает то же сообщение, что для lss в уроке 1, только с именем privet.exe. Linux печатает:
bash: privet: command not found
Наберите .\privet.exe в PowerShell, ./privet в Linux и macOS.
Задание
Создайте в папке nim-kurs файл traty.nim. Это начало проекта курса, программы учёта своих расходов. Программа печатает две строки: первая Учёт трат, вторая на ваш выбор.
Соберите и запустите её:
nim c -r --hints:off traty.nim
Затем запустите исполняемый файл без компилятора: .\traty.exe в PowerShell, ./traty в Linux и macOS.
Верно, если:
1) первая строка Учёт трат, обе читаются без искажений
2) ls показывает в папке traty.exe, на Linux и macOS traty
3) исполняемый файл, запущенный без компилятора, печатает те же две строки
Не удаляйте файл traty.nim, с него начнётся урок 4.
К уроку 4 поставьте редактор кода: VS Code или Zed. Это текстовый редактор для программ: показывает файлы папки и номера строк. Дальше файлы пишите в нём.
Итоги
Компилятор собирает из исходного файла исполняемый. Команда nim c -r ещё и запускает его. Ключ --hints:off убирает служебные строки. Исходный файл сохраняйте в UTF-8.
В уроке 4 разберу ошибку компилятора: где в сообщении стоят файл, строка и столбец.
Код урока
Примеры этого урока лежат в репозитории курса, папка lesson_03.
Предыдущий урок: Установка Nim и компилятора
Следующий урок: Ошибка компилятора: как её читать
Подписывайтесь на мой Telegram канал
Авторизуйтесь, чтобы оставить комментарий.
Нет комментариев.
Тут может быть ваша реклама
Пишите info@aisferaic.ru