Обновить
1024K+

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

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

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

Вайбкодинг и философский камень

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

В начале было слово. И слово было в чате. Вы задавали вопросы, ИИ генерил код. Этот код то работал, то не работал. Но чтобы это проверить, надо было вручную копипастить и запускать его. Было не очень удобно, но все равно круто! А потом кто-то приделал чату руки — tools —и появились ИИ-агенты.

Это выглядело уже совсем магически: ты говоришь агенту, что нужно, а он выкатывает тебе готовое приложение. С легкой руки Андрея Карпатого такой стиль программирования стали называть вайбкодингом. И развелось этих вайбкодеров видимо-невидимо. На первых порах все были счастливы: «Вы только посмотрите, что я вчера навайбкодил! И оно работает! Разве это не чудо?»

Когда восторги немного улеглись, пришло осознание, что ИИ-шечка неплохо справляется только с простыми задачами — запилить небольшой сайт, игру, что-нибудь автоматизировать для личных нужд. Это делалось действительно на вайбе — ты только накидываешь идеи, а оно само как-то генерится. А как пошли серьезные проекты, то выяснилось, что с полпинка ничего не получается. Что агенту надо долго и нудно объяснять, что от него требуется и только тогда может что-нибудь получится. А может и нет.

Читать далее

Как мы превратили API-контракт в отдельный артефакт и сократили генерацию клиента с 15 минут до нескольких секунд

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

Привет! Я Дмитрий, старший Angular-разработчик в команде Klecks — платформы для разметки данных AI-Центра Т-Банка.

Последние годы мы жили с NSwag: один api.ts на 13 000 строк, Docker-сборка бэкенда и ожидание по 15—17 минут каждый раз, когда менялся контракт. В рамках одной из задач мы решили перейти к модели, где OpenAPI-файлы лежат в репозитории, а клиент генерируется через ng-openapi-gen. Расскажу, какие проблемы мы пытались решить, что пробовали на стороне ASP.NET Core и какой workflow получился в итоге.

Читать далее

Разработка через «ИИ» отбирает у программистов состояние потока?

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

Хочу обсудить с коллегами разработчиками один вопрос, чтобы понять — это лично моя проблема или нет, и если да — нашёл ли кто-то для неё решение?

Эти руки пишут код...

Flutter 3.47 — Что нового во Flutter?

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

Вышла версия Flutter 3.47, и вместе с ней мы получили несколько интересных нововведений.

Сегодня мы приветствуем выпуск версии 1.0 автономного приложения material_uiи cupertino_uiпакетов. Это важная веха, которая отделяет системы проектирования от основного SDK.

Мы также повышаем производительность и улучшаем инструменты во всех областях. В этом релизе Impeller по умолчанию доступен для настольных компьютеров, наши конвейеры подготовлены для iOS, macOS и Xcode 27, а предварительные версии виджетов Flutter переведены в стабильную версию.

Итак, flutter upgradeдля начала выполните команду в терминале или прочитайте дальше, чтобы узнать больше о главных изменениях в этом релизе.

Читать далее

Что такое Harness и с какими моделями его едят?

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

Сегодня, 13 августа DeepSeek выложил DeepSeek Harness v0.1 в Developer Preview. Открытый код, MIT, пакет @deepseek-ai/dsh в npm, запуск в одну строку.

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

Выбрать свой молоток

От спанов к сценарию агента: зачем мы добавили GenAI-представление трейса

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

Трейс ИИ-агента можно открыть в обычном "дереве" и найти медленный вызов или спан с ошибкой. Но по дереву трудно восстановить логику запуска: сколько раз агент обращался к модели, какие инструменты вызывал, где повторил шаг и какой ответ в итоге увидел пользователь.

В Proto Observability Platform уже были дерево, граф, флейм-граф и другие представления трейса. Они продолжали решать инфраструктурные задачи, но ответы о поведении агента приходилось собирать вручную из десятков спанов, транспортных вызовов и повторяющихся тел сообщений. Мы увидели это сначала на OpenTelemetry Demo 3.0, затем при отладке собственного «AI-аналитика» в связке с нашим MCP-сервером.

В результате мы добавили отдельное GenAI-представление с четырьмя режимами: лентой, графом шагов, графом вызовов и чатом. Дальше покажем, на какой вопрос отвечает каждый режим, почему одного универсального графа оказалось недостаточно и какие дефекты реальной GenAI-инструментации пришлось учитывать.

Читать далее

Какую онлайн-магистратуру выбрать: рейтинг лучших программ

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

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

Напоминаем, что приёмная кампания 2026 закончится меньше, чем через месяц. Поэтому, если вы планировали поступать в этом году, поторопитесь.

Читать далее

Go SDK для YDB: уменьшаем количество запросов к СУБД для интерактивных транзакций

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

Привет, Хабр! Меня зовут Степан Пестерников, мы с командой делаем Алису и активно используем СУБД Яндекса. Недавно коллеги из YDB провели большой рефакторинг в YDB Go SDK, где по умолчанию теперь используется новый Query Service.

Я воспользовался этим рефакторингом, чтобы уменьшить количество сетевых запросов от SDK к YDB. Клиентские SDK устанавливают к распределённой СУБД Яндекса gRPC-подключения, поверх которых отправляются низкоуровневые команды. Какие-то из этих команд можно объединять: например, команду начала транзакции и выполнения первого запроса.

В статье я покажу фрагменты кода и расскажу, как мы делали улучшения, которые вошли в релизы v3.126.0 и v3.126.5 Go SDK. Фрагменты кода получились небольшие, и на их примере удобно показать, как этими оптимизациями пользоваться.

Читать далее

Пишу русскоязычный ЯП. Помогите выбрать самый читаемый вариант синтаксиса

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

Если честно, я давно планировал написать свой язык. Просто надоело на каждом проекте писать одинаковый бойлерплейт, ловить неожиданные ошибки в рантайме, натыкаться на компоненты аля LoanPreloanInterractNDFL6.2ReportViewComponent - и гадать - что имел ввиду художник...

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

Но раскидав исходники по знакомым, получил неутешительный фидбэк: читать трудно! Встал дурацкий вопрос: как это должно выглядеть в коде, чтобы было удобно? Я набросал 4 варианта синтаксиса — от LISP-стиля до почти Python - нотации. У каждого есть плюсы и минусы, и я уже неделю не могу выбрать.

Какой из вариантов читать было бы удобнее лично вам? Проголосуйте!

P.S. Если заинтересовал проект - уже сейчас доступна playground площадка для экспериментов http://marka-lang.ru/playground.php

Читать далее

Кэш — это холодильник: TTL, инвалидация и cache stampede

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

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

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

Читать далее

Code, Force, Repeat. Олдскульный GUI для олдскульных скриптов. Часть 1. Экспозиция

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

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

Сегодня мы изучим небольшой .fsx-скрипт, который я ежедневно запускаю, чтобы получить очередную порцию задачек из архива codeforces.com. Необычно то, что скрипт функционирует как полноценное GUI-приложение, пусть и очень страшное старое. Кажется, что до меня так никто не делал, так что с осторожностью назову это авторской инновацией.

Читать далее

Вы ещё пишете код слева направо? Тогда мы идём к вам

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

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

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

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

Читать далее

ИИ в масштабе: как управлять внедрением, метриками и трансформацией команды из 500+ разработчиков

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

За год экспериментов мы выяснили, что традиционное обучение почти не повышает adoption, а количество пользователей ещё ничего не говорит о бизнес-эффекте. Агенты могут написать от 80 до 99% кода, а могут за 12 часов разрушить архитектуру проекта. Мини-команда из двух разработчиков и бизнес-эксперта с помощью ИИ может сделать интеграционный сервис так же быстро, как команда из пяти человек, но Lead Time при этом может остаться прежним.

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

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

Читать далее

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

Мой наивный робот: как я оцифровал дилерские рефлексы на VB6

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

В 2020 году я написал робота, который закрывал за меня клиентские валютные сделки на Мосбирже. Схема оценки рынка у него была, прямо скажем, наивная: восемь метрик, пять состояний и лестница if-ов. Эта схема два года зарабатывала банку его копейки — и умерла не от наивности.

Читать далее

Синдром ИИ-самозванца у программистов

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

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

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

Читать далее

Заметки о том, как я писал SFU на Rust (2 часть)

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

Продолжаем изучать, как устроен SFU изнутри: добавляем simulcast, ice restart и мониторинг сети. Дневник разработки на Rust.

Читать далее

wake up: демо в 16 байтах

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

В детстве я учился программированию на старом IBM PC с монохромным зелёным монитором, поэтому давно хотел создать программу для этой системы. За последние пятнадцать лет я написал более чем сотню небольших интро. В последнее время я был не так активен, но потрясающее интро «Rainbow Surf» автора Plex размером всего 16 байт мотивировало меня снова вернуться к старым наброскам и взяться за работу.

Создание этой программы сопровождалось привычными экспериментами. Я развлекался с клеточными автоматами в графике и звуке, а также исследовал трюки sizecoding. В частности: а) полиморфные ассемблерные команды (наподобие add [bx+si],al, имеющую машинный код 0x0000) б) переход в середины команд для экономии байт и многократного использования опкодов. Из сотен мелких экспериментов мне приглянулся один, интересный одним только своим названием.

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

В моём интро «M8trix» 2014 года по экрану уже бегали псевдослучайные буквы (в 8 байтах, а потом и в 7), но мне всегда было интересно, как добавить к ним красивый звук. Но хронологически в разработке «wakeup» я сначала занимался звуком. Хорошим подзаголовком к статье мог бы быть «16 байт, превращающие звук треугольника Серпинского в дождь символов из „Матрицы“».

Примечание: на каждом такте времени новая строка треугольника Серпинского а) воспроизводится через динамик б) отрисовывается на экране с шагом 56. Можно ощутить движение, но не увидеть его, потому что оно имеет «ширину» 8192 пикселей, но одна строка символов состоит всего из 80 байт. Если бы экран был гораздо больше, то можно было бы увидеть треугольник. Или если не пропускать пиксели и рисовать и все одновременно, он тоже был бы виден.

Читать далее

Чему мы научились, написав на Rust среду выполнения для TypeScript

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

Encore зародился как фреймворк на Go, и на Go там были написаны среда выполнения, интерфейс командной строки (CLI), парсер и компилятор. Когда мы решили поддерживать TypeScript, логичнее всего было бы написать на TypeScript и среду выполнения тоже, либо достроить к среде выполнения Go какой‑нибудь мостик. Но в итоге пришли к тому, что написали новую среду выполнения с нуля на Rust.

Читать далее

Async на Rust завис: как понять, где именно, когда паники нет и стек молчит

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

Сервис жив, CPU в норме, паники нет — а часть запросов зависает на минуты. В async‑Rust привычный стек часто мало помогает: задача могла застрять на блокирующем вызове, мьютексе или просто перестать получать пробуждения.

Разбираем, как отличать эти сценарии в Tokio и куда смотреть, когда отладчик молчит.

Читать далее

Куда на самом деле попадает секрет при сборке Docker-образа: разбираем 8 способов

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

Секрет попал в Dockerfile, разработчик спохватился и добавил RUN rm. Файла в контейнере больше нет — значит, всё в порядке? Нет: строку по-прежнему можно достать из образа, даже не запуская контейнер. Я собрала восемь образов, в каждом передала секрет своим способом и разобрала результат на слои и метаданные. Ниже — где именно оседает секрет в каждом случае и какие два способа действительно не оставляют следов.

Все эксперименты выполнены на Ubuntu 24.04.1 LTS, Docker Engine 29.1.3, BuildKit v0.26.2.

Читать далее