Енциклопедія
Мов
Програмування

Предмова
редакторів

ЕНЦИКЛОПЕДІЯ МОВ ПРОГРАМУВАННЯ — довідкове видання з мов програмування всіх типів. Основу енциклопедії складають оглядові статті для кожної з існуючих мов (по можливості). Головна вимога до статей цієї енциклопедії - короткий і лаконічний, бажано формальний опис основних технічних характеристик: 1) синтаксису або граматики, представленої у вигляді BNF-нотації; 2) внутрішнього синтаксичного дерева у вигляді типу-суми; 3) семантики або внутрішньої логіки мови, її обчислювача, типовивідника, компілятора, екстрактора або валідатора моделей [представлено буде лише для простих мов існуючих у відкритому доступі]. Також статті містять короткий нефорамальний опис мови, її мотивацію, розкриття контекстної інформації, авторський коментар від користувача мови, основні переваги та недоліки. Статті класифікуються за розміром на три групи: короткі нотатки, коментарі користувачів та історичні довідки. Останні використовуються для мов з великою кількістю реалізацій та/або багатьма версіями синтаксисів.

Індекс першого рівня — головний каталог енциклопедії формувався на підставі зручності читання з мобільних пристроїв, тому кількість мовних категорій кратна 2, 3 і 6 колонкам. Усього, залежно від обраного набору категорій, директорія енциклопедії містить від 18 до 24 категорій. Принцип розташування статей енциклопедії – категорійний, усередині категорії – алфавітний.

Наприкінці енциклопедії буде поміщений предметний покажчик, куди увійдуть основні поняття з галузі теоретичної інформатики, необхідні для розуміння устрою мов. Кожна стаття супроводжується списком літератури для дослідження та самостійного вивчення мови.

  • Олександр Тємєрєв (CERN)
  • Максим Сохацький (Групоїд Інфініті)

Випуск 1: BSV, ARM, Rust

Оскільки створення енциклопедії — це важкий і довгий шлях, статті будуть з'являтися послідовно, але як виняток перший випуск міститиме відразу три мови з різних категорій: BSV, ARM і Rust. Поєднує їх те, що всі ці мови є функціональними мовами програмування, та їх трьох достатньо для повного циклу виведення мікропроцесорної архітектури на ринок: 1) Мова BSV для опису логічних елементів, регістрів, лічильників, АЛП тощо; 2) Мова асемблера для конкретної архітектури команд – ARM. Існує робота 2018 Пекрідіса Георгіоса з Технічного Університету Криту, присвячена реалізації архітектури ARM за допомогою мови BSV; 3) Високорівневої мови для системного програмування Rust з просунутими гарантіями безпеки (яка завдяки LLVM компілює в тому числі і в ARM).

Випуск 2: Julia, Erlang, Mathematica

Цей випуск трохи академічний, Математика тут виступає як дослідницький фронтенд рісерчера, а Джулія і Ерланг як квантова дуальність Стрім Процесінгу і Пі калкулуса поєднує в собі і динамічну природу окрестратора (Ерланга) і статичну (LLVM) природу векторних кросплатформенних оптимізацій. Хоча Математика багато в чому суперечливий продукт (і мова), але її головна перевага в тому, що вона чітко позначає напрямок мови, яка ідеально підходить для блокнотів типу Jupyter, в яких зручно запускати сніпети, робити візуалізацію багатовимірних функцій і проводити аналіз даних. У той же час Mathematica і серія APL-подібних мов типу K поділяє спорідненість по M-expressions [], другому типу скобочок на додаток до синтаксичних дерев S-expressions ().

Випуск 3: Lisp, Standard ML, Erlang

Багато хто ставить питання собі чи іншим які мови вчити, так щоб можна було взяти стандарт на мову, і він був пристойним, імплементація першокласна, наявність зрілих проектів розроблених за різними методологіями, швидкодія, швидкість прототипування. Так, щоб можна було взяти і займаючись, сфокусуючись виключно на них, досягти якщо не гарантованого просвітлення, то хоча б інженерної реалізації. Ця трійка містить: LISP, Standard ML та Erlang. 1) МакКарті придумав синтансис LISP спеціально для засобів дебага Черч-кодування, а мова ядра та його примітиви eval, apply, let, lambda, cons, nil, cond складають основні інтро та елімінатори теорії типів. Хоча мова досить проста, існує безліч промислових і зрілих реалізацій з розвиненими засобами налагодження та профілювання. Мова LISP — це те, чим ми займаємося, коли пишемо AST парсери, вона завжди невидима і присутня в програмуванні. Хто його не бачить, раджу провести кілька років, вивчаючи LISP. 2) Standard ML - це мова з потужною системою модулів для забезпечення поліморфного лямбду обчислення не тільки у вигляді System F, але з функторами на модулях. Standard ML примітний тим, що це одна з небагатьох мов для якої існує не тільки формальна специфікація за якою побудовано "безліч" імплементацій, але і була побудована формальна метатеорія на логічному фреймворку Twelf і доведено звучання та повнота обчислювальної семантики. Це той рівень якості, яким можуть похвалитися дуже небагато мов, особливо такі потужні як SML. 3) Ерланг розвиває другу область мислення - модальнішу, більш симетричну, більш багатопроцесорну. Ерланг, як і Лісп, пропонує нетипізовані примітиви мови ядра spawn, receive, send, які вбудовуються в свою модальну теорію типів — мову числення процесів Мілнера. Лінійна теорія типів, що містить невідворотність часу для коіндуктивних потоків управління, є прямою мовною моделлю також і для квантової схемотехніки. Не можна отримати досвід Ерланга за межами Ерланга, цей той фреймворк оркестрації, про який ви мріяли в OSGi та легковажних контейнерах, це і система зберігання та система доставки повідомлення – єдина мова, яка реально потрібна на підприємстві.