LINUX.ORG.RU

Я на тредах делал, указателям конечно не ровня, но все работало.

arturpub ★★
()

В четвертокедах плазмоид есть, который фазу луны показывает. Глянь штоле как там реализовано.

NeverLoved ★★★★★
()
Последнее исправление: NeverLoved (всего исправлений: 1)

Петросян-баянист

printf("на небе");
CYB3R ★★★★★
()

А как в других языках с этим обстоит дело?

плохо, приходится использовать костыли типа:
random.randrange(13, 666)

Anonymous ★★★★★
()
Ответ на: комментарий от olibjerd

Вы случайно создаете дюжину копий объекта «вы» и всем им простреливаете ногу. Срочная медицинская помощь оказывается невозможной, так как вы не можете разобраться, где настоящие копии, а где — те, что только указывают на них и говорят: «А вот он я!»

rezedent12 ☆☆☆
() автор топика

c++ датчик фазы луны

што эта? хардверный девайс, который наблюдает за Луной и вычисляет её фазу?

Harald ★★★★★
()
Ответ на: комментарий от buddhist

а вдруг в ней закладка будет, которая кости кидать будет по заранее рассчитанной траектории с заданным усилием с целью получить предсказуемый результат? Или вообще само по себе так будет получаться, из конструктивных особенностей

Harald ★★★★★
()

если я правильно понял мотивы, побудившие ТС написать сей пост, то он просто неосилятор С++, а фаза Луны нифига не случайное состояние

Harald ★★★★★
()
Ответ на: комментарий от buddhist

Реквестирую роботизированную руку, которая будет кидать кости, для получения истинно-случайных чисел.

На компьютере баронессы Ады Лавлейс такой использовался, а современный «/dev/random» выглядит так: http://en.wikipedia.org/wiki/File:Sun-crypto-accelerator-1000.jpg
( http://en.wikipedia.org/wiki/Hardware_random_number_generator )

PS
Если покопаться, то наверно и фотографию «/dev/null» найти можно.

Anonymous ★★★★★
()
Ответ на: комментарий от Harald

он просто неосилятор С++

Нет, решил просто пошутить на тематику.

Приведу пример из низкоуровневого программирования. Если объявить переменную не очистив её значение, а затем использовать то выполнение программы может стать не предсказуемым. В этом случае шутят что алгоритм работает в зависимости от фазы Луны или погоды на Марсе.

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

rezedent12 ☆☆☆
() автор топика

Не думаю, что такой датчик даёт равномерное распределение по всем фазам луны. Где-то будут пики и провалы.

nanoolinux ★★★★
()
Ответ на: комментарий от rezedent12

Если объявить переменную не очистив её значение, а затем использовать то выполнение программы может стать не предсказуемым.

Вполне себе предсказуемым и даже повторяющимся. И только для локальных переменных, которые в стеке. А стек не случайными данными заполняется, а вполне определёнными

Harald ★★★★★
()
Ответ на: комментарий от Harald

Детерминизм очевиден, вот только на этот мусор может влиять что угодно, начиная с переменных окружения, заканчивая содержимым каких-нибудь конфигов в /usr/local/etc. Собственно все, что выполняется перед main(), а также всяческие *_init(), может оставить на стеке и в куче свои отходы. Повторяемость весьма спорна, т.к. зависит от внешней среды и особенностей libc.

arturpub ★★
()
Ответ на: комментарий от arturpub

я имел в виду повторяемость при запуске одного и того же бинарника на одной системе

Harald ★★★★★
()

В языке c++ датчик фазы луны можно реализовать через указатели.

Что? Указатели посмотрят в телескоп и узнают фазу или измерят уровень воды в стакане, иначе это никакой не датчик а имитация.

Napilnik ★★★★★
()
Ответ на: комментарий от Napilnik

Что? Указатели посмотрят в телескоп и узнают фазу или измерят уровень воды в стакане, иначе это никакой не датчик а имитация.

«Датчик фазы луны»? это устойчивое выражение означающее источник незапланированной энтропии влияющей на выполнение программы и часто снижающей стабильность и правильность работы приложения.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от rezedent12

В таком случае ответить на вопрос «А как в других языках с этим обстоит дело?» не кодя на плюсах сложно - в других языках такого устойчивого выражения может и не быть.

Napilnik ★★★★★
()

В языке c++ датчик фазы луны можно реализовать через указатели.

ЩИТО?

В C/C++ оно тебе может и rm -rf / выполнить, если Меркурий во втором доме и луна ушла...

drBatty ★★
()
Ответ на: комментарий от buddhist

Реквестирую роботизированную руку, которая будет кидать кости, для получения истинно-случайных чисел.

зачем? Есть атомы, они распадаются, распад атомов предсказать невозможно. Если нищеброд, то возьми любой диод допускающий обратимый пробой. Такая копеечная деталь тоже выдаёт вполне годный белый шум (правда после некоторой обработки, ибо внешнее предсказуемое влияние таки есть).

Ну и наконец, можно юзера попросить чё-нить поделать.

drBatty ★★
()
Ответ на: комментарий от buddhist

Зато какой простор для защиты пары-тройки десятков докторских.

всё уже украдено до нас. Ищи тему по оригинальнее.

drBatty ★★
()
Ответ на: комментарий от Anonymous

Если покопаться, то наверно и фотографию «/dev/null» найти можно.

facepalm

drBatty ★★
()
Ответ на: комментарий от rezedent12

Если объявить переменную не очистив её значение, а затем использовать то выполнение программы может стать не предсказуемым.

твоя программа будет ДЕЛАТЬ НЕПРЕДСКАЗУЕМОЕ, а вовсе не давать случайные ответы.

И да, ответ вполне предсказуем, можешь сам проверить.

drBatty ★★
()
Ответ на: комментарий от arturpub

Повторяемость весьма спорна, т.к. зависит от внешней среды и особенностей libc.

повторяемости более чем достаточно, что-бы пройти Over9000 тестов. А вот случайности вполне хватает для того, что-бы рухнуть в продакшене.

drBatty ★★
()
Ответ на: комментарий от rezedent12

«Датчик фазы луны»? это устойчивое выражение означающее источник незапланированной энтропии влияющей на выполнение программы и часто снижающей стабильность и правильность работы приложения.

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

вот ещё: После перезагрузки серва с Debian через раз поднимаются сетевые интерфейсы..

человек поставил две одинаковые сетевухи в комп, а теперь они определяются строго по фазе луны.

drBatty ★★
()
Ответ на: комментарий от Napilnik

не кодя на плюсах сложно - в других языках такого устойчивого выражения может и не быть.

говнокод есть везде.

drBatty ★★
()
Ответ на: комментарий от drBatty

человек поставил две одинаковые сетевухи в комп, а теперь они определяются строго по фазе луны.

У них одинаковый mac адрес что ли? Если я не ошибаюсь, имена сетевух прописаны где то в rules udev. У меня в моём роутере тоже две сетевухи одинаковые, я через эти правила поменял их имена.

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

Интересно, на практике такое случайно уже делали?

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от rezedent12

Это и называют «датчик фазы луны».

есть небольшая разница между непредсказуемым числом и непредсказуемым кодом. Ты об этом не задумывался?

drBatty ★★
()
Ответ на: комментарий от rezedent12

Если я не ошибаюсь, имена сетевух прописаны где то в rules udev.

не ошибаешься, но их ещё и прописывать надо, например если ты сетевухи меняешь. Ядро определяет их одновременно(хз как), а потом удав разруливает по правилам.

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

Интересно, на практике такое случайно уже делали?

на практике это сплошь и рядом. Привязываться к каким-то глобальным часам это геморрой и жуткие тормоза. Потому процессы работают асинхронно.

Да ладно процессы, даже в ФС любого линукса две программы могут открыть один и тот же файл, и писать в него разные данные ОДНОВРЕМЕННО. Такой файл автоматически раздваивается на две асинхронные копии. Процесс создания/удаления файлов атомарный, а вот запись идёт параллельно.

Мало того, такая чашуя возникает и без нескольких процессов, ведь данные в файле лежат одновременно и в памяти и на диске. Причём и там и там разные куски «правильные». Какой именно кусок считать «правильным» — задача не тривиальная. Ну а если ты к этому всему ещё и своп подключишь... Т.е. тебе не просто надо прочитать байт с диска или памяти, что ближе, нет, тебе надо ещё проверить, является-ли этот байт с твоей точки зрения истинным. А если оно не так, дождаться, пока он придёт в нужное состояние.

Короче — это твоя «фаза луны» — обыденный паразитный процесс который почти всегда только мешается. А иногда даже фатально. Можешь почитать 3.4 SICP на эту тему, там на пальцах.

drBatty ★★
()
Ответ на: комментарий от drBatty

говнокод есть везде.

Понятия говнокода у различных индивидумов могут отличаться и не иметь ничего общего с качеством и глючностью кода. Кому-то религия не позволяет использовать гото - для него весь код его использующий плохой а любые говнозаменители данного оператора мёд а не говно. Кого-то сбатхёртит от дополнительных операторов добавленных для возможного будущего (или пока оставшихся от прошлого) апгрейда, сичас ани ведь нинужны, и так далее.

Napilnik ★★★★★
()
Ответ на: комментарий от rezedent12

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

Интересно, на практике такое случайно уже делали?

Был такой прикол. Несколько похожих потоков изменяли одну (не заметил что не свой элемент массива) переменную и иногда выполняли какое-то действие периодичность которого от этого счётчика и зависела. Когда разобрался почему оно работает с такими перебоями и рывками то вместо одной переменной сделал массив.

Napilnik ★★★★★
()
Ответ на: комментарий от Napilnik

Понятия говнокода у различных индивидумов могут отличаться и не иметь ничего общего с качеством и глючностью кода.

если у тебя программа недетерминирована, то это в 99.9999% случаев баг, а не фича. А значит говнокод.

Кому-то религия не позволяет использовать гото

это не религия, а опыт. Свой и/или чужой. Goto как раз и _может_ привести к недерминированному поведению, например если ты запрыгнешь в контекст, и стек у тебя после такого прыжка будет неопределён. Проблема тут в том, что это всё работает в тестах, и ломается в продакшене. Потому-то опытные люди goto и недолюбливают. Ну а вообще в ней нет ничего плохого, если юзать по делу.

С лишним кодом тоже примерно такая беда. Он сейчас не мешает, а вот завтра ты о нём забудешь. И ВНЕЗАПНО он всё поломает.

drBatty ★★
()
Ответ на: комментарий от drBatty

если у тебя программа недетерминирована, то это в 99.9999% случаев баг, а не фича. А значит говнокод.

Не путай программу и либу. Та же гонка выполнения процессов делает выполнение непредсказуемым и это вполне себе фича которая выражается в «если заглючило перезагрузись, авось полегчает». А если бы постоянно глючило на одном и том же месте которое не обойти и отлаживать баг некому, то и пользоваться ПО было бы невозможно. Была такая фича с видухой, иногда при загрузке некоторых ОС она не врубалась - семь бед, один ресет.

это не религия, а опыт. Свой и/или чужой.

Именно религия, потому как у адептов с опытом использования обычно очень плохо а из обоснования какие-то штампы.

С лишним кодом тоже примерно такая беда. Он сейчас не мешает, а вот завтра ты о нём забудешь. И ВНЕЗАПНО он всё поломает.

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

Napilnik ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.