Pull to refresh
0
@cdarread⁠-⁠only

User

Send message

Царский путь к пониманию комплексных чисел. Часть I

Level of difficultyEasy
Reading time15 min
Reach and readers31K

Представьте, что вам сказали: «Этого не существует, просто запомни».

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

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

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

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

В этом цикле из 7 статей мы пройдем полное путешествие от парадоксов Кардано до квантовой физики и современной инженерии — с философией, историей и практикой.

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

Читать далее

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

Level of difficultyEasy
Reading time46 min
Reach and readers48K

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

Идея непрерывности.

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

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

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

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

Читать далее

Пайплайн цифрового фотографа на LINUX

Level of difficultyEasy
Reading time5 min
Reach and readers18K

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

Читать далее

HTTP/3: разрушение основ и дивный новый мир

Reading time8 min
Reach and readers55K
Вот уже больше 20 лет мы смотрим веб-странички по протоколу HTTP. Большинство пользователей вообще не задумывается о том, что это такое и как оно работает. Другие знают, что где-то под HTTP есть TLS, а под ним TCP, под которым IP и так далее. А третьи – еретики – считают, что TCP – это прошлый век, им хочется чего-то более быстрого, надёжного и защищённого. Но в своих попытках изобрести новый идеальный протокол они вернулись к технологиям 80-х годов и пытаются построить на них свой дивный новый мир.

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

Радость создания хобби-программ

Level of difficultyEasy
Reading time8 min
Reach and readers6.5K

Мне очень нравится знаменитая цитата Ричарда Фейнмана:

«То, что я не могу создать, я не понимаю»

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

Сегодня, в 2025 году, красота и ремесло написания ПО подвергаются разрушению. ИИ угрожает тем, что заменит нас (или, по крайней мере, заберёт все самые приятные аспекты нашего ремесла), а разработка ПО становится всё более стандартизированной, выверенной, упакованной и индустриализированной. Разработке программного обеспечения нужно больше простых удовольствий. Я выяснил, что создание хобби-программ — отличный способ снова напомнить себе, почему вообще я начал работать с компьютерами.

Читать далее

Детальный обзор полей Галуа

Level of difficultyMedium
Reading time15 min
Reach and readers13K

"Попросите Якоби или Гаусса публично высказать своё мнение — не о истинности, а о важности этих теорем. Позже, я надеюсь, найдутся люди, которым будет выгодно разобраться во всём этом хаосе."

Этими словами заканчивалось письмо Эвариста Галуа, написанное для своего друга Огюста Шевалье за два дня до его смерти от полученных на дуэли ран на 21 году жизни. Ни Якоби, ни Гаусс в его теоремах не разобрались, зато спустя 15 лет разобрался Жозеф Лиувилль и опубликовал работы Галуа, ставшие впоследствии фундаментом современной алгебры, известные сейчас как теория Галуа. В статье расскажу про одну из частей этой теории - поля Галуа, получившая настолько повсеместное применение в криптографии и избыточном кодировании, что Intel и AMD выпустили набор процессорных расширений для эффективной реализации операций над этими полями.

Заметка! Если вам довелось использовать/реализовывать поля Галуа, то большая часть статьи для вас скорее всего будет не интересна, но возможно в последних разделах будет что-то для вас новое.

Читать далее

Планировщик Go — самый подробный гайд простым языком

Level of difficultyMedium
Reading time27 min
Reach and readers42K

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

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

Приступить к проектированию

Как malloc() и free() управляют памятью в C

Level of difficultyEasy
Reading time8 min
Reach and readers15K

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

Сегодня рассмотрим, почему free() не всегда освобождает память, как работает malloc(), когда glibc действительно возвращает память в ОС, и как избежать фрагментации хипа. А так же напишем кастомный аллокатор.

Читать далее

Компактные структуры данных

Level of difficultyMedium
Reading time10 min
Reach and readers9.1K

Введение


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

Что же делать дальше? Можно искать другие статьи, чтобы они заполнили мои пробелы. Это рискованное предприятие, потому что они могут запутать ещё больше, но избежать этого нельзя. Я нашёл статью с нужной структурой данных, в которой упоминался исходный код с веб-сайта. Код был написан на C++, а я работаю на Rust, но решил, что всё равно стоит на него взглянуть. Однако зайдя на сайт, я не обнаружил там ресурс, поэтому я написал владельцу веб-сайта, который оказался преподавателем computer science.

Этот преподаватель (Гонсало Наварро) очень тепло меня принял и сразу же ответил мне3 4. И только в процессе общения с ним я осознал, что видел его фамилию на множестве статей в этой области. Оказалось, я познакомился с одним из специалистов мирового уровня в области компактных структур данных (succinct data structure). Невежество может завести очень далеко.

Что же такое компактные структуры данных? Если вы изучали в последние десятилетия computer science, то могли сталкиваться с ними, но мне не доводилось встречаться с ними в процессе работы программистом, а если и доводилось, то я сразу же о них забыл. Но я считаю, что эти структуры данных обладают потрясающими свойствами.

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

Я решил, что стоит немного о них рассказать.
Читать дальше →

Мой первый контейнер без Docker

Level of difficultyMedium
Reading time6 min
Reach and readers27K

Технологии контейнеризации, возможно, как и у большинства из нас, плотно засели в моей голове. И казалось бы, просто пиши Dockerfile и не выпендривайся. Но всегда же хочется узнавать что‑то новое и углубляться в уже освоенные темы. По этой причине я решил разобраться в реализации контейнеров в ОС на базе ядра linux и в последствие создать свой «контейнер» через cmd.

Читать далее

От комиксов до нейросетей: 5 книг, которые помогут начинающему Data Scientist'у

Level of difficultyEasy
Reading time4 min
Reach and readers6K

Привет! Меня зовут Марк Паненко. Я Chief Data Science в Ozon Банке и большой любитель технической литературы. Этой статьёй я хочу открыть серию публикаций, в которых поделюсь лучшими, на мой взгляд, книгами, необходимыми Data Scientist-у на разных этапах его профессионального развития.

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

Почему книги? И при чем тут комиксы? 

Когда я начинал свой путь в Data Science, мне казалось, что все вокруг уже разобрались в моделировании и работе с данными, и лишь я отстаю. Спасение пришло неожиданно — в виде комиксов. Да-да, вы не ослышались. Однажды я наткнулся на книгу Ларри Гоника «Статистика. Краткий курс в комиксах», и это изменило всё.  

С тех пор я убедился: хорошая книга — это не просто источник знаний, а тренажёр для мышления. Она помогает не утонуть в абстракциях и сохранить интерес к профессии. Сегодня я расскажу о пяти книгах, которые станут вашим «спасательным кругом» на старте.

Читать далее

Операционная система в 1 000 строках кода (часть 1)

Level of difficultyMedium
Reading time11 min
Reach and readers26K

Всем привет! В этой небольшой книге (серии статей, — прим. пер.) мы с нуля, шаг за шагом, напишем скромную ОС.

▍ Навигация по частям



Вы можете насторожиться, услышав, что разработка ОС или ядра, в частности, их базовых функций на удивление проста. Даже система Linux, которая воспринимается как масштабный опенсорсный проект, на стадии версии 0.01 включала всего 8 413 строк кода. Сегодня ядро Linux действительно огромно, но начиналось оно, как и типичный хобби-проект, с крохотной базы кода.

В рамках предстоящей серии статей мы на языке С реализуем базовое переключение контекста, страничное распределение памяти, режим пользователя, командную оболочку, драйвер дискового устройства и операции чтения/записи. И хотя такой объём работы может показаться масштабным, всё это уместится всего в 1 000 строк кода.

Но сразу предупрежу — процесс окажется не так прост, как выглядит на первый взгляд. Самой сложной частью создания собственной ОС является отладка. И мы не сможем использовать для этого printf, пока её не реализуем. Здесь вам потребуется освоить различные техники и приёмы отладки, которые в разработке ПО вы никогда не использовали. В частности, начиная «с нуля», вы будете встречать сложные этапы вроде процесса загрузки и страничной организации памяти. Но не пугайтесь, «отлаживать ОС» мы тоже научимся!

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

Information

Rating
Does not participate
Registered
Activity