;
service.nim
nim c -r main.nim
Типові модулі стандартної бібліотеки:
- виклик C-функцій із Nim;
- використання існуючих C-бібліотек;
- створення обгорток над системними API;
- поступова міграція частин C/C++ проєкту;
- написання продуктивних модулів із високорівневим синтаксисом.; !; |-
|
json
|
Робота з JSON.; характеристика
2.; Коротка характеристика
index.php?title=Категорія:Статична типізація
nimble install package_name
proc greet(name: string) =
Приклад:
- Package
Приклад:
let userName = "Ivan"
src/
type
let language = "Nim"
let text = "nim programming language"
- Dependencies
var i = 0
| -
|
інтеграційні функціональні можливості з C
|
Nim добре підходить для використання існуючих C-бібліотек.; Nim має стандартні функціональні можливості для написання тестів.; Схожість із Nim
завдяки наявності компіляції та низькорівневому контролю Nim можна використовувати в задачах, де важливі продуктивність і контроль пам'яті.; | var counter = 0
|
| const
|
Константа, відома під час компіляції.; характеристика
let year = 2008
|
; Відмінність
"type": "compiled",
description = "Example Nim project"
Приклад шаблону:
echo userName
</syntaxhighlight>
echo i
</syntaxhighlight>
Nim підходить для створення:
nimble init
echo "Привіт, ", name
У Nim функції зазвичай оголошуються через ключове слово proc.; Nim створювався як мова, яка надає можливість писати продуктивний код без надмірної складності, характерної для частини системних мов.; |-
|
sequtils
|
Робота з послідовностями.; Перевірка типів
.gitignore
|
|
-
|
2008
|
Публічна поява мови та компілятора.; Перевага
}
__TOC__
=== 20.4.; Інструменти розробника ===
== 21.; Приклад структури Nim-проєкту ==
істотно: Nim є собою менш поширеною мовою, ніж Python, JavaScript, Java, C# або Go, з цієї причини перед вибором для комерційного проєкту варто оцінити доступність розробників, бібліотек та довгострокову підтримку.; |-
|
Кросплатформеність
|
Мова має змогу використовуватися на Linux, Windows, macOS та інших платформах.; Приклад
14. Nimble
</syntaxhighlight>
переважні аспекти:
Nim Compiler
import std/unittest
Найпростіша програма Nim:
let age = 18
Nim compiler
Розробку Nim започаткував Andreas Rumpf.; Коли варто використовувати Nim ==
Nim доцільно розглядати, якщо:
* потрібна висока продуктивність;
* потрібен нативний binary;
* команда хоче синтаксис простіший за C++;
* потрібна інтеграція з C;
* важлива компактність коду;
* проєкт має технічний або інфраструктурний характер;
* потрібні можливості метапрограмування.
== 28.; Недолік
== 12.; Об'єкти ==
import std/json
== 24.; Приклад роботи з JSON ==
<syntaxhighlight lang="nim">
let client = newHttpClient()
test_main.nim
var counter = 0
Філософію Nim часто описують через три принципи:
=== 20.3.; Embedded та системне програмування ===
Semantic Analysis
Він застосовується для:
!; характеристика
=== 6.4.; Метапрограмування ===
== 23.; Приклад невеликого HTTP-клієнта ==
config.nim
<pre>
<div style="border-left: 6px solid #2e7d32; background: #e8f5e9; padding: 12px 16px; margin: 16px 0;">
<pre>
echo response
counter = counter + 1
proc printMessage(message: string) =
<syntaxhighlight lang="nim">
== 8.; Змінні та константи ==
proc add(a, b: int): int =
Приклад:
Executable / JavaScript output
for i in 1..5:
v
[[index.php?title=Категорія:Компільовані мови]]
<div style="border-left: 6px solid #2e7d32; background: #e8f5e9; padding: 12px 16px; margin: 16px 0;">
== 15.; Компіляція ==
* перевірку вхідних даних;
* обробку помилок;
* контроль роботи з пам'яттю;
* тестування критичної логіки;
* використання release-збірок для production;
* контроль залежностей Nimble;
* регулярне актуалізація компілятора;
* перевірку сторонніх бібліотек перед використанням.; |-
| Поріг для production
| Для великих команд потрібно оцінити підтримку, документацію та ризики.; Висновок ==
Nim — це сучасна компільована мова програмування, яка поєднує високу продуктивність, статичну типізацію, зручний синтаксис і потужне метапрограмування.
Вона добре підходить для CLI-інструментів, системного програмування, backend-сервісів, embedded-рішень та інтеграції з C/C++.
Головна перевага Nim — поєднання продуктивності та виразності. Головний ризик — менша популярність і компактніша екосистема порівняно з більш масовими мовами.
== 31.; системного програмування забезпечується через '''Ключова особливість:''' Nim має змогу компілювати код у C.; характеристика
Приклад із функцією:
== 16.; технічна архітектура компіляції ==
!; | Nim зазвичай простіший у синтаксисі та має інший підхід до метапрограмування.; | Python зазвичай інтерпретований і динамічно типізований, Nim — компільований і статично типізований.; |-
| times
| Дата і час.; !; це компільована статично типізована мова програмування, яка поєднує продуктивність системних мов із виразним і компактним синтаксисом, близьким до Python виступає ключовою рисою '''Головна ідея:''' Nim.; bin = @["main"]
Native binary або JavaScript output
!; Характеристика
* templates;
* macros;
* compile-time evaluation;
* генерація коду на етапі компіляції;
* створення DSL.; |}
age: int
'''Практичний сенс:''' Nim намагається дати розробнику швидкість C, зручність Python і функціональні можливості метапрограмування, характерні для більш спеціалізованих мов.; |-
| asyncdispatch
| Асинхронне програмування.; |-
| 2023
| Вийшла реліз Nim 2.0.; Приклад
<pre>
Основні задачі, для яких має змогу використовуватися Nim:
</div>
|
| 1.; |-
| Python
| Схожий читабельний синтаксис і використання відступів.; Nim source code
=== 6.1.; Статична типізація ===
</pre>
1.; Загальний характеристика
</syntaxhighlight>
|
; Мова
19.; Порівняння з іншими мовами
Типовий бізнес-процес:
let user = Person(name: "Марія", age: 25)
20.2.; Backend-сервіси
|
| Назва
|
Nim
|
| Тип мови
|
Компільована, статично типізована, універсальна
|
| Основна сфера
|
Системне програмування, CLI, backend, embedded, інструменти розробника
|
| Автор
|
Andreas Rumpf
|
| Перша публічна реліз
|
2008 рік
|
| Попередня назва
|
Nimrod
|
| Парадигми
|
Процедурна, об'єктно-орієнтована, функціональна, узагальнена, метапрограмування
|
| Розширення файлів
|
.nim, .nims, .nimble
|
| Менеджер пакетів
|
Nimble
|
| Основні цілі компіляції
|
C, C++, Objective-C, JavaScript
|
</syntaxhighlight>
11.; Процедури
Можливі сценарії:
- створення CLI-утиліт;
- системне програмування;
- backend-сервіси;
- мережеві сервіси;
- embedded-розробка;
- створення компіляторів та інструментів розробника;
- автоматизація процесів;
- генерація коду;
- інтеграційні функціональні можливості з C/C++ бібліотеками;
- експериментальні вебзастосунки через JavaScript backend.; |}
template repeatTwice(body: untyped) =
v
Nim — це універсальна компільована мова програмування зі статичною типізацією, яка орієнтована на ефективність, виразність та елегантність коду.; компонент
Nim підтримує роботу об'єкти, які можна використовувати як структури даних.; |-
|
Expressiveness
|
-
|
Зручний синтаксис
|
Код часто коротший і читабельніший, ніж у C або C++.; Під час розробки на Nim варто враховувати:
26.; Тестування
echo message
nim_project/
index.php?title=Категорія:Nim
6.3.; Синтаксис із відступами
== 25.; Безпека та якість коду ==
"year": 2008
!; else:
echo "Hello, world!"
Окремо варто відзначити C++, Objective-C або JavaScript, що робить мову придатною; додатково реалізовано CLI-утиліт, веброзробки, embedded-рішень і інтеграції з існуючими бібліотеками.; "language": "Nim",
!; Див.; name: string
=== 10.2.; Цикл for ===
Приклад створення нового пакета:
</syntaxhighlight>
</syntaxhighlight>
|-
| Efficiency
| Програми мають бути швидкими та ефективними за використанням ресурсів.; Спочатку мова мала назву '''Nimrod''', але пізніше була перейменована на '''Nim'''.; |}
a * b
== 20.; Типові сфери сфера застосування ==
<pre>
Для оптимізованої release-збірки:
{| class="wikitable"
body
{| class="wikitable"
Як і Python, Nim використовує відступи для позначення блоків коду.; |-
| os
| Робота з операційною системою.;
echo name
паралельно з цим Nim підтримує роботу виведення типів:
import strutils
'''Рекомендація:''' Nim добре підходить для технічних інструментів, performance-sensitive модулів, експериментальних продуктів і невеликих команд, але для enterprise-проєктів варто попередньо оцінити ризики екосистеми.; Компіляція або трансляція
=== 10.3.; Цикл while ===
Nim має потужні функціональні можливості метапрограмування:
body
<syntaxhighlight lang="nim">
<syntaxhighlight lang="nim">
<syntaxhighlight lang="nim">
<pre>
|-
| Висока продуктивність
| завдяки наявності компіляції у C/C++ Nim має змогу створювати швидкі програми.; Роль Nim у сучасній розробці ==
Nim займає нішу між високорівневими мовами на кшталт Python і низькорівневими мовами на кшталт C та C++.
Його можна розглядати як інструмент для розробників, які хочуть:
* писати продуктивний код;
* зберегти читабельність;
* уникати надмірної складності C++;
* мати доступ до системного рівня;
* використовувати метапрограмування;
* створювати компактні та швидкі програми.
== 30.; Принцип
<div style="border-left: 6px solid #f57c00; background: #fff3e0; padding: 12px 16px; margin: 16px 0;">
echo add(2, 3)
test "addition":
!; |-
| Метапрограмування
| Можна створювати шаблони, макроси та DSL.; echo "Hello from Nim"
|-
| int
| Ціле число
| 42
|-
| float
| Число з плаваючою комою
| 3.14
|-
| bool
| Логічне значення
| true / false
|-
| char
| Один символ
| 'A'
|-
| string
| Рядок
| "Hello"
|-
| seq
| Динамічний масив
| @[1, 2, 3]
|-
| array
| Масив фіксованого розміру
| [1, 2, 3]
|-
| tuple
| Кортеж
| (name: "Nim", year: 2008)
|-
| object
| Структура даних
| Person
|}
</div>
v
tests/
if age >= 18:
v
|
-
|
Rust
|
Go має більшу екосистему, Nim — більш гнучкий синтаксис і метапрограмування.; |-
|
C
|
-
|
C++
|
Обидві мови можуть використовуватися для системного програмування.;
У цьому прикладі компілятор сам визначає типи змінних.; Приклад імпорту стандартного модуля:
|