Описание недетерминированной машины Кузьмина на пальцах

Формальное описание здесь

dou.ua/forums/topic/35914

Здесь мы рассмотрим описание недетерминированной машины Кузьмина на пальцах. Ибо не совсем понятно отличие от классической архитектуры. Вот мы и оттолкнемся от классического программирования. В основе которого алгоритмы, формализацией которых служит (как сформулировано в википедии) машина Тьюринга. Осмелюсь утверждать, что МТ это больше чем алгоритм. Для наглядности (только без рисунков) рассмотрим построение блок-схемы. Можно считать блок-схему эквивалентом алгоритма. Не думаю, что найдутся возражения.

Блок-схема

Повторим известное. Блок-схема представляет собой последовательность элементов блок-схемы прямоугольников (Q) и ромбов (E)), где прямоугольники обозначают некоторые действия, ромбы-условия. Соединяющие линии стрелки-переходы указывают порядок «выполнения» каждого элемента блок-схемы. В принципе можно считать, что линии указывают порядок поступления каждого элемента блок-схемы в некий процессор на «выполнение» и не важно кто будет выполнять голова или какая-то реальная машина. Однако, принципиально что одна голова или один процессор.

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

Немного размышлений.

Поговорим за состояние программы. Есть широкое толкование вместе с состоянием регистров адреса выборки команды, адреса возврата и состояние ячеек. Это может быть важно для построения системы, но для задач, решаемых обычными программистами имеет значение только изменения всех переменных. Т.е. то, что содержит информацию и представляет интерес для решаемой задач. Вот и назовем состоянием все множество текущих значений всех переменных (А), а сами переменные атрибутами. Хотя атрибуты могут определяться в прямоугольниках, оставим там только действия, которые заключаются в изменении атрибутов. Событием же назовем изменение состояния. Проверкой этого состояния у нас занимается логическое выражение в ромбе E. Так фактически это логическое выражение (в общем случае, логическая функция от переменных) и является определением события. Следующий шаг в наших рассуждениях — это приспособить получаемую конструкцию к выполнению на нескольких процессорах. Для этого разрушаем нашу блок-схему убирая все линии, определяющие порядок выполнения. К элементам блок схемы добавляем новый вид элемента — определение атрибутов, а оставшееся действия в прямоугольнике назовем подпиской. Теперь рассмотрим отдельно события. Понятно, что каждый ромбик порождает подписку (или две. По направлению Да/ Нет). И тут же замечаем, что выполнение событий может происходить одновременно на нескольких процессорах, потому как функция E не изменяет состояния. Останется без запуска по событию только самый первый элемент блок-схемы, но это легко лечится придумыванием события Вход.

И тут мы обнаруживаем что полученная блок-схема россыпью может прекрасно работать без линий. Необходимо только вовремя адресоваться к событиям! Ну, тут мы уже быстро соображаем, как с этим справится. Каждой переменной являющейся параметром для логической функции E необходимо поставить подписку на событие изменение значения. Все. Т.е. при изменении значения переменной являющейся параметром логической функции события E запустится проверка этого события. Блок-схема (или то, что было ею) заработает на машине Кузьмина. Рекомендую назвать полученную схему решения задачи А-ритмом.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Агентно-ориентированный подход (в дальнейшем АОП) к программированию — разновидность представления программ или парадигма программирования, в которой основополагающими концепциями являются понятия агента и его ментальное поведение, зависящее от среды, в которой он находится. Концепция была предложена Шохемом (англ. Yoav Shoham) в 1990 г. Определение парадигмы, данное автором:

Эту новую парадигму программирования вполне разумно назвать рациональным программированием. Точно так же, как объектно-ориентированное программирование сдвинуло парадигму с написания процедур к созданию объектов, рациональное программирование сдвинуло парадигму с создания информационных объектов к созданию мотивированных агентов.

Агентом является всё, что может рассматриваться как воспринимающее свою среду с помощью датчиков и воздействующее на эту среду с помощью исполнительных механизмов.
ru.wikipedia.org/...​но-ориентированный_подход

Эту новую парадигму программирования вполне разумно назвать рациональным программированием. Точно так же, как объектно-ориентированное программирование сдвинуло парадигму с написания процедур к созданию объектов, рациональное программирование сдвинуло парадигму с создания информационных объектов к созданию мотивированных агентов.

Это очень удачно подметил Шохен. Об императивной части. Я к этому добавил единую структуру всего что хранится в памяти и, по опыту работы с системой, уже сомневаюсь что написанное является программой в общепринятом смысле. И, зачастую, не алгоритмом. Оно (нет названия) состоит из двух частей определение данных как то, что имеет состояния и императивной части (функционал)-подписки. За алгоритмы и недетерминированность я говорил. А природа этого в том, что алгоритм определяет порядок (а не время) а недерминированность заключается в возможности нескольких подписок к одному событию. А в предлагаемой конструкции появляется возможность выполнять ее на нескольких процессорах и нескольких шинах данных. Т.е. появляется одновременность в смысле времени. Это заставляет понятие «порядок» воспринимать иначе чем в определении алгоритма.

Предположим я хочу сделать декодирование видео-файл сразу на нескольких процессорах. У меня есть ШД на чтение и на запись, доступная в подписках.
Так как каждый блок видео будет занимать неизвестный размер памяти — то у нас будет та самая недерминированность при записи.
Вопрос — как с помощью подписок решить задачу, чтоб не создавать промежуточных буферов для склейки кусков файлов в новое видео, а декодировать его в новый файл прямо налету?
Предположим что видео весит 20G, у нас 3G памяти, из которых мы шарим 1G на 3 ШД и 3 CPU. Скорость чтения с диска будет 30MB/S и скорость записи будет 25MB/S, то есть запись будет запаздывать от чтения.

Можете показать процесс с помощью кода/блоксхемы/формулы на основе указанных чисел?

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

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

Это обычная детерминированная задача. Решается совершенствованием алгоритма. И, само собой жестким распараллеливанием процесса декодирования.

То есть даже такую типовую задачу ваша машина будет делать хуже, чем существующие реализации?

Это заставляет понятие «порядок» воспринимать иначе чем в определении алгоритма.

Така маячня — одна з причин, чому вас серйозно не сприймають.
en.wikipedia.org/...​/Algorithm#Classification

Така маячня — одна з причин, чому вас серйозно не сприймають.

Ты за себя говори. За всех не расписывайся. Если ты не понимаешь простых вещей, что порядок о котором говорится в определении алгоритма ru.wikipedia.org/wiki/Алгоритм не имеет отношения ко времени (т.е. выполнение какого-то шага раньше/ позже) то мне нечего добавить.

Для початку, це визначення згідно кого? Рус. вікі посилається на Семенова, у тексті якого слова порядок нема! Англ. вікі — на Мерріам-Вебстера, де його знов нема! У рус. вікі бозна хто придумав своє і воно там написано. Можливо є якесь більш авторитетне визначення, де є те слово, бо навіть якщо алгоритм з однієї інструкції — результат отримується суворо після її виконання. Але як це тоді узгоджується із іншими визначеннями, ви не задумувались?) Здається, у вас ментальний блок, бо очевидна річ, що у вас просто підвид алгоритму — означатиме, що великий Кузьмін нічого такого особливого не придумав. Це просто різновид паралельного алгоритму. Може з якимись більшими гарантіями/вимогами щодо часу виконання. Таке геть не означає, що це вже не алгоритм.

Як я поняв, автор придумав як евентами описувати любі алгоритми. Поки що це виглядає як трюк, накшталт як використовуючи лише mov інструкцію можна створити будь яку програму.
hackaday.com/...​-compiler-emits-only-mov

Але трюк це лише трюк. В математиків багато таких трюків припасено на сто років вперед. Багато з них ніколи не отримують практичного застосування.

Потрібен потужний опис переваг з якоюсь доказовою базою, що саме це не зайнятна головоломка для розуму, а майбутній мейнстрім в процесоробудуванні.

Як я поняв

Основная проблема в том, что каждый коммент в этом треде нужно начинать с такой фразы!
Вопрос в том — нахрена? Автор рожает одно и то же последние несколько лет. Развития нет.

Як я поняв, автор придумав як евентами описувати любі алгоритми. Поки що це виглядає як трюк, накшталт як використовуючи лише mov інструкцію можна створити будь яку програму.

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

Старий як світ контраргумент, що опонент дурак. За стільки років можна вже було б накидати емулятор тієї машини і показувати переваги наочно. Але в цьому є мінус, що чисто теоретична машина може мати будь які переваги і функціонал, який можна змінювати прям в процесі дискусії, не зважаючи навіть на можливі проблеми у логіці, бо їх ще треба знайти у мутних описах автора. І навіть якщо знайдуть і доведуть, не зважаючи на переходи на особистості — можна моментально знову змінити функціонал і звинуватити опонента, що він, дурень, не так зрозумів!

Пропоную назвати таку схему пропонування рішення задачи А-ритмом. Це дійсно мабуть ще принаймні не достатньо описано у літературі і таким чином має новаторський потенціал.

Старий як світ контраргумент, що опонент дурак. За стільки років можна вже було б накидати емулятор тієї машини і показувати переваги наочно.

Не столько дураки, сколько ленивые мозгами. Обсуждаете все что угодно только не то, что написано. Давно есть и транслятор и эмулятор. И оттранслированные примеры приводил. Вы ж их не смотрите. Во всяком случае еще ни один не задал вопроса по примерам. Из чего я делаю вывод что никто не понял как работает эта машина. Обсуждаете мои личные недостатки. Их у меня есть. И пишу я здесь не для вас. Просто пишу. Без надежд.

Я так і не зрозумів на кого усе це розраховано?
Якщо на науковців — посилання на розгорнуту і повну наукову статтю будь ласка
Якщо на більш широкі маси — то будь ласка теж повна стаття із прикладами на пальцях бажано у графічному вигляді
От кажете — у вас є і приклади і якісь емулятори. Де це все? Я повинен сам шукати? Нафіга це мені? Я краще пошукаю як працює babyJubjub elliptic curve і зароблю на цьому бабла
Так влаштований світ — усі лениві. І я у тому числі. Тому не буду занурюватись у тему якщо ви мене не зацікавите. Поки що не побачив жодної детально і грамотно опрацьованої роботи яка б мене мала зачепити.

сколько ленивые мозгами

Кто ленивый, ты ленивый йопта!

Обсуждаете все что угодно только не то, что написано.

Мы обсуждаем то, что как раз написано, а не твои недосказанные фантазии. Никто не будет развивать твои идеи тебе за бесплатно.

Геніально, можна навіть казати, що емулятор є! Тільки не давати його. Вибачте, без того, щоб можна було б його скачати, вбити в нього ваші «приклади» і спробувати щось там змінити, щоб зрозуміти як воно працює, покористуватись ним — його ефективно нема. Може його і фізично нема, як нам взнати? Може в ньому проблеми критичні, про які ви не кажете і це причина, чому його не викладено і чому тут нема посилання де його скачати. Шо обговорювати?

Вы ж их не смотрите. Во всяком случае еще ни один не задал вопроса по примерам.

Ви ж відповіді не чуєте і заводите потім знов те саме. Я от наче більш-менш зрозумів, як працює воно по опису, писав там щось, питання таки задавав по темі. Настрою вникати більше без можливості практики з емулятором і розуміння навіщо воно — нема. Те, що я побачив — варіація на тему подій і паралелизму. Склалось враження, що простого опису у загальноприйнятих термінах нема, тому що тоді буде видно, що річ це доволі тупа, при тому не зручна у користуванні.

Я от наче більш-менш зрозумів,

Более менее. Но, еще не совсем. Я отвечал тебе.

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

А можно спросить в чем идея? Интересно для послушать. Я вот утверждаю что еще не встретил понявшего. Более того, я не встретил с кем можно было б поговорить.

Я вот утверждаю что еще не встретил понявшего.

Чья это проблема?

«Особенности национального программирования от Кузьмича на пальцах.»
Вибачте за референс на русню але нічого іншого не можу знайти/згадати, тільки оцей алко деліріум але з програмуванням.
ЗІ «Це ж було вже!»
www.youtube.com/watch?v=csmOuJFOeVw

Тут описано out-of-order execution которое реализовано на современных процах, но очевидно пропущен граф зависимостей данных.
Либо попытка в event-based или reactive архитектуру.

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

Нет не сможет. Нужно еще и вовремя отписываться от событий. Это было бы очевидно, если бы автор предложил программу посложнее.

Нет не сможет. Нужно еще и вовремя отписываться от событий. Это было бы очевидно, если бы автор предложил программу посложнее.

Улыбнуло. Вопрос синхронизации лежит на поверхности. Решение гораздо проще. Надо только хорошо подумать. Намекну. Нет такой проблемы потому что это происходит автоматически. У нас нет ни адресов возврата ни автоматического выполнения как в обычных компьютерах. Порядок гарантируется парой событие-подписка. Есть проги и посложнее. Но, тут и простое не находит понимания. Я б разрисовал это графически, если б тут можно было рисунок сделать. Или прикрепить файл.

но очевидно пропущен граф зависимостей данных.

Все гораздо интересней. Фактически подписки и являются этим графом.

Намекну.

Намеков нам не надо, нам пожалуйста четко, без «очевидно что...»

Я б разрисовал это графически, если б тут можно было рисунок сделать. Или прикрепить файл.

Есть куча сервисов запостить картинку, imgur.com тот же

Я попробовал. Видимо, пример не правильный придумал. Получилось сложно. Надо другой придумать.

Есть куча сервисов запостить картинку, imgur.com тот же

А поставить кнопку приаатчить файл это сложно? Почему я должен куда-то переходить и что-то изучать? Форум программистов называется. Ленивые аж противно.

Почему я должен куда-то переходить и что-то изучать?

тому що в першу чергу автор зацікавлений у розповсюдженні своїх ідей, а не будь-хто інший.

це класична ситуація з розряду «хто хоче, той робить, а поганому танцюристу нема де картинки викласти». сервісів, щоб написати документацію і пошарити, зараз просто дофігіща, при тім безкоштовних:
* github.com — гітхаб: знають всі програмісти, можна викласти код, а для документації є своя достатньо проста система розмітки, що дозволяє писати прямо там і по-людськи все організовувати (сторінки, розділи, картинки, ітд)
* www.overleaf.com — оверліф: знайомий майже всім фіз-матам, можна прямо в веб-інтерфейсі фігачити LaTeX і те все шарити
* drive.google.com — гуглдрайв: достатньо сворити поштовий акаунт gmail і причепом буде 15 Гб гуглдрайва, далі просто залити туди файли і розшарити (пару кліків мишкою в веб-інтерфейсі)
* www.researchgate.net — ресерчгейт: аналог arxiv, можна шарити pdf
* і ще купа сервісів яких я не знаю, чи так відразу в голову не приходять

* github.com — гітхаб: знають всі програмісти, можна викласти код, а для документації є своя достатньо проста система розмітки, що дозволяє писати прямо там і по-людськи все організовувати (сторінки, розділи, картинки, ітд)

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

потому как надо на какой-то херне зарегистрироваться.

мало просто зареєструватися, треба ще щоб представники адміністрації сайту підтвердили обліковий запис, мені, наприклад, не підтверджують

мало просто зареєструватися, треба ще щоб представники адміністрації сайту підтвердили обліковий запис, мені, наприклад, не підтверджують

Ну, и хрен с ними. Это я к примеру сказал. Меня оно не чешет.

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

2. Хотя ваш подход предполагает, что проверки могут выполняться параллельно без изменения состояний, но это может привести к проблемам синхронизации при обновлении атрибутов. Для успешного внедрения вашей идеи необходимо провести дополнительные исследования, чтобы гарантировать надежность и стабильность системы в виде математических формул.

3. Ваше предложение не содержит информации о том, как эту машину можно реализовать физически на существующей базе. Без четкого понимания этой связи — машина будет существовать только в ваших фантазиях.

4. Вообще нет рыночной стратегии, потенциальных клиентах и конкурентном преимуществе вашей машины перед существующими решениями. Даже если ее можно будет реализовать, то нет понимания для кого она нужна, потому что все это время весь мир обходился без машины Кузьмина.

5. Отсутствие валидации и опыта реализации: Ваше предложение не предоставляет информации о том, была ли ваша идея протестирована или успешно реализована в реальных проектах. Даже если, теоретически, ваша машина будет в чем-то лучше конкурентов, и даже при наличии разработчиков, далеко не факт, что можно будет достичь успешного применения вашего подхода, чтобы убедиться в его эффективности и применимости на рынке.

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

5 человек и пару месяцев для первой версии. Через полгода этот коллектив выдаст коммерческий продукт. И дело на в подписках.

2. Хотя ваш подход предполагает, что проверки могут выполняться параллельно без изменения состояний, но это может привести к проблемам синхронизации при обновлении атрибутов. Для успешного внедрения вашей идеи необходимо провести дополнительные исследования, чтобы гарантировать надежность и стабильность системы в виде математических формул.

Нет никаких проблем с синхронизацией. Подробности уже в разделе подробностей.

3. Ваше предложение не содержит информации о том, как эту машину можно реализовать физически на существующей базе. Без четкого понимания этой связи — машина будет существовать только в ваших фантазиях.

За полностью реализации в железе говорить рано. Вполне реально (и не сложно) реализовать виртуальную машину. Будет уже коммерческий смысл. Подробности уже в разделе подробности.

4. Вообще нет рыночной стратегии, потенциальных клиентах и конкурентном преимуществе вашей машины перед существующими решениями. Даже если ее можно будет реализовать, то нет понимания для кого она нужна, потому что все это время весь мир обходился без машины Кузьмина.

Есть и стратегия и преимущества. Это ж не здесь. Без автомобилей тоже обходились когда-то. Это гнилой аргумент.

5. Отсутствие валидации и опыта реализации: Ваше предложение не предоставляет информации о том, была ли ваша идея протестирована или успешно реализована в реальных проектах

Что-то есть, чего-то нет. Это тоже не предмет обсуждения здесь. 20 образцов даже в железе есть. Реальные проекты они же коммерческие запускать готов.

Ну тогда это уже совсем другое дело. Зачем же скрывать, что есть образцы?
Сделайте лабораторные замеры, на основе которых можно показать конкурентное преимущество + добавьте фото — и уже серьезный разговор!

Вам? Я здесь выложил материал для того что б познакомить людей с принципами. Если вы заинтересованы, то продемонстрируйте это понимание. Будут вопросы обращайтесь в личку, телефон, мессенджеры. С удовольствием побеседую и материалов подкину. Пока я не вижу понимания и интереса. Форум не подходящее место для этого.

Не мне, а людям. Чтоб люди вам обращались

в личку, телефон, мессенджеры.

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

Это «сказка» приносит деньги, которые ты так ищешь. Будь ты хоть 300 раз гений, если не сможешь это продать (или не найдешь человека, который закроет твой пробел продаж), то твои рукописи, вместе с патентом и, возможно, прототипом, так и закопают вместе с тобой. А мир, возможно, потеряет то, что могло бы изменить его в лучшую сторону. Так что не надо быть снобом, чтобы не оставаться нищим и никому не нужным гением. Не можешь подать/продать/продемонстрировать, ищи партнера, который ни в зуб ногой в математике, но гениален в общении и чертовски харизматичен. Плюсом к этому всему, вы не будете лезть друг другу на кухню, а каждый будет закрывать свои задачи. Мир тебе, не хочу, чтобы то, над чем ты работаешь исчезло из-за того, что все инвесторы тупые мешки с деньгами, а ты так и не смог найти своего гениального богача.

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

Согласен. Ну, это уже такая планида. Мне проще послать нах... чем разговаривать с обезьяной.

Все верно, инвестор должен понимать, что его не обманывают. Именно по этому и я и писал про первый шаг —

Сделайте лабораторные замеры, на основе которых можно показать конкурентное преимущество + добавьте фото — и уже серьезный разговор!

Смотрю и так не понятно. Опускаюсь до мышей. Уж этот пример не понять надо постараться.

Float Value ~ {UpE DownE}
Float Up ~ UpE
Float Down ~ DownE

.....
~ UpE Value, Up > Write("выход за верхнюю границу")
~ DownE Value, Down < Write("Выход за нижнюю границу«)
......
Считаем это участком программы. Здесь три атрибута. Текущее значение, верхняя и нижняя граница. И два логических выражения проверка на верхнюю и нижнюю границу с подпиской на вывод советующего сообщения. Подписок может быть много. Процессоров и шин доступа тоже. На месте трех точек может находиться что угодно. Этот участок выполниться правильно по любому, как только из любого места измениться текущее значение или границы. Знак ~ после определения атрибутов обозначает событие «изменение значения». Тот же знак первый — имя класса событий сравнения.
После события подписка.
Утверждаю, что такую программу редактировать и сопровождать одно удовольствие. Сформировал подписки и события. Если необходимо добавил или убрал. Это никак не скажется на отлаженной части. Правда, надо мозги перестроить от написания программы «в длину». Выполняться будет по подпискам, а не последовательно. Претензии за количество лишних проверок не принимаются потому что все они не изменяют состояния и могут выполняться параллельно.

Реально радий вас тут знову бачити і те, що ви пережили останій рік.

Спасибо. Я уже 4 дня как вернулся домой и даже свет есть)

Підписатись на коментарі