Обновить
-7
0

Пользователь

Отправить сообщение

Кто реально угрожает C++ (нет, Rust, не ты)

Время на прочтение14 мин
Охват и читатели86K

Привет! Меня зовут Александр Каленюк, и я крепко подсел на C++. Пишу на C++ 18 лет кряду, и все эти годы отчаянно пытаюсь избавиться от этой разрушительной зависимости.

Всё началось в конце 2005 года, когда мне довелось писать движок для симуляции 3D-пространства. В этом движке было буквально всё, чем язык C++ мог похвастаться в 2005 году. Трёхзвёздочные указатели, восьмиуровневые зависимости, C-подобные макросы повсюду. Кое-где – вкрапления ассемблера. Итераторы в стиле Степанова и мета-код в стиле Александреску. В общем, всё. Кроме ответа на самый важный вопрос: зачем?

Читать далее

Как привести электроны и фотоны к общему знаменателю

Время на прочтение8 мин
Охват и читатели4.8K

Меня довольно смущает плохо замаскированная эмерждентность окружающего мира, причём не только пространства, но и времени. Ранее я не мог не высказаться о знаменитом эксперименте с двумя щелями, а также о некоторых парадоксальных свойствах субатомного мира. Например, о том, что протон, по-видимому, самопроизвольно не распадается вообще, а нейтрон не распадается только в составе атомного ядра — в свободном же состоянии период полураспада нейтрона составляет около 10 минут. Как я ещё раньше упоминал в статье «Вы снова здесь, изменчивые тени», можно каким-то рациональным образом обосновать подобные факты, если допустить, что элементарные частицы – это тени четырёхмерных объектов, однако, это скорее фантазия, чем гипотеза. Сегодня же я хочу рассказать ещё об одних удивительных фермионах, зафиксированных в ушедшем 2024 году и названных «электронами Дирака». Электроны Дирака приобретают массу, лишь будучи в движении, и догадки о сути их природы, возможно, потребуют уточнить наши представления об электронах и фотонах.

Читать далее

Мультиагенты ИИ, мультиагенты неИИ и актеры. Адаптивность и автономность

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели1.7K

Данная статья является попыткой моего личного обобщения и выделения различий над зоопарком современных технологий, в которых в том или ином виде используются термины: мульти-агенты ИИ (ollama, meta, camel), мульти-агенты неИИ (MAS, эмержность, интеллект роя) и актеры (Akka, асинхронность, сообщения). А также интерес применимости к домену планирования - логистики, производства. Составления расписаний. С упором на футуристичность =)

Читать далее

Модификация автопилота роботакси для движения по изолированным полосам

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели626

Роботакси сталкиваются с серьезными проблемами в городских условиях. Предлагаемое (не мое и не новое) решение – изолированные полосы. Но для движения по ним необходима модификация автопилота роботакси.

Читать далее

Кэш. Теория кэширования. Устройство и разновидности кэша

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели12K

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

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

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

Стать гуру кэша

Транскриптомный анализ: как посчитать гены?

Уровень сложностиПростой
Время на прочтение20 мин
Охват и читатели2.8K

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

Читать далее

Rust 1.84: новый релиз отличного языка программирования. Еще лучше, еще эффективнее, как всегда

Время на прочтение6 мин
Охват и читатели9.7K

Источник изображения.

Вышел новый релиз языка программирования Rust версии 1.84. Этот язык общего назначения изначально разрабатывался проектом Mozilla, но теперь его поддерживает независимая некоммерческая организация Rust Foundation. Rust ориентирован на безопасную работу с памятью и обеспечивает высокий уровень параллелизма выполнения задач, не прибегая к сборщику мусора или полноценному runtime (runtime ограничен базовой инициализацией и поддержкой стандартной библиотеки). Что нового? Давайте разбираться.
Читать дальше →

Создание алгоритма для мультиагентной системы

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели2.1K

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

Существует 2 вида структуры агента: гетерогенное и гомогенное. Гомогенные агенты сконструированы идентично, то есть особо не отличаются друг от друга. А гетерогенный вид означает, что агенты отличаются друг от друга.

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

Существует 2 основных подхода управления роботами: централизованная и децентрализированная. Централизованная система означает, что есть один какой‑то агент, который руководит всем. А децентрализованная противоположна централизованной, то есть каждый агент действует независимо.

Мультиагентная система (МАС) — это система, состоящая из нескольких интеллектуальных агентов. Например, муравейник, он состоит из множества агентов, муравьев.

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

Цель работы — Создание математической модели и алгоритма для роботизированной системы. Задачи:

Читать далее

Суперкомпьютер Эльбрус-3

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели11K

История Эльбрус-3

В период с 1984 по 1985 год, когда завершалась разработка первых процессоров «Эльбрус-2», команда Эльбруса под руководством Бориса Арташесовича Бабаяна приступила к предварительным работам над машинами следующего поколения. В 1985 году ИТМиВТ получил государственный заказ на проектирование и создание машины с теоретической максимальной производительностью в 10 ГФлопс. Основные требования к «Эльбрусу-3» оставались такими же, как и к «Эльбрусу-1» и «Эльбрусу-2». Особое внимание уделялось высокой производительности как в научных, так и в универсальных вычислениях, надёжности и совместимости программного обеспечения с ранними моделями «Эльбруса».

В конструкции «Эльбруса-1» и «Эльбруса-2» присутствовал ряд недостатков, которые делали их неподходящими в качестве основной машины с требуемой производительностью, необходимой в государственном применении. Помимо архитектурных ограничений в производительности, требовалось получать больше информации о выполнении программного кода и зависимостях команд и данных в момент исполнения, которая не была доступна динамическому планировщику в момент исполнения.

Планировщик мог учитывать в лучшем случае до 32 инструкции наперёд (общее количество буферных станций, содержащих инструкции и операнды или адреса операндов в каждом функциональном блоке). Часто этого было недостаточно, особенно в случае передачи условного управления (ветвления кода). Более того, динамическое планирование существенно затрудняло отладку. Невозможно было статически определить точный порядок исполнения инструкций. Вариативность в планировании одного исполнения к другому также влияли на показатели производительности. Бабаян отмечает, что ему было крайне трудно демонстрировать работу системы приёмной комиссии по причине того, что не удавалось добиться повторяемости результатов измерения производительности. По этим причинам было решено использовать конвейерные функциональные блоки и сосредоточиться на статическом планировании исполнения команд.

Читать далее

Кроме шуток — шмели тоже обучаются и не знают всё по «инстинктам»

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели2.4K

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

Тут работает прямой дарвиновский отбор - первые вылетевшие шмели начинают искать цветы. Они порой летают зазря, садясь на цветы-пустышки и погибают. Те кто удачно выбирал цветы - возвращаются назад к улью и потом за ними увязываются новые, ещё не обученные шмели. Цепь из прямого положительного отбора, только уже касаемого опыта и выживания. Плохо выбирал, плохо думал - умер, а если хорошо - выжил и ещё других обучишь. А как без обучения шмель вообще понимает - надо летать на цветы? Да очень просто - за миллионы лет они стали хоботковыми насекомыми, они при всём желании ничего кроме нектара не поедят. Ещё по ДНК шмели явно имеют некоторые цветовые предпочтения, садятся чаще на синие цветы.

Ларчик в этом случае открывается просто. Во первых в климатической зоны где жили предки именно этих шмелей, видимо больше нектара несли синие цветы. Это запускало дарвиновский отбор и лучше выживали те шмели, кто лучше видел синий цвет. Судя по гексагональной схеме справа (она показывает чувствительность шмелей и пчёл к цветам ) - синий цвет лучше улавливается чем жёлтый, он ближе к центру и шмели улавливают его лучше в трёх спектрах из трёх. Это вот - чистая генетика и её выживание. Это и есть "память предков" Вот только если шмель будет просто копировать её, он не выживет. Её достаточно только для первичного влезания в жизнь, дальше надо обучаться.

Читать далее

Rust без прикрас: где мы продолжаем ошибаться

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели5.4K

Привет, Хабр!

В предыдущей статье мы разобрали, как не ломать себе карьеру, бездумно используя unwrap() или игнорируя ошибки через let _ =. Но давайте честно: это были цветочки. Настоящие проблемы начинаются там, где ваш код работает «почти идеально», а потом, под грохот продакшена, вы осознаете, что все было далеко не так гладко.

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

Начнем с первой проблемы при работе с .iter() и .iter_mut.

Читать далее

Реализация шифра «Магма» на языке RUST

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели3.5K

Привет! Сегодня мы продолжаем реализовывать шифрование. В этой статье мы рассмотрим алгоритм шифра "Магма", который был разработан и использовался в СССР.

Читать далее

Spears & bits

Уровень сложностиПростой
Время на прочтение15 мин
Охват и читатели2.2K

В играх часто используется паттерн упаковки булевых значений в биты. Это удобно для оптимизации памяти и ускорения выполнения массовых проверок. Например, такие проверки могут включать нахождение игрока в тайле, определение доступности клеток на четырех- или шестигранной сетке, или другие пространственные проверки, которые необходимо выполнять быстро. Это не ракетостроение, но когда профайлер показал одну из таких функций в числе горячих, мне стало интересно, как именно она работает и можно ли её оптимизировать. Структура данных bitset — это способ эффективно представлять множество целых индексов, которое к тому же поддерживает различные операции над ним, например объединение, разность, пересечение.

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

Для представления данных мы можем использовать индекс юнита в тайле. В качестве типовой задачи проверять будем только юнитов, у которых здоровье превышает определённое значение. Это условие не взято с потолка. Например, некоторые юниты используют стратегии вроде "убей слабейшего" или "нападай стаей". Для таких стратегий поюнитный обход всех юнитов вокруг (особенно если это выполняют все юниты в группе) может стать крайне затратной по времени операцией.

Название статьи получилось как-то само собой: недалеко от моего дома есть хорошее кафе Chief&Bites, достаточно популярное у местных жителей, но пирожные там начинают делать после заказа, такой вот формат анти-кафе. Сами понимаете, прождать пока сделают свежайшее пирожное полчаса, а то и час - легко, там даже на чеке пишут время, когда начали делать именно твое пирожное. Заранее извиняюсь за возможные "велосипеды" в коде, но, возможно, эта тема покажется кому-то полезной.

Паковай давай...

Junior of IntelliJ IDEA

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели6.4K

IntelliJ IDEA имеет богатый функционал, однако, как и в любом другом программном обеспечении, существуют маленькие хитрости и трюки, которые могут сделать работу с этим инструментом ещё более приятной и эффективной. В этой статье мы рассмотрим несколько таких функций, которые помогут раскрыть весь потенциал IntelliJ IDEA и улучшить свой рабочий процесс.

Читать далее

Physics-based и data-driven моделирование

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели1.6K

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

Итак, начнем с моделей, основанных на данных. Такого рода модели встречаются почти на каждом шагу. Любая задача машинного обучения, будь то регрессия (например, предсказание цен на товары), классификация (определение маркера болезни по данным об анализах пациента), рекомендация (определение более подходящего видео в вашей ленте), сегментация (определение объектов на фото или видео) и т. д. Задач машинного обучения достаточно много, но все они требуют одного - данных.

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

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

Читать далее

Конвейеризация: универсальный способ повышения пропускной способности

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели1.5K

Что общего между стиральной машиной, CPU и микросервисами? Все они выигрывают от «конвейеризации» (англ. pipelining).

В этой статье мы соберем информацию из разных сфер, и увидим, насколько универсален принцип конвейеризации. Получим интуитивное понимание терминов «задержка» (англ. latency) и «пропускная способность» (англ. throughput). А также научимся увеличивать пропускную способность в своих бизнес-процессах, компьютерных системах, и просто в повседневной жизни.

Читать далее

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

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели1.3K

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

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

Читать далее

Создание доступной портативной фундус-камеры

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели4K

Создание доступной портативной фундус-камеры

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

Читать далее

Реализация режимов шифрования на языке RUST

Уровень сложностиПростой
Время на прочтение15 мин
Охват и читатели1.9K

После долгого перерыва мы возвращаемся в мир криптографических алгоритмов. В этот раз мы рассмотрим некоторые широко известные режимы шифрования блочных шифров, такие как ECB, CBC, CFB, OFB, CTR и подготовим небольшую архитектурную задумку, о которой я расскажу под катом.

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

Читать далее

Ассоциативные связи

Время на прочтение4 мин
Охват и читатели6.3K

Что такое идеальный "квант информации" или "минимальная единица смысла" и зачем задаваться этим вопросом? С этим связано много боли, часто даже не осознаваемой. Мы предлагаем решение, но сначала нужно разобраться для чего это нужно. Рекомендуем ознакомиться с первой статьёй в серии.

Одна Связь, чтоб править всеми

Информация

В рейтинге
5 230-й
Зарегистрирован
Активность