Випуск 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 та легковажних контейнерах, це і система зберігання
та система доставки повідомлення – єдина мова, яка реально потрібна на підприємстві.