Александр Рябиков@rsashka
Системный архитектор
Information
- Rating
- 34-th
- Location
- Россия
- Date of birth
- Registered
- Activity
Specialization
Инженер встраиваемых систем, Архитектор программного обеспечения
Ведущий
C++
ООП
Linux
Программирование микроконтроллеров
Встраиваемая система
C
Qt
Разработка программного обеспечения
x / 0
Измерение синтаксиса и изменение парадигмы, это не одно и тоже.
Я согласен, что удобнее всего менять парадигму и синтаксис одновременно (т.е. путем создания нового языка), однако прототип как раз и демонстрирует возможность изменения парадигмы на старом синтаксисе. Да, неудобно, но зато с сохранением обратной совместимости и возможностью плавного перехода на новую парадигму (или использования двух парадигм одновременно).
Так язык не меняется, просто на код с помощью статического анализатора накладываются дополнительные ограничения, но производительность остается такой же, как и была у С++.
Обработка прерывания являются обязательной и она в том или ином виде присутствует во всех языках, даже тех, какие стараются ион нее избавится, и смена названия сути не меняет.
Китайская комната, это только внешняя эмуляция разума, тогда как классическая Машина Тьюринга даже в теории не может эмулировать головной мозг человека во всех деталях, так как она строго последовательная и не не может обработывать только статическую информацию с бесконечной ленты, тогда как мозг работает параллельно, он постоянно обработывает внешнюю информацию и не останавливается, когда завершает решение очередной задачи.
Вы не правильно рассуждаете. Например классический алгоритм с циклическими ссылками, который приводит к утечкам оперативной памяти или алгоритм деления двух чисел с делением на ноль. И тот и другой являются алгоритмами исполнимыми на Машине Тьюринга, но безопасный язык программирования не должен их реализовывать (может, но не должен). Вот это "не должен" как раз и является не полнотой по Тьюрингу.
А так да, именно человек должен ограничивать допустимость реализации тех или иных алгоритмов. И вы правы, что новый язык не нужен. Можно взять уже существующий полный по Тьюрингу (например С++), и сделать для него анализатор кода, реализующий те или иные ограничения.
Уж лучше сильное функциональное программирование.
На самом деле отсутствие Тьюринг - полноты у языка программирования, это обязательное, но не достаточное условие, чтобы его можно было назвать безопасным.
Причем самое смешное, да, так как этот язык не допускает ошибок :-)
Зачем мне "свои определения", когда достаточно уже имеющихся.
Про вычисления речь не идет вообще, так как машина Тьюринга, это еще и возможность записи этой самой программы (на бесконечной ленте), тогда как гарантия безопасной разработки на уровне синтаксиса языка программирования, это невозможность записать не безопасный код.
Безопасность памяти, это только одна из граней безопасной разработки и дело не только в ней.
Зачем вы коммерческую тайну приплетаете? У вас в статье вообще нет примеров по коммерческой тайте, только налоговая + дополнительные обстоятельства.
У вас в заголовке какая-то ерунда, никак не связанная с примерами в статье, ведь налоговая тайна (как в вашем примере) и коммерческая тайна, это совершенно разные вещи. Не говоря уже про то, что в вашем деле кроме разглашения есть еще 3 пункта, которые гораздо более серьезные.
очередной LLM комментарий ниочем
Спасибо, хорошие замечания.
Чтобы проверять статические инварианты писать компилятор не нужно. Можно сделать плагин для существующего компилятора
Про высокопроизводительные программы с RAII сказать ничего не могу. Все дело в реализации алгоритма. Подозреваю, что в этом случае можно реализовать алгоритм, которые очищает память объектов только при завершении работы (аналогично, как это делается для пула потоков).
Большинство этих UB успешно ловится анализатором во время компиляции (ссылку я давал чуть выше)
Я бы и сам купил :-)
Но к сожалению это генерация картинки по описательному промпту
https://habr.com/ru/articles/469671/
https://dwheeler.com/steelman/steelman.htm
Спасибо!
Это действительно максимально близко к тому, о чем идет речь.
Эта библиотека - только пример реализации описанного в статье подхода на С++ (доказательство реализуемости идеи с помощью использования плагина для компилятора), но пока она не является завершенной концепцией безопасной разработки.