Радость вычислительной разметки
9 января 2023 г.В статье Радость использования разметки SECST я представил SECST (S эмантическая, Cвычислительная, Sстилизованная, Tотмеченная) разметка, более выразительная альтернатива- и частичное надмножество-Markdown. Хотя в нем подробно не рассматривается совместимость SECST с Markdown, вы можете сначала прочитать его, чтобы получить общее представление о синтаксисе SECST. В этой статье я расскажу о возможностях вычислительной разметки SECST.
Читатели, знакомые с Jupyter и Observable, будут знакомы с вычислительными блокнотами на основе Markdown. Эти платформы в первую очередь ориентированы на специалистов по работе с данными, и, откровенно говоря, они просто потрясающие!
Но что, если…
* Вы не специалист по работе с данными, вам просто нужна математика в вашем документе, и вы должны убедиться, что значения для формул верны! * Вы учитель, которому нужно написать учебник по математике. * Вы специалист по данным, но иногда вам нужно что-то более легкое, не требующее специального хостинга или подписки.
Затем вы можете получить удовольствие от вычислительных возможностей SECST.
Основные вычисления
На самом базовом уровне вычисления SECST не сложнее, чем простые формулы Excel.
:value[2 * 2]
будет отображаться как 4
Результат будет иметь стиль кода (обычно моноширинный шрифт с серым фоном), чтобы указать читателям, что значение вычислено. Однако вы можете предоставить простой текст
в качестве опции, например,
:value(plaintext)[2 * 2]
будет отображаться как 4.
SECST также имеет всю выразительную мощь Excel и многое другое, когда дело доходит до математических формул. Вот все доступные типы вычислений:
* Алгебраический * Арифметика * Побитовый * Комбинаторика * Сложный * Геометрия * Логический * Матрица * Вероятность * Относительный * Поставил * Особенный * Статистика * Нить * Тригонометрия * Ед. изм * Утилита
Честно говоря, это просто потому, что SECST использует библиотеку MathJS. Но авторам SECST не нужно беспокоиться о том, как включить эту функциональность. Он просто есть, поэтому возможны такие вещи:
* :value(plaintext)[derivative('x^2 + x', 'x')]
отображается как 2 * x + 1.
* :value(plaintext)[simplify('x^2 + x + 3 + x^2')]
отображается как 2 * x ^ 2 + x + 3.
* :value(plaintext)[solve('Math.pow(r,2)',{r:3})}]
отображается как 9.
* :value(plaintext)[multiply([[1,2],[3,4]],[[5,6],[1,1]])]
отображается как [[7 ,8],[19,22]].
Также возможны такие преобразования единиц измерения:
* :value[2 дюйма в см]
= 5,08 см
* :value[от 90 км/ч до миль/ч]
= 55,92340730136006 миль/ч
* :value[от 90 км/ч до м/ч]
= 9000 м/ч
м/ч
— это метры в час
* :value[(1 неделя + 1 день) в дни]
= 8 дней
* :value[cos(45 градусов)]
= 0,7071067811865476
* :value[8,314 м^3 Па / моль / K]
= 8,314 (м^3 Па) / (моль K)
Расширенные вычисления
Вы можете именовать значения, чтобы их можно было использовать в других выражениях значений. Кроме того, читатели могут редактировать содержимое для использования в формулах.
Вот пример, который охватывает оба случая:
The derivative of :value(#formula literal editable)[x^2 + x]
for :value(#variable literal editable)[x]
is :value[derivative($(#formula),$(#variable))]
будет отображаться как:
Производная от [ x^2 + x ] для [ x ] равна 2 * x + 1
Если пользователь не изменит формулу на x^3 + x
, в этом случае результатом будет 3 * x^2 + 1
.
Очевидно, что это немного сложнее, чем преобразование единиц измерения, поэтому вот объяснение…
- Теги значений предоставляют пользователю поле редактирования, если они настроены как
редактируемые
. - Значения могут быть названы с помощью
#ids
. Выше мы называем формулу, которую нужно ввести,#formula
и переменную, которую необходимо вычислить для#variable
. - По умолчанию содержимое тега
:value[]
, заключенное в квадратные скобки, считается выражением, которое можно вычислить. Таким образом, в приведенном выше SECST указано обрабатывать содержимое каклитерал
. - Наконец, к именованным переменным можно получить доступ в выражениях
:value
, используя синтаксис$(#<имя-переменной>)
. Следовательно, последним шагом выше является оценкапроизводной
с использованием формулы и переменной, введенной читателем.
Интерактивные вопросы
SECST даже может отображать вопросы и проверять ответы.
:question({type:"number",showanswer:true})[
:text[What is the :code[sqrt(4)]?]
:answer[2]
]
будет отображаться как
Что такое sqrt(4)? [ ____ ] ✓
Если пользователь вводит неправильный ответ, вопрос будет выделен красным, и будет показан правильный ответ, поскольку для атрибута showanswer
установлено значение true
.
Что такое sqrt(4)? [ 3 ] ✓ Правильный ответ: 2
Если вы учитель, я уверен, что в какой-то момент вы дали неправильный ответ в учебнике. SECST может помочь избежать этого. Тег :answer
может принимать выражение точно так же, как и тег :value
. Замените приведенный выше вопрос на:
:question({type:"number",showanswer:true})[
:text[What is the :code[sqrt(4)]?]
:answer[sqrt(4)]
]
Подробнее
REPL пока недоступны, но до них осталось всего несколько дней. См. статью Как разместить REPL для предварительного просмотра. Я опубликую статью о SECST, когда она будет готова.
Язык SECST и транспилятор в настоящее время находятся в версии ALPHA под лицензией AGPL версии 3.0.
На https://secst.org можно найти больше информации.
Будь радостным! Заставь вчера позавидовать!
Мне бы хотелось, чтобы вы оставили отзыв здесь или на GitHub.
Рекомендуемое фото Бекки Монжо на Pexels
Оригинал