Был вопрос «почему сервер с файловыми архивами дерьмовый дизайн [как считает автор]». Вот на него ответ. Почему — потому что в результате теряется информация (из изменения можно однозначно восстановить снепшот, а из снепшотна нельзя 100% однозначно восстановить изменения).
Андрей, я бегло прочел статью и не понял. У вас интеграционный сервис, вас попросили взять данные, вы посмотрели в кеш метаданных, проверили права в объектной модели и пошли в сервис временных рядов за данными (все это - не секрет).
А что из этого у вас реальное, что вы мокаете, и как решаете, что мокать, а что запускать реально?
Компилятор в момент компиляции знает как представлены в на целевой машине знаковые числа — дополнительными кодами или как-то по другому.
Unspecified behavior должен приводить к одному из валидных результатов, которые должен быть детерминистичен для конкретной программы, но это не значит, что сложение должно выполняться определенным образом
> Если вы заставляете все выражения иметь определенное поведение, вы ограничиваете возможности компилятора по оптимизации. Например, некоторые алгебраические упрощения для целых чисел недопустимы, если вы требуете, чтобы переполнение знаковых целых арифметических выражений было четко определено.
Вот это например. Unspecified означает, что переполнение знаковых целых может быть 0, 1, -2 миллиарда, 5, и вообще какое угодно число. Ну и делайте свои алгебраические упрощения.
UB означает, что переполнение знаковых целых может быть «отформатировать жесткий диск» или «запустить ядерные ракеты». Не подскажете, зачем вам это для алгебраических упрощений?
Ну например в Rust и Fortran есть гарантия non-aliasing — компилятор имеет право считать, что ничего не поменяет значение переменной, кроме записи в эту самую переменную. Это значительно проще, а также дает больший выигрыш по оптимизации.
А время запуска?
Торвальдс во всяком случае считает себя спецом по x86, и уже работал в этом качестве а компании Transmeta
Ага. А почему именно так? Вы для себя это рефлексировали?
Рабиновичу.
Был вопрос «почему сервер с файловыми архивами дерьмовый дизайн [как считает автор]». Вот на него ответ. Почему — потому что в результате теряется информация (из изменения можно однозначно восстановить снепшот, а из снепшотна нельзя 100% однозначно восстановить изменения).
Потому что надо изменения отслеживать, а не снепшоты
Андрей, я бегло прочел статью и не понял. У вас интеграционный сервис, вас попросили взять данные, вы посмотрели в кеш метаданных, проверили права в объектной модели и пошли в сервис временных рядов за данными (все это - не секрет).
А что из этого у вас реальное, что вы мокаете, и как решаете, что мокать, а что запускать реально?
А разговор был не про них в изначальном комментарии, а про пекарей.
Люди, у которых был только кондитерский мак, это вот эти https://ru.wikipedia.org/wiki/Дело_Ольги_Зелениной Их оправдали. Но они не пекари.
А у Полухиных была и соломка.
Напомню, в деле Полухиных было:
Реализация мака объемом на несколько хлебокомбинатов в одном маленьком семейном кафе
Данные прослушки, в которых клиенты обсуждали у них закупку "шашлычков", а они их предупреждали об опасности тех или иных мест для покупки "шашлычков"
Данные прослушки, в которых они обсуждали реализацию одежды и других вещей, которым им заплатили за товар благодарные клиенты.
Объем мака на 201 000 (двести одну тысячу) разовых доз
А так, конечно, ни за что сели, проклятая страна.
А что же такое закрашено у вас там в платформах:-))?
Ядро это и есть на 90% драйверы.
Собственно, сейчас конфликт и заключался в том, что проект Rust for Linux пытался запихать обвязку для написания файловой системы на Rust
Это псевдонимность
> Если же переполнение unspecified, то замену делать нельзя.
Вот этого я не понимаю.
Если op2 во всех случаях возвращает C, которое является валидным интом, но который иногда не равен результату op1, то это подойдет.
Компилятор в момент компиляции знает как представлены в на целевой машине знаковые числа — дополнительными кодами или как-то по другому.
Unspecified behavior должен приводить к одному из валидных результатов, которые должен быть детерминистичен для конкретной программы, но это не значит, что сложение должно выполняться определенным образом
> Если вы заставляете все выражения иметь определенное поведение, вы ограничиваете возможности компилятора по оптимизации. Например, некоторые алгебраические упрощения для целых чисел недопустимы, если вы требуете, чтобы переполнение знаковых целых арифметических выражений было четко определено.
Вот это например. Unspecified означает, что переполнение знаковых целых может быть 0, 1, -2 миллиарда, 5, и вообще какое угодно число. Ну и делайте свои алгебраические упрощения.
UB означает, что переполнение знаковых целых может быть «отформатировать жесткий диск» или «запустить ядерные ракеты». Не подскажете, зачем вам это для алгебраических упрощений?
Вы путаете UB и unspecified
Ну например в Rust и Fortran есть гарантия non-aliasing — компилятор имеет право считать, что ничего не поменяет значение переменной, кроме записи в эту самую переменную. Это значительно проще, а также дает больший выигрыш по оптимизации.
Пропустил комментарий. А как это ваще связано с UB? Есть пустое тело цикла, цикл можно развернуть и удалить.
Идея в том, что UB помогает доказать, что цикл завершится рано или поздно?
Есть вот такая штука
https://pgloader.readthedocs.io/