Инь и ян программирования или alter ego многопоточности

Происходит вполне осязаемый процесс зомбирования многопоточностью. А потому хотелось бы кое-что уточнить, конкретизировать, что можно считать параллельными вычислениями и, соответственно, параллельным программированием, а что нельзя. Предположим, перед вами «черный ящик». Это может быть, к примеру, ваш комп , ноут или хотя бы смартфон. Нет внешних критериев, по которым вы могли бы идентифицировать алгоритм его работы. В смысле параллельный он или последовательный. Следовательно, для любой последовательной программы должен быть универсальный формальный механизм, преобразующий ее в эквивалентную параллельную программу и наоборот . Уже давно известны универсальные модели последовательных алгоритмов, такие как машина Тьюринга или машина Поста. Есть и другие модели, но без потери общности вполне можно ограничиться упомянутыми. Но современный собеседник буквально впадает в ступор, когда речь заходит о модели параллельных вычислений. Но так было не всегда. В 80-х годах прошлого века математики, программисты и другие, причастные к процессу алгоритмизации и программирования, пытались такую модель создать. К сожалению, все, похоже, завершилось автоматом сетями Петри. Но даже с учетом столь печального факта, как не успешность таких поисков, должна существовать, как и в случае последовательных алгоритмов, модель параллельных алгоритмов. Без нее разговоры об упомянутом выше преобразовании алгоритмов просто не имеют смысла. В силу философского закона единства и борьбы противоположностей, когда есть одно, то должно быть и другое. Так, если есть свет, то, как ни крути, будет и тьма. Когда есть хорошее, то рано или поздно, как ни избегай, будет и плохое (жизнь, как известно, в полоску). А если есть последовательное программирование, то должно быть, как его ни назови, альтернативное ему - параллельное. А если уж оно есть или, как минимум, обсуждается, то необходимо дать ему определение, аналогичное по смыслу моделями обычных алгоритмов. Все это естественно и даже очевидно, когда речь идет о научных понятиях и, как в нашем случае, о науке программирования.

https://habr.com/ru/articles/978350/

#параллельное_программирование #автоматное_программирование #матлаб #simintech #qt

Инь и ян программирования или alter ego многопоточности

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

Хабр

Два притопа, три прихлопа

Подготавливая статью [1] к публикации, обратил внимание на картинку, показанную на рис. 1. Я сохранил ее, чтобы воспользоваться в будущем. И оно не заставило себя ждать, т.к. захотелось повысить наглядность решения, введя в него графику и используя именно эту картинку. К чему это привело, далее мы и поговорим. Все, что связано с картинкой, сделать не так уж сложно. Это довольно подробно описано в цикле статей по реализации графики в ВКПа (см. [2]). Для этого, во-первых, нужно создать графическое окно, установив данную картинку в качестве фона. Во-вторых, воспользоваться существующими заготовками контролов (элементов графического интерфейса), которые необходимо будет разместить на данном фоне.

https://habr.com/ru/articles/975032/

#автоматное_программирование #параллельное_программирование #дейкстра #c++ #esp32

Два притопа, три прихлопа

Подготавливая статью [1] к публикации, обратил внимание на картинку, показанную на рис. 1. Я сохранил ее, чтобы воспользоваться в будущем. И оно не заставило себя ждать, т.к. захотелось повысить...

Хабр

Три способа менять один объект из нескольких потоков. Больше нет

Три способа менять один объект из нескольких потоков. Больше нет Mutex, CAS, акторы, STM, CRDT, иммутабельность, MVCC, Disruptor… Когда читаешь про многопоточность, кажется, что способов — десятки, и каждый требует отдельного изучения. На самом деле их ровно три . Всё остальное — реализации и комбинации. Эта статья — попытка навести порядок в голове. После неё вы сможете: за 5 секунд классифицировать любой подход к конкурентности; понимать, почему Erlang выбрал акторы, а Java предлагает synchronized ; не изобретать велосипеды и не зацикливаться на «единственно правильном» решении; проектировать многопоточный код, держа в голове простую модель

https://habr.com/ru/articles/974198/

#параллелизм #параллельное_программирование

Три способа менять один объект из нескольких потоков. Больше нет

Mutex, CAS, акторы, STM, CRDT, иммутабельность, MVCC, Disruptor… Когда читаешь про многопоточность, кажется, что способов — десятки, и каждый требует отдельного изучения. На самом деле их ровно три ....

Хабр

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

Задача Эдсгера Дейкстры о философах – великая задача великого программиста. Уж сколько лет, а она актуальна. Решая ее, прикасаешься к этому величию. И вот, перефразируя известное, «давно не было такого и вот опять», можно познакомиться с ее «новым прочтением» на Хабре [1]. Ну, как новое?… Но она стала тем триггером, который подвигнул меня к очередной попытке ее решения. Тем более, что с момента знакомства с философами пролетела уйма лет, а в багаже - опыт применения автоматной модели и значительно усовершенствованная среда их реализации. Познакомился с проблемой обедающих философов – Dinning Philosopher Problem (DPP), я более двадцати лет тому назад (про DPP см. [2]). Результатом стала статья, в которой философы выполняли поставленную задачу, как минимум, не хуже, чем классические алгоритмы сортировок [3]. Позднее был сделан доклад на конференции по параллельным вычислениям в Саратове, где на суд научной общественности была предъявлена модель автоматных параллельных вычислений и пример ее приложения - задача Дейкстры [4]. Замечание 1 . В рамках обсуждения статьи на Хабре было проигнорировано предложение поручить сортировку философам. Зря, конечно, т.к. надо же как-то убедиться, что предлагаемое решение работает хотя бы в первом приближении. К примеру, тот же DeepSeek, моментально выдавший свое решение DPP, так и не смог заставить их сортировать. Не знаю, считается ли данная задача решенной, но то, с чем я знаком, по большей части беглое рассмотрение проблем, которые она отражает. У задачи есть теория, которая представлена монографией Хоара[5], или моделями сетей Петри у Питерсона[6] и В.Е. Котова[7] или другими подобными публикациям. Но, повторюсь, все это по большей части достаточно краткий анализ свойств модели и/или даже конкретного решения. Статья на Хабре из этой же серии. Все это ни как не окончательное решение описываемых ею проблем параллелизма. Правда, может, [авторами] вопрос так и не ставился, но все же ответ на него весьма желательно иметь.

https://habr.com/ru/articles/969036/

#автоматное_программирование #параллельное_программирование #дейкстра ++ #микроконтроллеры #сортировки

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

Задача Эдсгера Дейкстры о философах – великая задача великого программиста. Уж сколько лет, а она актуальна. Решая ее, прикасаешься к этому величию. И вот, перефразируя известное, «давно не было...

Хабр

Project Euler. Векторное программирование и задача номер 1

Добавляем щепотку векторного программирования в задачки проекта Эйлер. Заодно разбираемся, как эффективно реализовать деление на константу.

https://habr.com/ru/articles/929416/

#riscv #векторизация #параллельное_программирование #параллелизм

Project Euler. Векторное программирование и задача номер 1

Project Euler — некоммерческий проект, демонстрирующий, как математика помогает писать качественные и быстрые программы. По-моему, если к математике добавить векторизованный код, результат будет...

Хабр

О векторном вычислении экспоненциальной функции

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

https://habr.com/ru/articles/923234/

#Simd #avx512 #параллельное_программирование #векторизация

О векторном вычислении экспоненциальной функции

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

Хабр

[Перевод] Ищем игры для Atari в случайных данных

В рамках этого проекта я сгенерировал около 30 миллиардов файлов случайных данных по 4 КБ. Из этих файлов на основании эвристик из полной коллекции файлов ROM Atari было выбрано примерно 10 тысяч. Затем система классификатора просканировала их при помощи эмулятора Atari 2600, чтобы проверить, окажется ли какой-то из этих случайных файлов игрой для Atari. Этот проект отвечает на вопросы, которые никто не задавал, он никому не нужен и представляет собой огромную пустую трату ресурсов. Что, если засунуть в GPU миллиард обезьян и заставить их написать игру для Atari 2600? Благодаря прогрессу GPU, ИИ и машинного обучения сегодня мы можем (очень быстро) написать на Python скрипт, который дампит мусор в ROM по 4 КБ и спрашивает: «похоже ли это на игру?». Проект был создан не из ностальгии, моей первой консолью была NES. Я вознамерился исследовать нечто невообразимо обширное и посмотреть, найдётся ли там что-нибудь странное.

https://habr.com/ru/companies/ruvds/articles/918026/

#atari #atari_2600 #параллельное_программирование #gpu

Ищем игры для Atari в случайных данных

В рамках этого проекта я сгенерировал около 30 миллиардов файлов случайных данных по 4 КБ. Из этих файлов на основании эвристик из полной коллекции файлов ROM Atari было выбрано примерно 10 тысяч....

Хабр

[Перевод] Ищем игры для Atari в случайных данных

В рамках этого проекта я сгенерировал около 30 миллиардов файлов случайных данных по 4 КБ. Из этих файлов на основании эвристик из полной коллекции файлов ROM Atari было выбрано примерно 10 тысяч. Затем система классификатора просканировала их при помощи эмулятора Atari 2600, чтобы проверить, окажется ли какой-то из этих случайных файлов игрой для Atari. Этот проект отвечает на вопросы, которые никто не задавал, он никому не нужен и представляет собой огромную пустую трату ресурсов. Что, если засунуть в GPU миллиард обезьян и заставить их написать игру для Atari 2600? Благодаря прогрессу GPU, ИИ и машинного обучения сегодня мы можем (очень быстро) написать на Python скрипт, который дампит мусор в ROM по 4 КБ и спрашивает: «похоже ли это на игру?». Проект был создан не из ностальгии, моей первой консолью была NES. Я вознамерился исследовать нечто невообразимо обширное и посмотреть, найдётся ли там что-нибудь странное.

https://habr.com/ru/companies/ruvds/articles/918026/

#atari #atari_2600 #параллельное_программирование #gpu

Ищем игры для Atari в случайных данных

В рамках этого проекта я сгенерировал около 30 миллиардов файлов случайных данных по 4 КБ. Из этих файлов на основании эвристик из полной коллекции файлов ROM Atari было выбрано примерно 10 тысяч....

Хабр

10 самых интересных ошибок в Java проектах за 2024 год

В 2024 году мы проверили много проектов, о чём регулярно писали в свой блог. Теперь же настала новогодняя пора, и самое время рассказывать новогодние истории. Вот и мы решили поведать о самых интересных Java ошибках, встреченных нами в Open Source проектах.

https://habr.com/ru/companies/pvs-studio/articles/869920/

#топ10 #опечатки #ошибки #java #opensource #параллельное_программирование #паттерны #тесты #микрооптимизация #pvsstudio

10 самых интересных ошибок в Java проектах за 2024 год

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

Хабр

Параллелизм и феномен ван дер Поля

Зачем нужны потоки, если есть параллелизм ВКПа? Поговорим об этом подробнее. По существу мы тем самым продолжим тему статьи[ 1 ], рассмотрев только более сложный пример, чем простые и абстрактные счетчики. Рассмотрим по ходу сначала пример, а уж потом и его реализацию на потоке. Поехали?!

https://habr.com/ru/articles/854814/

#конечные_автоматы #simintech #вкпа ++ #параллельное_программирование

Параллелизм и феномен ван дер Поля

Зачем нужны потоки, если есть параллелизм ВКПа? Поговорим об этом подробнее. По существу мы тем самым продолжим тему статьи[ 1 ], рассмотрев только более сложный пример, чем простые и абстрактные...

Хабр