Как стать автором
Обновить
4
Карма
0
Рейтинг
Юрий Наконечный @Inobelar

C++ Developer

  • Подписчики
  • Подписки 1
  • Публикации
  • Комментарии

Квантовый процессор Google осознает себя? Почему квантмех и свобода воли (не) связаны, и почему это неочевидно

Научно-популярноеФизикаМозгБудущее здесьКвантовые технологии

Недавно вышел препринт с забавным названием “Есть ли у роботов с квантовым процессором свобода ослушаться?”. Идея статьи в том, что квантовый процессор — возможно, достаточно сложная система, чтобы внутри нее возникло сознание, обладающее свободой воли (да, звучит как научная фантастика). 

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

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

Читать далее
Всего голосов 34: ↑29 и ↓5+24
Просмотры13K
Комментарии 222

Как мы верифицированный полетный контроллер для квадрокоптера написали. На Ada

C++Системное программированиеCПрограммирование микроконтроллеровDIY или Сделай сам

Однажды на новогодних каникулах, лениво листая интернет, бракоделы в нашем* R&D офисе заметили видео с испытаний прототипа роботакси. Комментатор отзывался восторженным тоном – революция, как-никак. Но тренированное ухо расслышало в шуме с испытательной площадки еще кое-что. Контроллер скорости (штука для управления тягой винтов) сыграл мелодию при старте, как это любят делать пилоты дронов, которые часто используют полётный контроллер Betaflight. Неужели там бета-флайт? Ну, или какая-то из ее немногих разновидностей.

Перед глазами побежали флешбеки, где-то из глубин подсознания всплыла забытая уже информация о прошивках для Тойоты на миллионы тысяч строк Си и 2 тысячи глобальных переменных (Toyota: 81564 ошибки в коде).

После просмотра исходного кода Betaflight на гитхабе стало еще страшнее, и чем дальше, тем хуже. Это – управляющая программа для тяжелого устройства с острыми винтами, которое летает высоко, быстро. Становится страшно: игрушки это одно, но я бы не хотел летать, на таком такси. Но ведь можно иначе? Можно, решили мы! И решили это доказать. На Avito был куплен акробатический FPV-“квадрик” на базе STM32F405, для отладки – Discovery-платы для этого же контроллера, а дальше все как в тумане..

Читать далее
Всего голосов 92: ↑90 и ↓2+88
Просмотры13K
Комментарии 57

Интервью с Мигелем де Икасой: Microsoft, Mono, смартфоны и многое другое

Блог компании JUG Ru Group.NETXamarinИнтервью

В эфире конференции DotNext 2020 Moscow выступил Мигель де Икаса, один из известнейших разработчиков, положивший начало множеству проектов, которыми многие пользуются по сей день. Мы расспросили его о некоторых вещах, включая взаимоотношения с Microsoft, зарождение Mono, мобильные устройства и многое другое. Рассказывая обо всем этом, Мигель припомнил множество интересных событий и фактов, о которых вам наверняка будет интересно прочитать.

Интервью брали Игорь Лабутин, разработчик на C# и архитектор, и Андрей Акиньшин, перформанс-лид Rider, мейнтейнер проекта BenchmarkDotNet.

Текст интервью и видео — под катом.

Читать далее
Всего голосов 36: ↑36 и ↓0+36
Просмотры3.9K
Комментарии 5

Быстрое сравнение double

Высокая производительностьНенормальное программированиеC
Вчера здесь вышла статья о быстром парсинге double, я зашёл во блог к её автору, и нашёл там ещё один интересный трюк. При сравнении чисел с плавающей точкой особое внимание приходится уделять NaN (восемь лет назад я писал про них подробнее); но если сравниваемые числа заведомо не NaN, то сравнить их можно быстрее, чем это делает процессор!

Положительные double сравнивать очень просто: нормализация гарантирует нам, что из чисел с разной экспонентой больше то, чья экспонента больше, а из чисел с равной экспонентой больше то, чья мантисса больше. Стандарт IEEE 754 заботливо поместил экспоненту в старшие биты, так что положительные double можно сравнивать просто как int64_t.



С отрицательными числами немного сложнее: они хранятся в прямом коде, тогда как int64_t — в дополнительном. Это значит, что для использования целочисленного сравнения младшие 63 бита double необходимо инвертировать (при этом получится -0. < +0., что не соответствует стандарту, но на практике не представляет проблемы). Явная проверка старшего бита и условный переход уничтожили бы всю выгоду от перехода к целочисленному сравнению; но есть способ проще!

inline int64_t to_int64(double x) {
	int64_t a = *(int64_t*)&x;
	uint64_t mask = (uint64_t)(a >> 63) >> 1;
	return a ^ mask;
}

inline bool is_smaller(double x1, double x2) {
	return to_int64(x1) < to_int64(x2);
}

a>>63 заполняет все 64 бита копиями знакового бита, и затем >>1 обнуляет старший бит.
Читать дальше →
Всего голосов 52: ↑50 и ↓2+48
Просмотры9.6K
Комментарии 83

Компьютерное зрение в промышленной дефектоскопии: Часть 2 “Генерируем стремные трубы чтобы порадовать нейронку”

Блог компании IT-центр МАИРабота с 3D-графикойМашинное обучение
Tutorial


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


  • как сделали такой генератор на основе Blender и Python,
  • какие типы масок для задач компьютерного зрения вообще можно получить в Blender.
Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Просмотры2.4K
Комментарии 1

UI-элементы и жесты в мобильных приложениях

Блог компании ЮлаРазработка мобильных приложенийТестирование мобильных приложенийДизайн мобильных приложений


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

А вы знали, как называется «та самая выезжающая снизу экрана шторка» или несколько (три и более) тапов подряд? Ответы на эти вопросы и названия многих других элементов читайте в нашей статье.
Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Просмотры21K
Комментарии 9

Рецепт обучения нейросетей

PythonМашинное обучениеИскусственный интеллектData EngineeringTensorFlow
Из песочницы
Перевод

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

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

Читать далее
Всего голосов 15: ↑14 и ↓1+13
Просмотры7.1K
Комментарии 6

C++17. Функция стандартной библиотеки std::launder и задача девиртуализации

ПрограммированиеC++
Tutorial

В этой статье мы попробуем разобраться с одним из самых неоднозначных и непонятных нововведений стандарта C++17 — функцией стандартной библиотеки std::launder. Мы посмотрим на std::launder с другой стороны, посмотрим на источник. Разберем что лежит в основе функции на примере решения задачи девиртуализации и реализации виртуальных указателей в LLVM.


Читать дальше →
Всего голосов 70: ↑70 и ↓0+70
Просмотры14K
Комментарии 70

Фотограмметрия 100 самых необычных памятников России силами сообщества

Блог компании Туту.руРабота с 3D-графикойУправление проектами

Вот что бывает, если вы споткнётесь во время съёмки

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

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

Ну я взял и предложил отснять каждый памятник и сделать 3D-модель автоматически на основе фотографий — что-то вроде 3D-сканирования кроссовок, только для памятника. На первый взгляд задача выглядела исполнимой, если у вас есть доступ к большому сообществу путешественников из разных городов. У нас есть.

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

В общем, я хочу поделиться с вами STL-моделями с лицензией для некоммерческого использования 10 памятников-финалистов конкурса. И рассказать про ощупанные грабли в фотограмметрии, позволяющие делать такие операции в очень разумном бюджете. Бюджет был 2500 рублей на модель.
Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Просмотры7.4K
Комментарии 33

Следующее поколение программирования ближе, чем кажется

Блог компании RUVDS.comПрограммирование
Перевод
Какое оно — программирование следующего поколения? Помочь ответить на этот вопрос могут воспоминания о том, как эволюционировали персональные компьютеры. Для того чтобы разобраться с тем, что я имею в виду, давайте ненадолго заглянем в 1970-е.


Читать дальше →
Всего голосов 68: ↑43 и ↓25+18
Просмотры22K
Комментарии 117

Проектирование C API

Блог компании OTUSПрограммированиеAPIC
Перевод

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

Читать далее
Всего голосов 21: ↑15 и ↓6+9
Просмотры4K
Комментарии 5

Пишем драйвер фреймбуфера для Raspberry Pi с LCD

Настройка LinuxРазработка на Raspberry Pi
Tutorial

Прочитав монументальную серию статей о подключении LCD экрана к роутеру мне захотелось сделать то же самое. Однако многообразие используемого стека (openwrt, stm32, usb) в сочетании с отсутствием полных исходников кода но может плохо искал несколько затруднило задачу. Я решил начать с малого — написать свою реализацию framebuffer для raspberry и вывести графическую среду raspberry на LCD. Что из этого получилось, описываю далее.

Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Просмотры7.7K
Комментарии 5

Как мы обучили нейросеть генерировать тени на фотографии

PythonПрограммированиеОбработка изображенийМашинное обучениеИскусственный интеллект
Tutorial

Привет!

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

Ну что, погнали?

Читать далее
Всего голосов 29: ↑28 и ↓1+27
Просмотры5.6K
Комментарии 17

dynamic_cast на этапе компиляции

C++

Приветствую все читающих.


О чём статья (или задача статьи): практический ответ на вопрос "возможно ли создать большой проект так, чтобы полностью отказаться от dynamic_cast на этапе выполнения?", где под большим проектом подразумевает такой в котором уже нет человека, что бы держал в голове всю кодовую базу проекта целиком.


Предварительный ответ: ДА, это возможно — возможно создать механизм, позволяющий решить задачу dynamic_cast на этапе компиляции, но — едва ли подобное будет применяться на практике по причинам как: (1) с самого начала целевой проект должен строиться согласно наперёд заданным правилам, в следствии чего взять и применить методику к существующему проекту, очень трудоёмко (2) существенное повышение сложности кода с точки зрения удобства его читаемости в определённых местах, где, собственно, происходит замена логики dynamic_cast на предложенную ниже (3) использование шаблонов, что может быть неприемлемым в некоторых проектах по идеологическим соображениям ответственных за него (4) интерес автора исключительно в том, чтобы дать ответ на поставленный вопрос, а не в том, чтобы создать универсальный и удобный механизм решения поставленной задачи (в конце-концов, не нужно на практике решать проблемы, которые не являются насущными).

Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Просмотры2.3K
Комментарии 1

Wasm в Armory Engine

Работа с 3D-графикойРазработка игрИгры и игровые приставки
Tutorial

Для тех кто в танке - wasm или WebAssembly это язык программирования низкого уровня для виртуальной стековой машины раз разработанный как портативная цель компиляции для высокоуровневых языков, таких как Си, C++, C#, Rust, Go. Проще говоря вы можете писать высокопроизводительный, компактный и переносимый код используя wasm. Наш Armory тоже использует wasm. Благодаря ему движок может работать в браузере и на других платформах с использованием Krom.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Просмотры2.1K
Комментарии 3

Помогите стахановцу — увольте его сразу

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

Но тут приходит Он. Тот, кому Мало. Кто страстно хочет Больше. И открывает ящик Пандоры. Точнее, показывает директору, где этот ящик находится, и помогает провернуть ключ в замке.
Читать дальше →
Всего голосов 108: ↑82 и ↓26+56
Просмотры83K
Комментарии 196

Реактивное программирование для разработчиков игр: Введение

Блог компании OTUSПрограммированиеРазработка игрUnity
Перевод

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

Не отвлекайтесь на котят. Читайте о реактивном программировании!

Итак, я привлек ваше внимание?

Отлично! Я приложу все силы, чтобы не потерять его.

Читать далее
Всего голосов 10: ↑9 и ↓1+8
Просмотры6.2K
Комментарии 3

Игровой контроллер для одной руки, что так, а что не так

C++CAD/CAMРазработка под ArduinoAR и VR3D-принтеры
Из песочницы

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

Читать далее
Всего голосов 38: ↑38 и ↓0+38
Просмотры6.7K
Комментарии 48

Самые маленькие Arduino для ваших мини-проектов + примеры самих проектов

Блог компании SelectelРазработка под ArduinoКомпьютерное железоDIY или Сделай сам
Перевод

Если вам нужны маленькие Arduino-платы для DIY-проектов, эта статья как раз кстати. Вы хотите создать носимый девайс на базе Arduino, но оригинальная плата слишком большая? Или есть на примете другой проект, для которого нужна маленькая плата с большим количеством возможностей?

Эта подборка поможет выбрать то, что нужно. В ней собраны самые маленькие Arduino платы с разными характеристиками. Их можно использовать для разработки самых разных проектов — от роботов до носимых устройств. Есть и примеры проектов.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Просмотры31K
Комментарии 23

А вы умеете готовить nested_flatbuffers?

ПрограммированиеC++C
Tutorial
У протокола FlatBuffers имеется интересная возможность — использовать вложенную структуру внутри другой структуры, но хранить ее, как массив сырых данных. Такая оптимизация позволяет уменьшить затраты на память и производительность при чтении/записи данных. Для этого необходимо использовать специальный атрибут — nested_flatbuffers.

Правда, как это часто водится за разработчиками протоколов, на нормальные примеры сил им уже не хватает. И даже на тематических форумах типа stackoverflow, groups.google и т.п. сложно найти полную информацию — приходится буквально по крупицам собирать все части паззла, чтобы в конце концов понять, как именно написать рабочий код.

В статье я раскрою проблему подробнее и приведу примеры на C, C++ и Rust.

In concept this is very simple: a nested buffer is just a chunk of binary data stored in a ubyte vector, typically with some convenience methods generated to access a stored buffer. In praxis it adds a lot of complexity.


image
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Просмотры2.2K
Комментарии 3

Информация

В рейтинге
Не участвует
Откуда
Украина
Зарегистрирован
Активность