Недетерминированная машина Тьюринга. Архитектура. Язык. Система. Программирование

Кто помнит мои прежние темы и кто помогал мне в трудную минуту, всем спасибо. Начал новый цикл работ по своему проекту. Была проблема что мне нечего было показать как оно все работает. Я предполагал реализовать систему на контроллере, но за отсутствием финансов не получилось. Потому я придумал тему как это реализовать и продемонстрировать на компе и начал с калькулятора как одного из режимов работы системы. Калькулятор программируемый. Там есть и транслятор и даже в таком виде может представлять коммерческий интерес. Все это выложил для обсуждения в группе на фейсбуке для обсуждения и буду там продолжать выкладывать материалы и ролики. Прошу всех посетить www.facebook.com/groups/1084931979000426

Там будут скоро и новые ролики и синтаксис и все-все-все. Что тут писать, когда там можно и посмотреть.) Коммерсантам тоже плиз

👍НравитсяПонравилось0
В избранноеВ избранном0
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

Наброшу в тему, несмотря на то что автор отвлекется на познание разницы между программным и аппаратным, теговая память и SWARD нынче как раз и дают понимание архитектурных плюшек M1 from Apple.
Для интересующихся оставлю: ARMv8.5 Memory Tagging Extensions (MTE) en.wikichip.org/...​nter with the correct tag.
А для понимания зачем — можно причастится к fpga.parallel.ru/papers/trunov.pdf

И кстати все воть эти ваши нейроускорители и АСИКИ в криптофермах только то и делают что издеваются всячески над матрицами и даже расчленяют их на вектора а потом ....
Просмотрев видео от автора топика можно увидеть что там потом. Внимание: это от вас скрывают,,,,,,,,,,,,,,..................................

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

SWARD

общего только 4-х разрядный токен. Больше ничего. Сегодня -завтра поменяю ролик о выполнении групп. Рекомендую посмотреть. И, главное, где там недетерминированная машина? Там все очень гладенько.

Не обнаружил тему на форуме. Это что?

Тема есть и в популярных, и в новых. Только внизу страницы.
Если никто не пишет — она в популярных опускается. Может на вторую страницу уйти.

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

Эти все возможности достижимы и хорошо исследованы уже лет 30-40.
Почитайте «Высоконагруженные приложения» Клепмана или «Распределенные системы» Таненбаума.

Не понимаю формат. Очевидно ТС умный и заслуженный и всё такое. Без привязки к личностям, зная что это уже не первый пост ТС в этом духе, увидел конфуз. Интересно, разделяют ли его другие люди?

Как презентация — не годится, тот одна писанина.
Как резюме исследования — не годится, тут нет научного изложения.
Как OSS проект — не годится — нет ссылки не реп.
Как «продажа» идеи — не годится — тут нут ни решённой проблемы, ни аудитории, ни желания автора «продавать».

Как это понимать — просто желание поговорить?

Я понимаю что у меня проблемы с коммуникацией. Вообще, тут все перечисленное есть, я не могу его изложить и сформулировать по причине того, что материала много и не привычного для понимания. Потому решил делать и показывать. С этой целью постепенно выкладываю материал в фейсбуке. Потому терпение и труд. Следите за роликами. В оправдание. Книги по языкам пишут коллективом. А здесь и язык и архитектура и новое в грамматике. Одних примеров придумать надо кучу. А я один. И уже не молодой. И уже не богатый. Тяжко.

Понял. Что ж — это тоже хорошо. Вчера давеча один из контактов как раз цитату родил: «do not build product yet — make just one customer happy». Возможно постепенно в диалогах у вас родится интуиция, что делать дальше и будет проще.
Спасибо за пояснения.

Так и вам спасибо. Общение как раз для того что б сформулировать и упорядочить, мысли, стиль и порядок изложения. Но, чувствую. что сам не справляюсь. Особенно в коммуникации. А ведь уже есть что продавать.

Вот если бы этот калькулятор проверял является ли число простым или составным... Большое такое число, длинное.

Зачем? Это простая задача, которая решается за O(n³) детерминированной машиной Тьюринга, если у нас есть источник случайности, либо за O(n⁶), если такого источника не найдется (правда, вот тут я могу ошибаться с временной сложностью).

Як навіщо? Це ж новий спосіб мислення, потрібне демо, чи то пак proof of concept на простій задачі. От і буде гарне порівняння.

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

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

А если проблема уже решена — то это и не проблема вовсе больше.

Ну всегда пытаются сделать новый Виндовс «красивее, быстрее и стабильнее» старого. Или Вы хотите сказать, что после ХР не обновляли?

А новый Виндоус — это изобретение или открытие?

это изобретение или открытие?

Очередное решение очередной решенной проблемы)))

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

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

Однако паровоз позволял перевозить значительно больший объем товаров, чем могли перевезти на лошади. Что же Ваша машина позволяет делать такого, чего не может делать машина Тьюринга?

. Что же Ваша машина позволяет делать такого, чего не может делать машина Тьюринга?

Глупый вопрос. МТ, согласно теореме о полноте, может делать все. Но, некоторые задачи на моей машине решать а) проще. б) эффективней. в) стоимость решения гораздо меньше. г). и еще куча плюшек что долго перечислять.

Недетерминированная. Машина. Тюринга.
В мене все

’’Невероятностная тяга — чудесное изобретение, позволяющее преодолевать межзвездные пучины за неуловимо малую часть секунды и безо всякой там чудовищно неуклюжей возни в гиперпространстве.
Основы невероятностной тяги были открыты благодаря счастливой случайности; затем их реализовала на практике группа ученых Галактического правительства, работавшая на Дамогране.
Вот вкратце история открытия.
Принципы создания малых количеств конечной невероятности путем элементарного подключения логических цепей ССМ — Сверхкрохотуленького Субмезонного Мозга — к построителю атомных векторов, взвешенному в мощном генераторе броуновского движения (таковым с успехом может служить чашка горячего крепкого чая), были, разумеется, хорошо известны и даже зачастую применялись: например, чтобы оживить скучную вечеринку неожиданным смещением всех молекул одежды хозяйки на полметра влево.
Многие почтенные физики заявляли, что с этим они мириться не могут — возможно, потому, что это профанация науки, но скорее потому, что их на такие вечеринки просто не приглашали.
А еще они не могли мириться с постоянным провалом всех попыток сконструировать генератор поля бесконечной невероятности, необходимого для того, чтобы перенести космический корабль через умопомрачительные межзвездные пучины. И в конце концов физики с раздражением объявили, что создание подобной машины фактически невозможно.
Затем как-то раз один студент, которого оставили убираться в лаборатории после особенно неудачной вечеринки, вдруг стал рассуждать следующим образом: если создание такой машины фактически невозможно, значит, по логике, это событие конечной невероятности. Стало быть, достаточно рассчитать конкретное значение этой невероятности, ввести полученное число в генератор конечной невероятности, дать генератору чашку горячего крепкого чая и...
Так студент и поступил. Каково же было его удивление, когда выяснилось, что он сделал долгожданное открытие!
Впрочем, его удивление выросло во сто крат, когда сразу после торжественного вручения «Галактической премии за исключительную одаренность» его линчевала неистовая толпа почтенных физиков, которые наконец поняли, с чем действительно не могут мириться — с чересчур умными коллегами.’’

Не могу молчать) Вот у нас есть вероятность. Но что такое вероятность? Это описание частоты.
Но есть же и неопределенность? А что это такое? А вот возьмем набор из 1,2,3,4,5 и бобра. Специально обученного выбрать одно из значений. И вот существует неопределенность выбора.
Но если кто-то покормит бобра, он уже выберет более узко — неопределенность выбора — уменьшилась.
Итак, есть и вероятность и неопределенность. Есть еще пороговое значение — когда частота некоторого явления побеждает затухание последствий этого явления. Чем не схлопывание волновой функции?
Итак, вероятностный двигатель? Надо просто добавить чего-то в раствор чтобы он из перенасыщенного перешел в состояние кристалла.
Но это ведь для непосвященного — сделать воду твердой касанием волшебной палочки.
Так стоит ли осуждать попытки?

добавить чего-то в раствор чтобы он из перенасыщенного перешел в состояние кристалла

Синего?

Чтобы пройти по Эйлеровым мостам нужна НМТ
P.S.
Получилось за 2 итерации
P.P.S.
Похоже это не столько математическая, сколько философская задача.
Ведь для ее решения, надо просто собраться группой, всем вместе, и выступить в поход.
Это скорее задача на эффективный менеджмент. Там, где один не сможет, толпой завсегда получится.

Нет, не нужна. Построение Эйлерового пути и цикла — это простые полиномиальные задачи. Они эффективно решаются и детерминированной машиной Тьюринга за полином. Таким образом использование НМТ для данной задачи — это все равно, что стрелять из пушки по воробьям.

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

Он путает машины Тьюринга с конечными автоматами и с RAM-машинами. Да и когда он сравнивает НМТ с нейронными сетями, или когда идет обсуждение модели распределенных вычислений и акторов в контексте машин Тьюринга — это только подчеркивает его непонимание работы формальных вычислительных моделей.

В принципе ничего нового. Хотя по прежнему удивляет. Человек не смотрел, не понял. Выдернул цитату, да еще не точно, а так как ее понял. И на основании собственных фантазий делает выводы о понимании/не понимании. И вообще о предложении. Ты ж даже не смотрел!

Почему не смотрел? Я посмотрел Вашу презентацию. Если честно — ничего не понял. Пока не смотрел, еще как-то что-то мог додумать из Ваших сообщений.

У Вас какие-то концепты, которые даже не понятно, что это такое. Это структура данных, формат команд или же это абстракция? То есть физически это что? Дальше Вы там рисовали схему переходов состояний Вашей машины. Такая картинка характерна для конечных автоматов, но не для машин Тьюринга или RAM-машин. То есть для них конечно тоже можно составить подобный граф, но это будет странно и излишне. В то же время в своем описании Вы говорите, что Ваша машина делает переходы на произвольные адреса. Это уже особенность RAM-машин. Но при этом Вы говорите о машинах Тьюринга. Поэтому я и говорю, что у Вас какая-то мешанина из разных формальных моделей получается. При том, что не все они эквивалентны: машины Тьюринга и RAM-машины сильнее конечных автоматов.

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

Насколько я понял, там хардварные акторы, только нестандартно описанные.

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

Такая задача решается поиском в ширину. Но и в глубину тоже можно. То есть вы стоите на точке и смотрите на соседние точки. Если их цвет тот, что Вам нужен — добавляете их в очередь (если поиск идет в ширину) или в стек (если поиск в глубину). А дальше, пока стек/очередь не пусты, забираете оттуда первую вершину, «перемещаетесь» на нее и повторяете процесс. В конце все вершины, которые побывали в стеке/очереди — одного цвета с начальной и достижимы с нее. То есть как раз будет как бы «заливка» области.

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

Я такое делал для своей первой (и единственной) игрушки на С++

Недетерминированная. Машина. Тюринга.
В мене все

Та то он засветиться хотел. Умные слова. Может и прокатит.

В фейсбук без логина не пускает. Видимо, группа закрытая.

А что Вы планируете делать с экспоненциальным взрывом количества параллельно выполняемых «потоков» в вашей машине? В этом же вся «беда» НМТ.

Да и в качестве демонстрации работы вашей модели НМТ как-то несолидно реализовывать калькулятор. Вычисления на калькуляторе — это все задачи из P-класса вычислительной сложности. То есть для этого дела даже не надо никакого недетерминизма. Уж лучше возьмите какую-то очень маленькую NP-полную задачу, типа, переменных на 10, и ее реализовывайте. В этом случае даже если потоки «расплодятся» на каком-то входном примере, то их будет не больше 2^10=1024. То есть вам потребуется не больше 1024 «процессоров» для обработки всех путей параллельно.

А что Вы планируете делать с экспоненциальным взрывом количества параллельно выполняемых «потоков» в вашей машине? В этом же вся «беда» НМТ.

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

Так до сих пор 2 кеша: кеш инструкций и кеш данных. И работают они по-разному. А то, что под ними лежит общая рама — так она дешевле в таком общем виде. Да и ОСь тоже код и данные по-разному защищает, вроде.

Так до сих пор 2 кеша: кеш инструкций и кеш данных. И работают они по-разному.

Ну, это и понятно.

Да и ОСь тоже код и данные по-разному защищает, вроде.

А это по разному в машинах и осях. Обычно систему защищают весьма жестко.

Я правильно Вас понимаю — Вы утверждаете, что придумали способ реализовать НМТ таким образом, что в ней не бывает экспоненциального количества параллельно выполняющихся «потоков»? Иначе говоря, Вы придумали способ, как опровергнуть гипотезу экспоненциального времени ETH?

Вы утверждаете, что придумали способ реализовать НМТ таким образом, что в ней не бывает экспоненциального количества параллельно выполняющихся «потоков»?

Я этого не утверждал. С дуру можно все что угодно сделать. Я утверждаю что разумно глупостей не делать.

Я утверждаю что разумно глупостей не делать.

Это в принципе хороший совет. Но! Проблема НМТ заключается в том, что мы не владеем алгоритмом, который бы позволял нам их эффективно симулировать на обыкновенных, классических машинах. И большинство здравого народа склонно верить, что такого алгоритма и не существует. Более того, есть немалый процент людей, которые полагают, что и квантовые машины нам тут мало помогут. То есть наиболее вероятно, что модель НМТ куда сильнее классических и квантовых машин. Да, есть задачи, которые можно легко решить как на НМТ, так и на классических машинах или детерминированных машинах Тьюринга. Такие задачи мы называем P-задачами. Это те задачи, что в академических кругах называют простыми.

Но есть задачи, которые НМТ легко решает, но почему-то любая попытка их разрешить на классических или квантовых машинах приводит к экспоненциальному времени выполнения. Яркие примеры — это Travelling Salesman Problem (TSP) или Satisfiability (SAT). Поэтому, когда я Вас спросил, что Ваша машина будет делать на подобных задачах, и как Вы планируете решать вопрос об исследовании экспоненциального количества возможных путей, Вы мне ответили:

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

Из чего я сделал вывод, будто Вы или Ваша машина «знаете» способ, как за меньшее, чем экспонента времени найти «правильный» путь. Иначе говоря, Ваша машина не просто опровергает ETH, она доказывает, что P = NP — одну из задач тысячелетия. За ее решение институт Клэя дает миллион бакинских.

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

То есть наиболее вероятно, что модель НМТ куда сильнее классических и квантовых машин.

Я тоже так думаю. Ибо если моя машина (за все НМТ я не скажу) порождает новую МТ. По теореме Кантора мощность множества всех подмножеств выше.

Потому что Вы особо ничего о своей машине не рассказываете, ни о ее принципах, ничего.

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

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

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

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

Как МТ, только на каждой ячейке переход головки не просто в следующее место, а может породить новые головки, которые перейдут каждая на свою ячейку.

Ну, да — это по факту и есть недетерминизм. К сожалению, такой подход нереализуем. Все дело в экспоненциальном взрыве. Смотрите, допустим, в какой-то момент времени в результате выполнения «алгоритма» (или концептов) головка разделилась надвое (заметьте, что головка — это материальный объект, который состоит из атомов; это замечание будет важно в дальнейшем). Теперь алгоритм построен так, что каждая из этих головок снова делится надвое. Теперь у нас 4 головки. Через пару итераций они снова все вынуждены разделиться согласно алгоритму. И потом снова, и снова, и снова. И допустим до выполнения задачи они разделились 1000 раз. То есть в конце выполнения алгоритма-концепта у вас будет 2¹⁰⁰⁰ головок. Это число с 302 цифрами. Это в базиллион раз больше, чем предполагаемое количество элементарных частиц в видимой Вселенной! В нашей Вселенной не хватит просто материи для такого количества головок. Да и нет такого количества энергии, чтоб выполнить подобные вычисления

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

В нашей Вселенной не хватит просто материи для такого количества головок.

Это ценная мысль.Тьюринг не допер что с бесконечной лентой та же проблема.

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

Но при этом это настолько простая и удобная абстракция, что именно ее чаще всего используют в качестве эталонной модели абстрактного вычислителя. Не лямбда-вычисления, не RAM-машины и не конечные автоматы. Именно машины Тьюринга стали стандартом. А все благодаря простоте их описания, легкости визуализации, но в то же время мощности, которая позволяет на них реализовывать все то, что наша интуиция называет алгоритмами.

ПС. А еще благодаря именно своим абстрактным машинам Тьюринг доказал невычислимость проблемы Остановки.

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

Я не упускаю. И проектирую систему и язык именно так, что бы реализовать в железе и даже на существующих контроллерах. ESP32 вполне подойдет и это будет уже бомба. Ограничений на самом деле гораздо больше. Сочинить такое что будет работать в .Net и такое что можно реализовать это разные задачи. В этом отношении я сторонник практических дел. И даже коммерции. Только от этого не легче. Пока не вижу энтузиазма будущих миллиардеров)).

Вы не «взрываете мосты». Количество потоков может ведь не только увеличиваться, но и уменьшаться. Что если это компенсирует и недостаточности ресурсов не случится?

Тогда можно просто завести 32 потока и ими посчитать (поиск в ширину — из задачи он нахождении всех связанных пикселей одного цвета)

Это неважно. Дайте мне описание Вашей машины и алгоритма для решения «сложных» задач, и я всегда смогу построить и «скормить» Вашей физической эмуляции НМТ такой входной пример, что она будет вынуждена «наплодить» безумное количество головок. Иначе говоря, она не способна решать произвольные примеры этих «сложных» задач. А нам именно это интересно в НМТ, поскольку они то способны решать любые входные примеры «сложных» задач.

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

ПС. На самом деле тут я немножко привираю, когда говорю, что НМТ способны быстро решать задачи, которые не способны решать классические машины. На сегодняшний день это не доказано. Потому то гипотеза экспоненциального времени называется именно гипотезой. Да и проблема NP vs. P — все еще открытая проблема.

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

Если реальная НМТ сможет дешифровать любой шифр за короткое время — стоит ли ее создавать?

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

Из чего я сделал вывод, будто Вы или Ваша машина «знаете» способ, как за меньшее, чем экспонента времени найти «правильный» путь. Иначе говоря, Ваша машина не просто опровергает ETH, она доказывает, что P = NP — одну из задач тысячелетия.

Может и решить. Потому как в теории увеличивается количество головок. В железе это растет количество шин адресации.

Но шины же ограничены в железе?

Но шины же ограничены в железе

Я тебе больше скажу. Мы все когда то умрем.

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

Главное что на современном можно быстрее в бизнес вывести.

Тогда надо бизнесу рассказать, чем новая система лучше, чем Эрланг, Го или АККА. Все они позволяют из коробки создавать асинхронные сущности, кидающие друг другу сообщения.

Я не знаю кому именно рассказывать. Если кого найдешь то посоветуй зайти на фейсбук www.facebook.com/groups/1084931979000426
Я только что скинул один из ключевых моментов выполнение групп. Это интересно. А еще хотел бы услышать вопросы. Ибо их должно быть много.

Надо не вопросы, а сравнение с эрлангом. Что новая система делает лучше, чем старая, и какие проблемы эрланга оно решает.
Либо другой современный язык или фреймворк найти, который умеет близкие вещи делать.

Это как корабль сравнивать с автомобилем. Разные вещи вообще. Я уже не говорю что такого не было еще. Это как комп сравнивать с печатной машинкой.

Ну вот надо написать, чем они разные.
Те, кто делали современные персональные компьютеры, как раз пытались заменить печатные машинки. Говорили, как легко будет исправлять ошибки. Как можно будет посмотреть результат набора, не тратя бумагу и чернила.
То есть — они изучили проблемы пользователей печатных машинок и предложили таким людям решение их проблем.

Мне насрать. Я с тупыми вообще общаться не хочу. А кому надо пусть напряжет мозги.

Так никому же не надо?
Разве не видно?

Я то знаю что надо. И знаю кому. Хер их знает почему они не интересуются.

У них уже есть удобные инструменты, которыми они умеют пользоваться

У них уже есть удобные инструменты, которыми они умеют пользоваться

У них есть неразрешимые проблемы которые уже являются тормозом для их развития. Те же умные дома не развиваются потому как легко сделать один выключатель. Чуть сложнее интегрировать с фотоэлементом. Совсем сложнее интегрировать в систему из 10 устройств. И на этом развитие останавливается. Ни одна из существующих систем не может легко интегрироваться и изменять полностью функционирование пользователем. Насколько я в курсе аякс 2 года делает интеграцию антипотопа и в итоге жопа. А у меня легко со всем что только можно придумать интегрируется. Это огромные бабки. Нет конкуренции в мире. А им не надо. Они даже разговаривать со мной не хотят. Там полная секретность всего.

Просто умные дома никому нафиг не надо. Детское баловство, за которое пролетариат не готов платить. Мода прошла.

Детское баловство, за которое пролетариат не готов платить

Пролетариат не готов платить за то, чем он не может пользоваться. Это почти булгаковская проблема. Дело не в том, что человек не знает чего он хочет. А в том, что он не знает чего он захочет завтра. А для этого он сам должен иметь возможность легко настраивать свою систему. Сегодня так, а завтра пришла теща и он хочет что б по другому включалось/выключалось. И добавлялось убиралось. В течении 5 минут и не заглядывая в инструкцию. Сейчас опция добавить чего-то или перенастроить от 10 000$ будет стоить. И нахер такая система пролетариату?

Сама система не надо. За килобак можно или покрыть квартиру непотребными датчиками (которые в производстве стоят по 3 бакса, а в продаже — по 50), или докупить бетонометр. Выбор очевиден.

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

Хорошие продукты решают pain in the ass покупателей. Робот-пылесос, например. А умный дом — не решает, похоже. А кому решает — тот купил конструктор одного производителя, раз настроил и забыл на пару лет, пока не надо будет батарейки менять.

Это долгий разговор. Есть еще промышленная автоматика. И куча других применений. Короче реальный бизнес

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

Ты вроде бы прав. Но, не прав) У меня есть аргументы. Эта система пойдет и в космос и для вояк. Но, это совсем подробная тема. Суть в том, что система реально на асме и на С пишется. А остальное данные)). Формализованные данные. Надеюсь ты понимаешь что это такое. Там не может быть ошибок. Математически)

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

Чем придумывать проблемы, ты лучше рекомендуй кому-то. А за детали мы обсудим когда практически. Заранее благодарен. Пока вопросов нет))

Я не буду рекомендовать то, о чем не вижу, чтобы оно было лучше существующих систем.

Та нет никакой беды. И нет экспоненциального взрыва. Если мозги включать, конечно.

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

Уже делал. И транслятора три версии. Не на чем показать было. Вот придумал эту штуку для демонстрации. Которая, кстати, уже готова к коммерции. Если кто заинтересуется.

Сори. Для тех, кто не в теме.

Предлагается архитектура компьютера реализующая недетерминированную машину Тюринга. Работа новой машины ( в дальнейшем МК) отличается от классической тем, что головка машины(абстрактное понятие) реализуя адресацию ячейки t в зависимости от состояния этой ячейки может переходить по нескольким адресам одновременно. Т.е. для эффективной реализации такого компьютера предполагается несколько процессоров и несколько шин доступа к памяти.
Программирование в этом случае предполагает не создание последовательности команд, как в императивной парадигме, а создание объектов (концептов) описывающих состояния и переходы (адресации к другим концептам) называемыми подписками. Событие это изменение состояния концепта и обычно носит название нового состояния.
Ячейка к которой адресуется головка не обязательно команда, как в императивной парадигме. Это некая структура данных имеющая собственные состояния и формулирующие реакции на эти состояния. Эта структура названа концептом. Определение состояний концепта, определение реакций (подписок) это и есть задача программиста.
Множество концептов определенных таким образом и функционирующий в МК напоминает функционирование нейронной сети. Однако, в отличии от нейронной сети результат можно предсказать. Собственно, этим и занимается программист. Но, это не единственный плюс. Уже функционирующее множество концептов (хочется сказать программа, но это не программа и не алгоритм в классическом определении) можно расширить добавив новые концепты и новые подписки на уже определенные концепты новым функционалом не изменяя то, что функционировало ранее. А вот это уже полезная фишка, для тех, кто сталкивался с изменением заказчиком ТЗ.

Результат нельзя предсказать при обработке одновременных запросов — вот задачка из соседней темы dou.ua/...​rums/topic/35566/#2284401

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

Там о транзакциях — как сделать, чтобы изменение применилось ко всем трем объектам, или ни к одному из них.
В реальной жизни самое простое проявление транзакций — денежные переводы. Нужно, чтобы в одном банке деньги снялись со счета, а в другом — добавились. Даже если интернет пропал, или компьютер сгорел. Если деньги только снялись или только добавились — фигня. Если снялось больше денег, чем было, или снялись 2 раза — фигня. Если снялись, а счета, на который нужно добавить, уже не существует — фигня. То есть, надо или гарантировано снять и добавить, или — не снять и не добавить.

Это решенная задача. У меня другой вопрос. А зачем ты мне их даешь?

Они решаются с современным железом синхронными вызовами. И создают проблемы для асинхронных систем.

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

про какие асинхронные системы речь? или о какой асинхронности речь?

Акторы или микросервисы — системы без общей памяти.

В блокчейн записываются только корректные транзакции. Достигается это разными способами согласования между всеми node — достижение консенсуса. В солана например proof of history.
Ты кажется действительно ищешь способ создать еще одну криптовалюту.

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

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

Никак — все равно надо собрать данные по сети со всего мира. А сеть тормозная и глючная.

В таком случае тебе нужна квантовая телепортация информации. Она мгновенная.

Кстати, еще задачка на продумать решение. Из Кабанчика balka-book.com/...​irovanie_podderzhka-66888
Есть дежурные врачи, несколько штук. У каждого в базе отмечается, будет ли он дежурить этой ночью (отдельное поле). Врач может заболеть (отказаться дежурить) если есть другой дежурный. Как гарантировать, что хоть один дежурный остался, если врачи лезут в базу одновременно.

У тебя интересные задачи. Только постановка хромает. Что значит

врачи лезут в базу одновременно.

?
Насколько одновременно и зачем? Отпрашиваться? И полномочия того кто должен гарантировать?

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

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

Через CAS операцию. Декремент дежурств должен быть атомарным. Если ты вычитаешь уже с нуля, тебе не дают возможность отказаться дежурить

PS: Вчера не увидел твой пост. Отписал про дом гараж и будку

CAS операция требует счетчик. Здесь в условии на каждого врача заведен bool, а счетчика нет.
Такая же фигня, когда надо поапдейтить файлы на нескольких серверах, или состояние нескольких акторов — там счетчика и быть не может, потому что система распределенная.

Тогда Лок на уровне объекта процесса или оси или завести атомарный счётчик в памяти

А в распределенной системе, которая на нескольких компах живет?
Или в тех же акторах (идентичных идее автора топика)? Акторы видят только свое внутреннее состояние, и не могут читать/менять глобальные переменные или висеть на локах.

А в распределенной системе, которая на нескольких компах живет?

Оркестратор

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

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

Я до конца не продумал решение этих задач, но есть подозрение (обоснованное) что оно есть. Я не дошел еще до двойственной природы концептов и событий. Буду рассказывать когда группирование буду объяснять. Это через день-два. Дело в том, что кроме императивной части, команды, функции и адресация (все концепты) имеет еще логическую составляющую. Это событие выполнение. Оно может быть истинным или ложным. Негласно предполагается что любая группа операторов выполняется истинно. Однако, это не так. Фактически выполнение концепта можно рассматривать как высказывание и, таким образом, анализировать логические высказывания. Эта же машина выполняет логический анализ. Как в Прологе. Так вот к решению задач можно подключить эту логику. Это делается элементарно подписками на событие «выполнение». Именно так описание грамматики языка у меня средствами этого же языка и это же описание становится транслятором, который выполняет машина. Отдельно такая программа как «транслятор» отсутствует. Это просто редактор. Или вид Текст. Т.е. представление концептов в виде текста. Калькулятор — это представление концепта в виде перечня атрибутов. Вид «Таблица» — это представление концептов одного класса. Получаем Excel. Вид «Схема событий»-это типа схемы данных как в базах данных. Вид «Браузер» это графическое представление с элементами управления. Ну, и т.д..Что-то я разболтался. Жду на фейсбуке.

Нет меня в фейсбуке. И он не пускает без учетки.
Проблема распределенных систем в том, что нельзя заявить об истинности значения суммы таблицы. Потому что пока одна программа считает эту сумму по всем элементам, другая могла изменить данные. И программы никак не могут блокировать такое изменение, так как все события только по подпискам.
И большинство реальных систем с таким жить не могут — на вопрос «сколько 2 + 2» хотят слышать «4» а не «недавно было около 4».

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

Это проблема не распределенных систем, а твоя. На когда спрашиваешь сумму, на тот момент и получаешь. Если по моей системе, то создай событие завершения чего-то там хочешь и подпишись на получение суммы. Вот и все решение. Как бы глупо учить тебя зарегистрироваться на фейсбуке, но для того что б сделать ролик на 10 минут у меня уходит полдня подготовить материалы. Так что извини. Что б ответить здесь тоже надо думать. Определяйся сам.

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

Сумма же из нескольких концептов не одномоментно получается?

Для суммирования нужен концепт-сумматор, который разошлет на концепты-данные запрос «а какое у тебя сейчас значение?». Каждый из концептов-данных, когда у него будет свободное процессорное время, и не будет более срочных задач, пошлет сумматору ответ «у меня значение 2». А сумматор, получая ответ, добавит его к своему счетчику. И после получения количества ответов, равного заданному заранее размеру контейнера с данными (известной перед запросом сумматору длине массива), сумматор выплюнет обратно результат.

Вот такой асинхронный процесс суммирования не одномоментный, а размазан по времени. И если в это время данные меняются (из-за их подписок на события, или из-за того, что внешний агент с ними работает), то сумма как раз получится «приблизительно 2-3 секунды назад сумма значений в массиве была приблизительно равна 4».

Ты с другой стороны попробуй решать задачу. Не со стороны тех кто активизирует транзакции, а со стороны их обработчика. Сформулируй там критерий и событие. А потом с внешней стороны оформи подписку на это событие. Вот это возможно на моей системе.

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

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

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

Вот еще одна формулировка.
Есть элементы данных:
D1, D2
Каждый из них может принимать значение 0 или 1, значение по умолчанию 0.

У этих элементов данных есть подписчики:
ADD, SUB
ADD подписан на уведомление о том, что элемент D[i] нулевой. При таком событии он отсылает команду на D[i] увеличить значение на 1 и отсылает на PRINT нотификацию о том, что мы увеличили значение в одном из элементов на 1. При запуске программы ADD опрашивает элементы и увеличивает их значения.
SUB подписан на уведомление о положительном значении D[i]. При получении уведомления он отсылает команду D[i] уменьшить значение на 1 и отсылает на PRINT уведомление о том, что значение какого-то элемента уменьшено.

Есть PRINT который подписан на нотификации от ADD и SUB о действиях в системе. PRINT содержит счетчик того, сколько единиц сейчас выставлено в данных. Вначале счетчик нулевой. При получении нотификации от ADD мы увеличиваем счетчик на 1, при нотификации от SUB мы уменьшаем счетчик на 1. При каждой нотификации мы после действия со счетчиком печатаем его значение на экране.

Все действующие лица отрабатывают параллельно и асинхронно. Нотификации обозначаем ->, значения через =

: D1=0, D2=0, PRINT=0
ADD->D1, D1=1, D1->SUB
ADD->PRINT, PRINT=1
ADD->D2, D2=1, D2->SUB
SUB->D1, D1=0, D1->ADD
SUB->PRINT, PRINT=0
SUB->D2, D2=0, D2->ADD
SUB->PRINT, PRINT=-1 (у нас в системе −1 элемент со значением 1)
ADD->PRINT, PRINT=0

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

Большинство программистов предпочитает полагаться на такую информацию — без нее слишком сложно предсказать результат выполнения кода.

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

Ячейка к которой адресуется головка не обязательно команда, как в императивной парадигме. Это некая структура данных имеющая собственные состояния и формулирующие реакции на эти состояния. Эта структура названа концептом. Определение состояний концепта, определение реакций (подписок) это и есть задача программиста.

Мне показалось, что воть это очень похоже на csaa.ru/...​samoopredeljaemye-dannye И соответственно операция (команда) выполняется над определенной структурой данных. Вроде юзается сейчас только ельбрусом, но в сильно обрезанном варианте, вслетствие чего особого баффа не дает. Есть еще www.csl.sri.com/...​91213-ctsrd-ftr-final.pdf Это так навскидку так сказать.
А вообще неплохо б начинать с рассмотрения аналогов )

Просто оставлю это туть)
ua.publ.science/...​yu-statyu-struktura-imrad

Похоже. Только я дальше пошел. У меня все что в машине самоопределяется. Ну, и работа самой машины. Кроме того группирование. Там принципиальные моменты. Ну, события.. Тоже определяются.

Кстати, только что выложил новый ролик с принципами формирования концептов и примеры. Начало синтаксиса. Завтра выложу принципы группирования.

Є посилання на репозиторій з кодом?

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

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