Loment
RU

Обучение

Изучение Loment

Есть три места, куда смотреть, и сильнейшее из них — инструментальная цепочка, которая объясняет себя сама: она может напечатать весь язык, перечислить все встроенные функции, какие есть, и сказать, что означает любой код ошибки, который она вам выдаст. Эта страница даёт порядок, который имеет смысл, и ставит то, чего не хватает на каждом шаге, рядом с шагом.

Не хватает обучения, а не материала. Руководство — это справочник, а не учебник, и оно написано по-китайски; как и записи о проектировании. Где ресурс ниже неполон или никогда не использовался так, как собираетесь использовать его вы, — эта страница говорит об этом, а не оставляет вам выяснять самому.

Запустите что-нибудь, прежде чем что-либо читать

Здесь ничего не нужно понимать заранее. Установите пакет из последнего выпуска — в Windows берите zip, а не установщик — и команда, которая создаёт вам отправную точку, сама является программой на Loment:

$ loment new hello        # writes hello.lomt; it will not overwrite one$ loment run hello.lomt   # compile, link, run — the exit code is the program's

Путь «скомпилировать и запустить» не требует ни Python, ни clang, ни WSL. Что он производит и почему — на странице Начало; два вида артефактов, которые он может произвести, — на главной странице.

Язык — за один присест

Весь язык доступен как один прокомментированный файл, и команда, которая его печатает, поставляется с инструментальной цепочкой, а не живёт на этом сайте. Прочитайте его сверху донизу один раз — и вы увидели каждую конструкцию, какая есть: язык строился так, чтобы это выдержать, а не чтобы его учили по одной возможности за раз.

Есть также письменное руководство, и оно намеренно самодостаточно: копия внутри установленного пакета — тот же файл, что и в репозитории, так что его можно читать без сети, и критерий проекта в том, что эти две копии остаются идентичными.

$ loment example tour    # the language as one commented source file$ loment skill --print   # the written guide, printed in full

Две вещи о первой из этих команд, прежде чем вы её запустите. Комментарии в tour — на китайском, и в текущем опубликованном выпуске именно этот файл не компонуется: это известный дефект самоподдерживающегося компоновщика, и те четыре программы на странице «Примеры» — те, что проверены на запуск. Руководство, которое печатает вторая команда, — на английском.

Ищите справку, не выходя из терминала

Это та часть, что действительно необычна, и её стоит попробовать, даже если вы не собираетесь пользоваться языком. Инструментальная цепочка и есть справочник. Каждая из этих команд читает из установленного пакета, так что они работают без сети и отвечают о версии, которая у вас на самом деле есть, а не о том, что в последний раз сказал сайт.

$ loment cheat            # the whole language on one page$ loment syntax           # the syntax on one page$ loment builtins         # every built-in function there is$ loment keywords         # the reserved words$ loment explain E4       # what a diagnostic means, and what to change

Последнюю стоит запомнить. Код ошибки сам по себе — это число; инструментальная цепочка хранит фразу, которая к нему идёт, и скажет вам, на что возражал компилятор и в какую сторону двигаться. loment help без аргумента перечисляет остальное, а вики содержит длинную форму.

Ищите справку в текстах

Руководство

Генерируется из компилятора и корпуса примеров и поставляется в репозитории: спецификации и справочник по API для каждого входящего в поставку примера-модуля. Написан на китайском, и это справочник, а не руководство, — он говорит, что вещь есть, а не что с ней делать.

Вики

Тот же материал, что и на этом сайте, устроенный как энциклопедия языка: синтаксис, типы, таблица встроенных, ступени возврата памяти, коды ошибок и то, что намеренно отличается от других языков. На английском, и это то место, куда идти, когда нужна одна страница об одной вещи.

Записи о проектировании

За каждым решением в этом языке стоит пронумерованный документ, который приводит доводы и называет, чего это стоило. Они написаны на китайском, и они не для обучающихся, — но когда страница здесь или в вики говорит «так велит проектирование», вот где это.

Учитесь, читая код

В репозитории лежит корпус примеров программ, и инструментальная цепочка может напечатать любой из них, не открывая браузера:

$ loment examples        # what is bundled$ loment example demo    # print one of them in full

Для более мягкого начала те четыре программы на этом сайте коротки, и каждая показывает вывод, который она в самом деле произвела. Полный корпус — в репозитории в каталоге loment/examples/, и не каждый файл в нём сегодня компонуется.

Пусть редактор помогает вам

Расширение для VS Code есть в магазине расширений под именем hooyan2022.loment — найдите Loment в панели расширений. Что языковой сервер делает — это по-настоящему: диагностика от проверяльщика по мере набора, автодополнение, переход к определению и форматирование — через отдельный форматировщик, а не самим сервером. Есть файлы и для Vim, а сервер говорит на LSP через stdio, так что подключиться может любой редактор с клиентом.

Расширение — это клиент, а не компилятор. Оно не несёт инструментальной цепочки: языковой сервер, сборка и отладчик запускают программы из локальной копии Loment, которую находят, поднимаясь вверх от открытой у вас папки. Установите его и откройте файл, когда локальной копии рядом нет, — и вы получите подсветку синтаксиса и больше ничего: это стоит знать, прежде чем заключить, что расширение сломано.

Три пробела, о которых стоит знать, прежде чем полагаться на него. Нет межфайлового индекса символов, так что автодополнение и переход к определению видят только текущий документ. Сервер не объявляет возможность форматирования; форматирование — отдельная программа. И собственные заметки проекта говорят, что сервер никогда не запускался в настоящем редакторе вручную: его тесты вызывают тот же обработчик запросов напрямую. У отладчика свои пробелы: нет условных точек останова, нет вычисления выражений, а локальные переменные — это регистры, а не имена. Страница о редакторе в вики перечисляет их полностью.