Как стать автором
Обновить
0
0

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

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

О роли комплексных чисел в науке

Время на прочтение10 мин
Количество просмотров37K

Комплексные числа (z=x+iy) прочно вошли в арсенал методов исследования окружающего нас Мира - от теории элементарных частиц до космологии. К сожалению, во всех теоретических моделях, они (комплексные числа) рассматриваются в качестве технического приема, облегчающего математические вычисления. Наблюдательные данные и экспериментальные результаты «объясняются» только с помощью вещественной части комплексного выражения, полученного из теоретического расчета. Мнимую часть отбрасывают, как не реальную (не наблюдаемую).

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

Читать далее
Всего голосов 13: ↑10 и ↓3+13
Комментарии93

Удивительная и загадочная 𝛾

Время на прочтение10 мин
Количество просмотров9K


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

Я расскажу о константе $\gamma$, не менее важной, чем $e$ или $\pi$.

Сумму

$\sum_{n=1}^{\infty}\left[\frac{1}{n}-\frac{1}{n+1}\right]=1$

Легко подсчитать. В развёрнутом виде левое слагаемое второго элемента сокращается с правой частью первого элемента, и так происходит с каждой парой элементов суммы. И в результате останется левая часть первого элемента, и правая часть последнего. Правая часть последнего стремится к нулю. Значит, сумма будет равна левой части первого элемента, единице.

Получилась «цепочка», которая сложена так, что для результата бóльшую важность имеют её концы. Сделаем ещё одну цепочку, только вместо обращения числа поставим его логарифм.
Читать дальше →
Всего голосов 23: ↑21 и ↓2+27
Комментарии2

Генераторы на корутинах C++

Время на прочтение5 мин
Количество просмотров12K

Я уже пару лет как развлекаюсь написанием различных программ на C++ с использованием корутин. Но до сего момента это были асинхронные приложения. Я активно использовал co_await, но ни разу еще мне не понадобился co_yield. И вот, после трех дней вынужденного ничегонеделанья в больнице, я решил этот пробел восполнить и попробовать написать собственный генератор. А заодно и получше разобраться с promise_type и coroutine_handle

Читать далее
Всего голосов 16: ↑13 и ↓3+13
Комментарии8

48 полноценных бесплатных книг для программистов (happy developer's day)

Время на прочтение2 мин
Количество просмотров109K

Привет, Хабр! Немного запоздало (ко дню программиста) делюсь подборкой бесплатных книг по программированию. Все они полезные, уровень скорее профессиональный, хотя и для развития от базового тоже подойдет, но, к сожалению, на английском. Среди тем книг: .NET, Алгоритмы, Android, iOS, Angular, C, C++, C#, JS, Linux, Python. В целом, найдется почти любая тема, которая приходит в голову.

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

Читать далее
Всего голосов 83: ↑82 и ↓1+98
Комментарии55

Простая нейронка без библиотек и многомерных массивов

Время на прочтение10 мин
Количество просмотров30K

Руководство? Гайд? В общем описание моего опыта создания простой, а главное понятной любому новичку нейросети :)

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

Читать далее
Всего голосов 23: ↑19 и ↓4+16
Комментарии49

7 ложных предположений о том, как устроены строки

Время на прочтение10 мин
Количество просмотров24K

Как Unicode уничтожает большинство ваших предположений о том, как на самом деле работают строки



Когда речь идет о написании чего-то простого, мы, программисты, обычно действуем интуитивно. В случае с простыми вещами мы полагаемся на четкий набор предположений вместо конкретных знаний о том, как эти вещи работают. Например, мы предполагаем, что если b = a + 1, то b больше a, или что если мы применим функцию malloc для какого-то буфера, то получим необходимое количество памяти для записи. Мы не заглядываем в документацию всякий раз, когда имеем дело с мелочами.


Мы делаем так, потому что тотальная проверка замедлит работу. Однако если бы мы все-таки провели проверку, мы бы обнаружили, что обычно ошибаемся в своих предположениях. Существует арифметическое переполнение, в результате которого a + 1 может быть значительно меньше, чем a. Иногда malloc дает нам null вместо буфера и мы оказываемся в пролете.


Нам обычно приходится обжечься на таких вещах, чтобы хотя бы немного изменить свои предположения. И даже тогда мы обычно исправляем их весьма условно.
Столкнувшись с досадной ошибкой переполнения, мы можем скорректировать свое предположение о целых числах в виде «a + 1 больше a, если отсутствует вероятность, при которой a представляет собой очень большое число». И мы действуем исходя из этого, вместо того, чтобы обдумать четкие правила, по которым работает переполнение.


Уточненные предположения – это опыт. Чаще всего они позволяют нам работать быстрее и правильнее. Однако мы можем вообще переместить некоторые вещи, например, правильную обработку malloc, из нашей внутренней категории «простые вещи» во внутреннюю категорию «сложные вещи». И тогда мы действительно можем пойти и уточнить, как они работают.

Читать дальше →
Всего голосов 67: ↑65 и ↓2+85
Комментарии40

КОМПАС-3D и Linux → Часть 1

Время на прочтение3 мин
Количество просмотров73K

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

Вот, в рамках этой задачи, мы “поковырялись” и расскажем про наш опыт запуска системы КОМПАС-3D  в операционной системе Ubuntu с помощью Wine.

Узнай как настроить КОМПАС-3D под Linux
Всего голосов 25: ↑25 и ↓0+25
Комментарии103

C++ zero-cost abstractions на примере хеш-таблиц в ClickHouse. Доклад Яндекса

Время на прочтение12 мин
Количество просмотров12K
Хеш-таблицы — это королевы структур данных. Нигде не сломано так много копий, как на оптимизации хеш-таблиц. В докладе я рассказал ещё об одной хеш-таблице, которая используется в ClickHouse. Вы увидите, что zero-cost abstractions в современном С++ оправдывают себя и как с помощью небольших трюков получить разнообразные структуры данных из общей кодовой базы. На основе общих строительных блоков можно построить быстроочищаемую хеш-таблицу, несколько видов LRU-кешей, lookup-таблицы без хешей, хеш-таблицы для строк и т. п. Я показал, как получить максимальную производительность на конкретных сценариях и не ошибиться при её тестировании. В моём докладе — самая мякотка низкоуровневых оптимизаций. В общем, то, что мы любим.

— Для начала мы обсудим, зачем нужны хеш-таблицы, где их можно использовать в базах данных и как сделать их оптимальными. Затем посмотрим бенчмарки различных хеш-таблиц в интернете и разбёремся, как делать их правильно. В конце посмотрим на C++-обертку над идеальной хеш-таблицей в ClickHouse.
Читать дальше →
Всего голосов 23: ↑20 и ↓3+29
Комментарии10

Наследование в C++: beginner, intermediate, advanced

Время на прочтение9 мин
Количество просмотров290K

В этой статье наследование описано на трех уровнях: beginner, intermediate и advanced. Expert нет. И ни слова про SOLID. Честно.


Beginner


Что такое наследование?


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


Класс, который наследует данные, называется подклассом (subclass), производным классом (derived class) или дочерним классом (child). Класс, от которого наследуются данные или методы, называется суперклассом (super class), базовым классом (base class) или родительским классом (parent). Термины “родительский” и “дочерний” чрезвычайно полезны для понимания наследования. Как ребенок получает характеристики своих родителей, производный класс получает методы и переменные базового класса.


Наследование полезно, поскольку оно позволяет структурировать и повторно использовать код, что, в свою очередь,

Читать дальше →
Всего голосов 15: ↑11 и ↓4+7
Комментарии62

Ретроконсоль своими руками Часть 1. Выбираем «железо»

Время на прочтение9 мин
Количество просмотров16K

Нелегкая ситуация, сложившаяся на рынке видеокарт, — отличный повод вспомнить о том, что компьютерные игры — это вовсе не 4K, не «волшебные лучи» RTX и тем более не количество полигонов на кончике носа главного героя. Крепко сбитый, захватывающий игровой процесс — вот то, что отличает хорошую видеоигру от плохой, а вовсе не качество графики. В наше время это «сакральное» знание во многом было утеряно: современные игроделы делают ставку на красивую картинку и аддиктивные механики, забывая о том, что игра прежде всего должна развлекать и приносить радость.

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

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

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии21

Пишем свою ОС: Выпуск 1

Время на прочтение6 мин
Количество просмотров272K
Данный цикл статей посвящён низкоуровневому программированию, то есть архитектуре компьютера, устройству операционных систем, программированию на языке ассемблера и смежным областям. Пока что написанием занимаются два хабраюзера — iley и pehat. Для многих старшеклассников, студентов, да и профессиональных программистов эти темы оказываются весьма сложными при обучении. Существует много литературы и курсов, посвящённых низкоуровневому программированию, но по ним сложно составить полную и всеохватывающую картину. Сложно, прочитав одну-две книги по ассемблеру и операционным системам, хотя бы в общих чертах представить, как же на самом деле работает эта сложная система из железа, кремния и множества программ — компьютер.

Каждый решает проблему обучения по-своему. Кто-то читает много литературы, кто-то старается поскорее перейти к практике и разбираться по ходу дела, кто-то пытается объяснять друзьям всё, что сам изучает. А мы решили совместить эти подходы. Итак, в этом курсе статей мы будем шаг за шагом демонстрировать, как пишется простая операционная система. Статьи будут носить обзорный характер, то есть в них не будет исчерпывающих теоретических сведений, однако мы будем всегда стараться предоставить ссылки на хорошие теоретические материалы и ответить на все возникающие вопросы. Чёткого плана у нас нет, так что многие важные решения будут приниматься по ходу дела, с учётом ваших отзывов.
Читать дальше →
Всего голосов 293: ↑282 и ↓11+271
Комментарии225

Создаем новую OS. Действительно новую, реально операционную, и правда – систему

Время на прочтение23 мин
Количество просмотров87K

О создании новой операционной системы в последнее время говорят немало, особенно в России. В сумме размер всех публикаций по данной теме наверняка превышает размеры исходного кода любой операционной системы. Так что остается только одна проблема – от этих разговоров никаких новых OS не появляется. Всё, что предъявляется публике (и на что тратятся бюджетные деньги), на поверку оказывается кастомизированными сборками OS семейства Linux, а значит, не содержит ничего принципиально нового. Но, если о чем-то не говорят, это не значит, что его не существует.
В этой статье – проект принципиально новой OS, созданный в нерабочее время одним из ведущих сотрудников (Principal Engineer) российского подразделения Intel.
Читать дальше →
Всего голосов 88: ↑85 и ↓3+82
Комментарии158

ABBYY NeoML 2.0: Python и многое другое

Время на прочтение11 мин
Количество просмотров5.2K


Прошел почти год с тех пор, как мы опубликовали на GitHub библиотеку для машинного обучения NeoML. О чем, конечно же, была статья на Хабре. Мы обещали поддерживать и развивать ее. Свое обещание мы сдержали, и на днях свет увидела вторая версия библиотеки!

С первой версии в жизни проекта произошло много интересного: мы продолжили разработку на GitHub, освоили Azure DevOps для регулярных сборок, поддержали новые платформы, добавили немало новых и не столь новых, но очень нужных алгоритмов, добавили производительности и — самое главное — сделали для библиотеки Python интерфейс! Собственно, после окончания работ над Python оберткой библиотека и получила номер версии 2.0.

Ниже я подробнее расскажу о том, как это все происходило.
Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии4

Механизм движения физических тел

Время на прочтение18 мин
Количество просмотров6.6K

Научная гипотеза

Владимир Резников – инженер

   1.Введение

   В этой статье мы обсудим проблему "дискретности" и "непрерывности" движения физических тел. Этот вопрос впервые был поднят в V веке до нашей эры древнегреческим философом Зеноном Элейским, и по сей день продолжаются горячие дискуссии по этому поводу. Как выразился голландский математик Дирк Ян Стройк в своей книге "Краткий очерк истории математики, 1948 год: парадоксы Зенона" "... вызвали такое волнение, что даже сейчас наблюдается некоторая рябь".Зенон сформулировал ряд апорий (неразрешимых суждений). Мы рассмотрим одну из них, которая называется "Дихотомия" (деление на два) (Рис.1).

Читать далее - разделы статьи
Всего голосов 11: ↑3 и ↓8-5
Комментарии65

Где разошлись пути немецкого и английского: Apfel vs. apple

Время на прочтение4 мин
Количество просмотров11K

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

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии4

Красивая теорема, которую Блез Паскаль доказал в 16 лет

Время на прочтение2 мин
Количество просмотров12K

Свою первую теорему он доказал в 8 лет, а потом пошло-поехало...

Читать далее
Всего голосов 18: ↑17 и ↓1+21
Комментарии2

Новый класс простых чисел, который я открыл случайно

Время на прочтение16 мин
Количество просмотров22K

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

Читать далее
Всего голосов 56: ↑54 и ↓2+77
Комментарии79

Фильтр Калмана

Время на прочтение10 мин
Количество просмотров431K


В интернете, в том числе и на хабре, можно найти много информации про фильтр Калмана. Но тяжело найти легкоперевариваемый вывод самих формул. Без вывода вся эта наука воспринимается как некое шаманство, формулы выглядят как безликий набор символов, а главное, многие простые утверждения, лежащие на поверхности теории, оказываются за пределами понимания. Целью этой статьи будет рассказать об этом фильтре на как можно более доступном языке.
Фильтр Калмана — это мощнейший инструмент фильтрации данных. Основной его принцип состоит в том, что при фильтрации используется информация о физике самого явления. Скажем, если вы фильтруете данные со спидометра машины, то инерционность машины дает вам право воспринимать слишком быстрые скачки скорости как ошибку измерения. Фильтр Калмана интересен тем, что в каком-то смысле, это самый лучший фильтр. Подробнее обсудим ниже, что конкретно означают слова «самый лучший». В конце статьи я покажу, что во многих случаях формулы можно до такой степени упростить, что от них почти ничего и не останется.
Читать дальше →
Всего голосов 178: ↑173 и ↓5+168
Комментарии84

Линейная алгебра для Data Science и Machine Learning

Время на прочтение7 мин
Количество просмотров29K

Линейная алгебра в Data Science и Machine Learning является основополагающей. Новички, начинающие свой путь обучения в области Data Science, а также признанные практики должны развить хорошее понимание основных понятий линейной алгебры.

Специально к новому старту курса математика и Machine Learning для Data Science делимся переводом статьи Бенджамина Оби Тайо — физика, кандидата наук и преподавателя Data Science — о том, что нужно знать, чтобы лучше понимать Data Science и Machine Learning.

Читать далее
Всего голосов 11: ↑8 и ↓3+8
Комментарии0

Свод правил по работе с целыми числами в C/C++

Время на прочтение11 мин
Количество просмотров53K

В основу статьи легли мои собственные выработанные нелегким путем знания о принципах работы и правильном использовании целых чисел в C/C++. Помимо самих правил, я решил привести список распространенных заблуждений и сделать небольшое сравнение системы целочисленных типов в нескольких передовых языках. Все изложение строилось вокруг баланса между краткостью и полноценностью, чтобы не усложнять восприятие и при этом отчетливо передать важные детали.
Читать дальше →
Всего голосов 54: ↑46 и ↓8+62
Комментарии100

Информация

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