ТЕХ

ЩО Є N2O НАСПРАВДІ?

N2O — це формальна філософія та інженерна вправа водночас. Вона обмежує автора бути ефективним та точним не втрачаючи при цьому повноти та функціональності. Це накшталт внутрішньої дисципліні при проектуванні програмного забезпечення. Ця філософія більше 8 років застосовується на практиці для побудови систем SYNRC, та визначає стандартний мінімальний набір для демонстрації однієї з сучасних моделей реактивного веб-програмування, яка включає: веб-сокет веб-фреймвок з бінарною серілізацією, пушами та контролем DOM елементів зі сторони сервера. N2O вчить будувати прості та надійні системи на будь-якій мові програмування.

Мови програмування розділені на чотири рівня як для клієнтської (мобільної та веб розробки) так і для серверної розробки (бекенд системи). Нульовий рівень — тотальні формальні алгебраїчні мови програмування, що забезбечують повноту, функціональність та доведення властивостей прогрм згідно сучасних уявлень про математичне моделювання та системи залежних типів побудованих на розшаруваннях. Перший рівень — формальні функціональні мови програмування, як правило System F, System Fω які успішно використовуються в промисловості та забезпечують достатньо формальний запис який піддається масштабуванню у великих командах завдяки потужному ядру компіляторів. Другий рівень — неформальні (без формальної операційної чи денотаційної семантики) чи формальних верифікаторів, які проте успішно використовуються в промисловості, можуть бути як з розвиненими системами типів з узагальненими шаблонами та типами сумами, так і однотипними мовами програмування з динамічною типізацією. Третій рівень — мови які погано піддаються масштабуванню у промисловому виробництві (на основі спостережень за власним досвідом).

  • Client Tier 3:(JavaScript、Lua)
  • Client Tier 2:(Swift、Kotlin、TypeScript)
  • Client Tier 1:(UrWeb、OCaml)
  • Client Tier 0:(Formality)
  • Server Tier 3:(PHP、Python、Perl、Ruby)
  • Server Tier 2:(Erlang、Elixir)
  • Server Tier 1:(Standard ML、Haskell、F#、Rust)
  • Server Tier 0:(Coq、Agda、Lean)

Філософія N2O визначає структуру операційних середовищ (runtimes) як операційну систему лямбда-інтерпретаторів які працюють на паралельному обчислювальному середовищі (ядрах процесорів). Кожне з ядер процесорів виконує в нескінченному циклі команди лямбда-інтерпретаторів, переключаючи через певний проміжок часу на потік команд іншого інтерпретатора. Таке визначення дає змогу вбудувати цю структуру у віртуальну машину Erlang.

  • Головний процес додатку
  • Супервізор додатку
  • Проміжні супервізори
  • Кінцеві пул процесорів повідомлень

Client Tier 3 —(JavaScript、Lua):

N2O.JS CLIENT

ECMAScript клієнтська інфраструктура для усіх рівнів N2O специфікації.

  • UTF-8.JS — UTF-8 серіалізація
  • IEEE-754.JS — Бінарний формат представлення дійсних чисел
  • ZLIB.JS — ZLIB декомпресія термів
  • ETF.JS — Erlang Term Format серіалізатор
  • N2O.JS — N2O/WebSocket JavaScript протокольний цикл
  • MQ.JS — N2O/MQTT JavaScript протокольний цикл
  • NITRO.JS — NITRO/JavaScript біндінги для DOM джерел
  • VALIDATION.JS — NITRO/JavaScript валідація DOM джерел

Server Tier 2 —(Erlang、Elixir):

SYNRC ERLANG N2O.DEV

These repos brought us money.


O7 ELIXIR

These repos was requested by Elixir community.

  • o7/sample — SAMPLE 1.1.1 Simple Chat with File Upload
  • o7/n2o — N2O 7.12.0 Cowboy-nased WebSocket Server
  • o7/kvx — KVS 7.11.5 Abstract Chain Database
  • o7/bpe — BPE 5.12.0 Business Process Engine
  • o7/nitro — NITRO 5.12.4 Nitrogen Web Framework

Server Tier 1 — (SML、Haskell、F#、Rust):

O1 STANDARD ML

This is first System-F implementation for SML/NJ and MLton.

  • o1/n2o — N2O 0.11 WebSocket Server
  • o1/nitro — NITRO 0.11 Nitrogen Web Framework

O3 HASKELL

This is second System-F implementation.

  • o3/n2o — N2O 0.11 WebSocket Server
  • o3/nitro — NITRO 0.11 Nitrogen Web Framework
  • o3/sample — SAMPLE 0.11 Simple Sample

O61 F#

This is third System-F implementation.

  • o61/ws — WS 1.0 WebSocket Server
  • o61/etf — ETF 1.0 Erlang Term Format Serializer
  • o61/nitro — NITRO 1.0 Nitrogen Web Framework

O83 RUST

This is proof-of-concept of formal CPS interpreter with SMP runtime.

Server Tier 0 — (Coq、Agda、Lean):

O89 LEAN4

This is LEAN 4 N2O full-stack.



O29 COQ

Coq.io based system-level Coq programming.

HEART ADVICE

Each language, N2O TECH is implemented in, should embed its philosophy most naturally and compact. If some layer between the base library of a language is needed, it could be provided, but it should be reduced to zero if possible. In some cases, some parts of a base library could be replaced with better replacement. N2O should provide client companion library usually implemented in a different set of client languages: JavaScript, Swift, Kotlin. If you did everything right, N2O should not be more than 500 LOC in any language.