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