Перейти к основному содержимому

Простые приложения на Nim

Разработчику Архитектору

Простые приложения на Nim

Nim компилируется в C/C++/JS: синтаксис похож на Python, производительность — как у нативного кода. nim c -r app.nim для запуска.

Как запускать примеры из главы

  1. Команда: nim c -r имя.nim (сборка и запуск).
  2. Проверка: nim --version.

Генератор паролей

Как запустить

  • Файл: password.nim
  • Команда: nim c -r password.nim
import std/random, strutils

proc generatePassword(length = 16): string =
const chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
result = newString(length)
for i in 0 ..< length:
result[i] = chars[rand(chars.len)]

echo generatePassword()

Сортировщик файла

import std/[strutils, algorithm, os]

proc sortFile(input, output: string) =
let lines = readFile(input).splitLines().map(strip).filterIt(it.len > 0)
writeFile(output, lines.sorted().join("\n") & "\n")

JSON-трекер

import std/[json, os]

type Task = object
id: int
title: string
done: bool

proc load(path: string): seq[Task] =
if not fileExists(path): return @[]
let data = parseJson(readFile(path))
for item in data: result.add Task(
id: item["id"].getInt,
title: item["title"].getStr,
done: item["done"].getBool
)

HTTP (httpclient)

import std/httpclient

let client = newHttpClient()
echo client.getContent("https://example.com")[0..<200]

Характерный пример — макросы и result

proc wordCount(text: string): Table[string, int] =
result = initCountTable[string]()
for w in text.splitWhitespace():
result.inc(w)

result — неявная переменная возврата; initCountTable — идиоматичный подсчёт.


См. также: Python (близкий синтаксис)

См. также

Другие статьи этого же раздела в боковом меню (как на странице «О разделе»).