Pull to refresh
-4
0
Send message

Создаем собственные линтеры в Rust с DyLint

Level of difficultyMedium
Reading time5 min
Views1.5K

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

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

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

Читать далее

Почему для меня так важен алгоритм CORDIC

Level of difficultyMedium
Reading time8 min
Views21K

CORDIC — это алгоритм для вычисления тригонометрических функций вроде
sin, cos, tan и тому подобных на маломощных устройствах без использования модуля обработки операций с плавающей запятой или затратных таблиц поиска. По факту он сводит эти сложные функции до простых операций сложения и битового сдвига.

Перейду сразу к делу и скажу, почему я так сильно люблю этот алгоритм, а затем займёмся изучением принципов его работы. По сути, фактические операции CORDIC весьма просты — как я уже сказал, это сдвиги и сложение — но выполняет он их путём комбинирования векторной арифметики, тригонометрии, доказательств сходимости и продуманных техник компьютерных наук. Лично я считаю, что именно это имеют ввиду, описывая его природу, как «элегантную».
Читать дальше →

Мощный инструмент для работы с GCOV покрытием кода C/C++

Level of difficultyMedium
Reading time6 min
Views4.5K

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

Скорее всего то, о чем я сейчас расскажу, уже было реализовано и не единожды.

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

Читать далее

Коммивояжер на GPU

Level of difficultyMedium
Reading time8 min
Views4.2K

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

Динамическое программирование — это метод решения сложных задач путём разбиения их на более мелкие подзадачи, решение которых легче и проще.

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

Читать далее

Wasm на весь стек — движемся от клиента к серверу с использованием Leptos, Rust и Spin

Level of difficultyHard
Reading time9 min
Views6K


Leptos – интересное пополнение в ряду веб-фреймворков для Rust. Помимо того, что Leptos может обеспечить быстрые обновления на стороне браузера через клиентскую часть WebAssembly, а также детализированные отклики на сигналы в ходе реактивной коммуникации, он ещё и чрезвычайно удобен для взаимодействия с серверными службами через изоморфные серверные функции. Таким образом, выполнять удаленные вызовы к API оказывается не сложнее, чем вызывать функции Rust. Именно благодаря интеграции с серверной частью Leptos так привлекателен для использования совместно со Spin. Если вам интересно, как это выглядит, или же вы хотите погоревать над весьма неказистым пользовательским интерфейсом, то читайте дальше.
Читать дальше →

Гипотезы квантового сознания и критического мозга. Мозг – квантовый компьютер или усилитель хаоса?

Level of difficultyMedium
Reading time30 min
Views27K

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

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

Читать далее

Методы оптимизации в машинном и глубоком обучении. От простого к сложному

Level of difficultyHard
Reading time29 min
Views24K

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

Читать далее

Реликтовое гравитационное излучение — ключ к тайнам Вселенной

Level of difficultyMedium
Reading time6 min
Views11K

Участники хабра проявляли большой интерес к космологии пульсирующей Вселенной (https://habr.com/ru/articles/396601/; https://habr.com/ru/articles/371363/; https://habr.com/ru/articles/777028/), поэтому всех заинтересованных хочу обрадовать новостью, что издательство «Питер» в июне этого года выпускает массовым тиражом второе издание книги «Пульсирующая Вселенная» с дополнениями и улучшениями. Получасовую презентацию книги (и космологической теории, которая в ней излагается) от редактора «Питера» и от меня можно посмотреть на ю-тубе: https://www.youtube.com/watch?v=QyVAPTdPC4Y

            На одном космологическом моменте хочется остановиться детальнее – на реликтовых гравитационных волнах. В начале 60-х годов разразилась большая битва между тремя космологическими теориями: теорией постоянного роста Вселенной Бонди-Голда-Хойла (без Большого Взрыва, а Вселенная просто пухнет по непонятным причинам); теорией изначально холодной Вселенной Зельдовича, и теорией горячей ранней Вселенной Гамова, в рамках которой были предсказаны Большой Взрыв, химсостав ранней Вселенной и наличие вокруг реликтового излучения с температурой в несколько кельвинов (излучение очень горячей ранней Вселенной растянулось к нашему времени так, что остыло до температуры жидкого гелия).

            В эстонском городе Тарту, 7-13 июля 1962 года проходил семинар, материалы которого были опубликованы в сборнике «Вопросы космогонии» (1963). В статье «Дозвездная эволюция вещества» Я. Б. Зельдович разбирает теорию горячей Вселенной Гамова-Альфера-Хермана, попытки которых получить наблюдаемый химический состав космической среды, он считает «наивными». Зельдович пишет, что в этой модели «эффективная температура электромагнитного излучения (света) равна 23К» (откуда ЯБ взял это значение вместо нескольких градусов – неясно, возможно из какой-то самой неточной работе группы Гамова).

Читать далее

Искусственный интеллект. Ч2

Level of difficultyMedium
Reading time13 min
Views4.1K

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

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

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

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

Читать далее

Шардирование баз данных и проектирование систем

Reading time6 min
Views9.7K
image

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

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

Лучшими кубитами для квантовых вычислений могут быть нейтральные атомы

Level of difficultyMedium
Reading time12 min
Views2.1K

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

В конце прошлого года технологический гигант IBM объявил о том, что может показаться важной вехой в квантовых вычислениях: о первом в мире чипе под названием Condor, содержащем более 1000 квантовых битов или кубитов. Прошло всего два года после того, как компания представила Eagle, первый чип с более чем 100 кубитами. Казалось, что эта область стремительно движется вперёд. Создание квантовых компьютеров, способных решать полезные задачи за рамками даже самых мощных классических суперкомпьютеров, требует ещё большего их масштабирования — возможно, до многих десятков или сотен тысяч кубитов. Но это ведь всего лишь вопрос техники, верно?

Читать далее

Изобретательство и патентная активность в годы Великой Отечественной Войны

Level of difficultyMedium
Reading time5 min
Views2.4K

5 марта 1941 г. Постановлением СНК СССР было утверждено Положение «Об изобретениях и технических усовершенствованиях и о порядке финансирования затрат по изобретательству, техническим усовершенствованиям и рационализаторским предложениям». Вторая мировая война уже шла вовсю; руководство СССР заранее предприняло меры для реорганизации изобретательства и патентования изобретений на потребности масштабной войны. 

Читать далее

Что каждый программист должен знать про оптимизации компилятора

Reading time17 min
Views81K
Высокоуровневые языки программирования содержат в себе много абстрактных программистских конструкций, таких как функции, условные операторы и циклы — они делают нас удивительно продуктивными. Однако одним из недостатков написания кода на высокоуровневом языке является потенциальное значительное снижение скорости работы программы. Поэтому компиляторы стараются автоматически оптимизировать код и увеличить скорость работы. В наши дни логика оптимизации стала очень сложной: компиляторы преобразуют циклы, условные выражения и рекурсивные функции; удаляют целые блоки кода. Они оптимизируют код под процессорную архитектуру, чтобы сделать его действительно быстрым и компактным. И это очень здорово, ведь лучше фокусироваться на написании читабельного кода, чем заниматься ручными оптимизациями, которые будет сложно понимать и поддерживать. Кроме того, ручные оптимизации могут помешать компилятору выполнить дополнительные и более эффективные автоматические оптимизации. Вместо того чтобы писать оптимизации руками, лучше бы сосредоточиться на дизайне архитектуры и на эффективных алгоритмах, включая параллелизм и использование особенностей библиотек.

Данная статья посвящена оптимизациям компилятора Visual C++. Я собираюсь обсудить наиболее важные техники оптимизаций и решения, которые приходится применить компилятору, чтобы правильно их применить. Моя цель не в том, чтобы рассказать вам как вручную оптимизировать код, а в том, чтобы показать, почему стоит доверять компилятору оптимизировать ваш код самостоятельно.
Читать дальше →

Книга рецептов Rust. 1/2

Level of difficultyMedium
Reading time34 min
Views6.7K



Hello world!


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


Читать дальше →

Сверхсветовая связь

Level of difficultyMedium
Reading time2 min
Views16K

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

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

Здесь я хочу предложить идею эксперимента по передаче информации быстрее скорости света.

Читать далее

Как правильно готовить водородную энергетику

Level of difficultyEasy
Reading time9 min
Views7.7K

Приветствую всех айтишников и технарей. Я не забыл про ЯМР, я помню! Но за последнее время на глаза попалось сразу несколько статей про водородную энергетику, и каждая из них грубо задевала тонкие профессиональные струны моей души. В связи с этим я решил, что молчать дальше нету мочи, и решил немного порассуждать в слух на тему, что не так с водородной энергетикой, и что не так с её критиками. Для понимания контекста поясню: я работаю в R&D и разрабатываю электрохимические источники энергии, в том числе и водородные топливные ячейки в моем анамнезе когда-то были. Поэтому я позволю себе изложить именно свое мнение, сформировавшееся у меня за время работы в это области, с минимумом пруфов.

Добро пожаловать под кат.

Век поиска кратчайшего решения задачи о кратчайшем пути

Level of difficultyMedium
Reading time22 min
Views12K

TL;DR Очень подробный разбор алгоритмов решения задачи о кратчайшем пути от классики до двунаправленного А* и ALT с кодом и примерами на OSM

Люди пытались найти более быстрые способы передвижения на протяжении всей своей истории. Появление качественной дорожной системы в римской империи в своё время привело к её расцвету, но со временем выяснилось, что и в продуманных дорожных системах бывают забавные изъяны, как например в небезызвестной задаче о кёнигсбергских мостах, считающейся отправной точкой возникновения теории графов. Неудивительно и то, что с развитием вычислительной техники логистические задачи стали одними из первых, над которыми трудились первопроходцы компьютерных наук. Задача о кратчайшем пути -- одна из них, звучит достаточно просто: есть несколько городов и дорог, соединяющих пару городов между собой, мы хотим попасть из города А в город Б пройдя при этом минимальное расстояние. Первый системный подход к этой задаче был описан в работе Эгервари в 1931г., спустя 25 лет Эдсгер Дейкстра придумал алгоритм, который сейчас является частью любого уважающего себя базового курса алгоритмов на графах. На нём же, будем честны, заканчиваются знания о кратчайших путях у большинства профессиональных разработчиков, ибо сценариев, где реализации с википедии/stackoverflow будет не хватать, крайне мало.

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

Читать далее

Клетка XVII. Гипноз

Reading time14 min
Views4.2K

Изменённые состояния сознания (ИСС). В предшествующих публикациях автором рассматривалось понятие сознания и то каким оно бывает, перечислялись основные научные концепции сознания, что в сознании изучается. Перечислялись свойства человеческого сознания и его функции, инвазивные и неинвазивные методы изучения сознания, методы моделирования функционирования мозга, указывались предпосылки для разработки теории сознания. Назывались уровни и виды состояния сознания, измененные состояния. В последнем перечне среди прочих назывался гипноз, о котором подробнее речь пойдет ниже. В предыдущей статье читатели ознакомились с одним примечательным ИСС – кома. В предлагаемой настоящей работе вниманию читателей предлагается другое не менее замечательное ИСС. Ознакомиться с гипнозом и его не совсем обычными проявлениями предлагает автор. Рассматриваются вопросы, связанные с ИСС: как человек вводится в состояние гипноза, каким бывает гипноз и шире – какими бывают ИСС, т. е. затрагивается вопрос о моделях, классификациях ИСС и некоторые другие вопросы. Удивительные вещи вытворяют клетки нашего мозга, и не только они при реализациях ИСС. Хотелось бы получить вразумительные объяснения всего происходящего, но увы – наука к этому не готова.

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

Читать далее

Невероятно, но факт: умножение матриц на GPU идёт быстрее на «предсказуемых» данных

Level of difficultyMedium
Reading time9 min
Views12K

Шёл 2022 год. Я обратил внимание на новый интересный проект CUTLASS, отличающийся очень высокой скоростью выполнения операций умножения матриц. Я взял большую задачу по умножению матриц — 8192 x 8192 x 8192, и померял производительность в PyTorch, где используется библиотека cuBLAS.

Читать далее

Точное увеличение растровых изображений

Level of difficultyMedium
Reading time10 min
Views7K

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

Увеличим апскейл до максимума!

Information

Rating
5,608-th
Registered
Activity