Обновить
1024K+

Программирование *

Искусство создания компьютерных программ

1 684,36
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Структуры данных на практике. Глава 11: Префиксные деревья и базисные деревья

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

Кошмар с автозавершением

Наше префиксное дерево было в 8 раз медленнее хэш-таблицы. И оно потребляло 128 МБ памяти, в отличие от хэш-таблицы с 24 МБ.

Такого не должно было произойти. Префиксные деревья — стандартное решение для автозавершения: поиск за O(k), где k — длина строки вне зависимости от размера датасета. Идеально подходит для сопоставления префиксов. Обычно всегда используется для автозавершения, проверки правописания и таблиц IP-маршрутизации.

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

Поэтому мы реализовали префиксное дерево. Результаты бенчмарка оказались ужасными:

Префиксное дерево было в 8 раз медленнее простой хэш-таблицы. И оно использовало 128 МБ памяти, в то время как хэш-таблица — всего 24 МБ.

Где мы ошиблись?

Читать далее

Делегаты и Лямбды: От тайного знания к повседневному инструменту

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

В этой статье мы не просто посмотрим синтаксис — мы поймём зачем это нужно и как работает под капотом. Мы пройдём путь от указателей на функции в C/C++ до современных лямбда-выражений в C#, разберёмся с делегатами и научимся использовать всю мощь функциональных возможностей языка.

Читать далее

Долг понимания — скрытая цена кода, сгенерированного искусственным интеллектом

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

“Долг понимания” (comprehension debt) — это скрытая цена, которую человеческий интеллект и память платят в результате чрезмерной зависимости от ИИ и автоматизации. Для инженеров это особенно актуально в сфере разработки агентных систем.

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

Читать далее

Парсер‑комбинаторы «с нуля»

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

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

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

Эту статью я позиционирую как введение в парсер‑комбинаторы «для чайников» (или «для самых маленьких» — как вам больше нравится). Цель: попытаться рассказать простым языком и с примерами так, чтобы Вы могли после прочтения написать свой парсер без какого‑либо предварительного опыта и знаний в области синтаксического анализа.

Приятного чтения!

Читать далее

Структуры данных на практике. Глава 10: B-деревья и деревья, эффективно использующие кэш

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

Загадка базы данных

Вся наша база данных находилась в памяти, однако операции поиска по ней занимали 12 тысяч тактов. При миллионе показаний датчика IoT-устройства с 64 КБ кэша реализация красно-чёрного дерева оказалась слишком медленной для запросов в реальном времени.

«Давайте попробуем B-дерево», — предложил я.

«Разве они нужны не только для баз данных на дисках? — спросил лид, — У нас всё находится в памяти. Чем нам будет полезно B-дерево?»

Вопрос был вполне разумным. B-деревья были придуманы для доступа к диску; каждый узел в них — это блок диска. Однако паттерны промахов кэша выглядели подозрительно похожими на паттерны дискового ввода-вывода — всего в 100 раз, а не в 100000 раз быстрее.

В итоге мы реализовали B-дерево. Результаты удивили всех...

Читать далее

Машина Тьюринга в Minecraft

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

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

Делаем интересную Майнкрафт штуку

Go, TUN и UDP: пишем сетевой relay с гибкой конфигурацией

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

Продолжаю пилить на Go утилиту для работы с TUN-интерфейсами. В предыдущей версии пакеты проходили путь system <-> tun10 <-> go app <-> tun11 <-> inet. Основная цель тогда была одна — разобраться с TUN-интерфейсами и сетевыми настройками. В текущей версии я добавил простейший udp relay, вынес сложность в конфиг и в целом переработал проект.

Читать далее

project-graph-mcp: навигация по проекту для ИИ-агента

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

Мы написали project-graph-mcp - MCP-сервер для структурного анализа кода. Агент работает зная полную архитектуру проекта, не тратя на это лишние токены. Сервер строит граф зависимостей и отдает минифицированный JSON.

Читать далее

Довели. Поднял корпоративный мессенджер локально

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

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

Но я это делаю вообще в первый раз, поэтому сразу появилась гора вопросов: а с чего начать, как это спроектировать, сколько нужно серверов, нужен ли VPN, как не оставить дыру в безопасности и не собрать систему, которую потом я сам же запарюсь поддерживать?

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

Читать далее

Где же все эти приложения, создаваемые с помощью ИИ?

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

Любители вайбкодинга и агентного программирования говорят, что работают в 2, 10, а то и в 100 раз продуктивнее! Один даже разработал с нуля целый браузер. Невероятно!

И скептики задают правомерный вопрос: «А где же все эти приложения?» Если пользователи ИИ становятся пусть хотя бы вдвое продуктивнее, то где искать этот двухкратный прирост созданных программ? Все подобные вопросы исходят из предположения, что миру нужно больше ПО, и если оно станет дешевле в производстве, то и создавать его будут больше. Так что, если вы с этим предположением согласны, то где же все эти дополнительные программы, которые можно было бы отнести к «эффекту ИИ»?

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

Читать далее

Возврат значений из функций в x86-64: регистры, память и скрытые аргументы

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

Наверняка многие и не задумываются: а как на самом деле происходит возврат структур и других типов значений из функций? Что происходит под капотом, какие приемы задействует компилятор? В данной статье я постараюсь дать ответы на эти вопросы и сделать это просто и понятно.

Читать далее

Образовательные программы CS/AI в Германии без немецкого языка: варианты, о которых мало кто знает

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

В 2023 году JetBrains запустил стипендиальную программу в немецком частном университете — с полным покрытием tuition fee, жилья и проживания для студентов CS/AI. Университет этот русскоязычным абитуриентам почти не известен. Ниже — разбор того, что это за место, какие там программы и стоит ли его рассматривать всерьёз.

Читать далее

Как получить безлимитный доступ к Claude Sonnet 4.5 бесплатно и без VPN

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

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

Читать далее

Ближайшие события

Вайбкодим .EXE под Windows с GUI на AutoHotkey v2

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

История о том, как превратить консольный скрипт в полноценное Windows приложение с GUI на AutoHotkey v2 при помощи нейросетей и вайбкодинга.

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

Читать далее

Советы тем, кто боится поступать в ШАД (на своём примере)

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

Советы тем, кто боится поступать в ШАД (на своём примере)

Всем привет! В предыдущей статье я рассказывала о своём пути поступления в ШАД. Сейчас я уже закончила первый семестр и учусь на втором. В этой статье хочу поделиться впечатлениями об учёбе: как выстроен процесс, насколько велика нагрузка и с какими сложностями можно столкнуться.

Немного о себе

Хоть я и закончила два курса ВМК МГУ, я не считаю себя сильным студентом. Я из обычной школы Калининграда, олимпиадами стала заниматься поздно, и результатов хватило только на 100 баллов ДВИ при поступлении (льгота олимпиадникам). На ВМК я училась не в самой сильной группе. Уровень курсов в ШАДе оказался для меня совершенно новым — такого насыщенного и глубокого материала у меня раньше не было.

Окружение

В ШАДе много действительно сильных ребят: всероссы, межнарники, студенты ПМИ ФКН, физтехи и другие, которые многие темы уже проходили в рамках своих вузовских программ. Я не раз наблюдала, как едва открывалась задача в домашнем задании, а её уже кто‑то сдавал. Сначала это пугало, я чувствовала себя не в своей тарелке. Но оказалось, что, помимо таких звёзд, есть и простые студенты, как я. Есть даже ребята с гуманитарным бэкграундом, их пример вдохновляет.

Выбор направления

В ШАДе несколько направлений. Я выбрала Data Science. Откровенно говоря, решение было скорее интуитивным: мне всегда была ближе математика, чем жёсткая разработка, поэтому направления «Разработка машинного обучения» или «Инфраструктура больших данных» казались сложнее и не совсем моими. Остальные направления ощущались для меня немного абстрактными.

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

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

Читать далее

Красивый скриншот вашего кода

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

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

Читать далее

Чем профильная онлайн-магистратура может помочь разработчикам оставаться востребованными в 2026 году

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

Привет, это команда Яндекс Практикума. Сегодня обсудим, как устроена фронтенд- и бэкенд-разработка в 2026 году: какие тренды актуальны на сегодняшний день, как оставаться востребованным специалистом и развиваться системно. В контексте системного развития расскажем про онлайн-магистратуру «Фронтенд- и бэкенд-разработка» ИТМО в партнёрстве с Практикумом: из чего состоит программа, почему она подойдёт специалистам разного уровня и что нужно, чтобы поступить.

Читать далее

Кажется, во мне умирает программист

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

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

Читать далее

ПИД-регулятор — это весело

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

Давайте исследуем ПИД-регулятор через пень-колоду: FDTD, численное интегрирование, ракету и самобалансирующегося робота! Ворох нечитаемого кода! Мало не покажется

Читать далее

Как собрать систему захвата ниши: семантика, архитектура сайта, LLM-пайплайн и подготовка к AI-поиску

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

SEO‑индустрия умеет делать две вещи особенно стабильно. Во‑первых, каждые несколько лет торжественно объявлять свою смерть. Во‑вторых, продавать одни и те же хаотичные процессы под новыми словами. Раньше это называлось «контент‑маркетинг», потом «topic clusters», потом «programmatic SEO», теперь на сцену влетели LLM, AI Overviews, GEO, AEO и еще десяток аббревиатур, от которых у любого редактора дергается глаз.

На этом месте обычно появляется очередной бодрый тред в духе «SEO умерло, теперь нейросеть сама все сделает». Потом кто‑то идет в ChatGPT, просит «собери семантику по нише», получает 400 красивых галлюцинаций, 120 дублирующих друг друга страниц, 30 заголовков в стиле «Купить купить купить недорого цена» и торжественно называет это pipeline.

Проблема, конечно, не в LLM. Проблема в том, что хаос не становится системой только потому, что вы добавили к нему API‑ключ.

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

В этой статье я хочу разобрать не набор SEO‑ритуалов и не коллекцию модных слов про AI, а рабочую систему. Ту самую, в которой семантика перестает быть кладбищем таблиц и превращается в управляемый пайплайн: от сырых запросов до кластеров, от кластеров до структуры сайта, от структуры до страниц, а от страниц до понятного плана разработки, контента и AI‑видимости. Это не теоретическая экскурсия и не набор “полезных советов”. Это схема процессов, которую можно адаптировать под реальную нишу, реальный сайт и реальный production.

Читать далее