169 похожих чатов

Такое - это какие свойства компилятора? То что один компилятор

может и в символьные вычисления, и в нативный код?

3 ответов

25 просмотров

https://arxiv.org/abs/2008.05166 — это описание проблем. Решение в компиляторе -- это тренд с использованием "языка" mDAE вместо ODE для физического моделирования похож на создание разных языков программирования для решения expression problem в самой computer science (https://en.wikipedia.org/wiki/Expression_problem, https://eli.thegreenplace.net/2016/the-expression-problem-and-its-solutions, объяснение "на пальцах" https://arstechnica.com/science/2020/10/the-unreasonable-effectiveness-of-the-julia-programming-language/). Суть этой expression problem ровно в том же: разработка библиотек универсальных вычислительных элементов требует от языков программирования и реализующих их компиляторов возможности добавлять новые объекты для старых операций и новые операции для старых объектов, чтобы не нужно было переписывать весь код программы. В mDAE против ODE так же, только мы протягиваем обсуждение программных объектов и операций до моделируемых физических сущностей: или ты делаешь язык, на котором разные функциональные объекты описываются разными наборами уравнений, и просто добавляешь эти модели друг ко другу, или в языке у тебя такой возможности нет. Если не решил эту "model expression problem", то тебе нельзя сделать стандартные библиотеки, оформляющие стандартные поведения функциональных объектов. Знания моделей становятся плохо переносимыми между моделями, модели плохо модифицируемыми -- каждый раз при внесении изменений нужно переписывать и перекомпилировать всю модель. (Это я просто из поста https://ailev.livejournal.com/1549559.html абзац переписал ))) Можно добавить, что это всё изводы DDD — domain driven design. Для каждого концепта "из жизни" должен быть похоже ведущий себя концепт в программе (а для этого — язык их задания, и компилятор должен поддерживать "аддидивность", "просто добавь три строчки для нового концепта куда-нибудь снизу, и всё заработает").

Viktor-G. Автор вопроса
Anatoly Levenchuk
https://arxiv.org/abs/2008.05166 — это описание пр...

Продрался я через эту книжку по первой ссылке. Там нет ничего про expression problem. Что там есть - так это про необходимость выполнять ПЕРЕД компиляцией - символьные вычисления, которые могут включать проверку и отказ от моделей DAE, выбор подходящих моделей для симуляции, определять условия рестартов для смены режима, и только ПОСЛЕ всего этого - генерировать соответствующий код симуляции. В большинстве языков это потребует отдельной программы для генерации кода и дополнительного шага сборки. Почему удобнее на Julia? Во-первых, можно выполнять произвольный код внутри макроса (перед компиляцией), во-вторых, доступен обширный список математических библиотек. Т.е. это больше про two-language problem или даже про свертку пайплайна разработки (один инструмент вместо двух). Ну и пара следствий из этого: во-первых, перед компиляцией можно обучить модельку на данных, потом сгенерировать код по параметрам модели, получить результаты симуляции, и во-вторых, можно результаты опять подать их на вход для обучения. То есть, цикл замкнулся внутри одного языка.

Viktor G.
Продрался я через эту книжку по первой ссылке. Там...

Да, но я вот тут развернул чуть больше про следствие expression problem: невозможность сделать универсальный алгоритм и поэтому необходимость всё время досыпать алгоритмов и структур данных в уже работающую систему — https://ailev.livejournal.com/1709815.html То есть общее впечатление, что нет одной фичи, которая решает все проблемы — есть некоторый заход на поддержку универсальности, поддержку развития в языке.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта