Hacker News Digest

Тег: #ast

Постов: 6

Syntax highlighting is a waste of an information channel (2020) (buttondown.com) 🔥 Горячее

Синтаксическое выделение цветом полезно, но недоиспользует возможности цвета как канала информации. Цвет может нести гораздо больше информации, чем просто выделение синтаксиса. Например, можно использовать разные цвета, чтобы показать уровень вложенности скобок, что улучшает читаемость кода.

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

Ещё одна идея — выделение функций, которые вызывают исключения, или функций, которые были изменены в последнее время. Это превращает подсветку из чисто декоративной функции в мощный инструмент для анализа кода и отладки.

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

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

by swyx • 13 октября 2025 г. в 00:48 • 303 points

ОригиналHN

#syntax-highlighting#ast#ide#intellij-idea#code-analysis#code-readability#code-debugging

Комментарии (134)

  • Обсуждение показало, что большинство участников считают современные редакторы кода не используют цвет как информационный канал, а лишь как декоративный элемент.
  • Участники подчеркнули, что вместо того, чтобы использовать цвет для передачи дополнительной информации, редакторы ограничиваются лишь базовой подсветкой синтаксиса.
  • Некоторые участники упомянули, что такие вещи как подсветка потока данных, подсветка переменных и подсветка ошибок уже реализованы в таких IDE как IntelliJ IDEA, но не используются в других редакторах.
  • Были также упомянуты такие вещи как подсветка важных частей кода, подсветка области видимости и подсветка неиспользуемого кода.
  • Несколько участников выразили мнение, что цветовая схема должна быть более гибкой и адаптивной, чтобы отражать структуру и смысл кода, а не только его синтаксическую категорию.

Show HN: Pyscn – Python code quality analyzer for vibe coders (github.com)

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

Инструмент предлагает детальные отчёты с рекомендациями по исправлению, интеграцию в CI/CD и поддержку кастомных правил. Особенность — акцент на объяснении ошибок, что ускоряет обучение и улучшает практики кодинга.

by d-yoda • 05 октября 2025 г. в 13:22 • 109 points

ОригиналHN

#python#static-analysis#code-quality#ast#tree-edit-distance#pylint#ruff#ci-cd#github

Комментарии (64)

  • Обсуждение инструмента для анализа качества кода, который использует tree edit distance на AST для обнаружения структурных дубликатов, в отличие от текстовых сравнений
  • Споры о "vibe coders" (разработчиках, полагающихся на ИИ): одни считают их безразличными к качеству, другие защищают как прагматичный подход для определенных задач
  • Вопросы о технических деталях: влияние языков со статическим анализом, обобщаемость на другие языки через tree-sitter, сравнение с существующими инструментами (Pylint, Ruff)
  • Предложения по интеграции: как инструмент для инженеров, поддерживающих legacy-код, или как MCP-сервер для AI-агентов
  • Обсуждение будущего: роль инструментов анализа в эпоху ИИ-ассистентов и их потенциал для улучшения качества в доминирующих языках (Python/JS)

Getting AI to work in complex codebases (github.com) 🔥 Горячее 💬 Длинная дискуссия

Метод FCA (Function Calling Abstraction) предлагает новый подход к инженерии контекста для ИИ-агентов, работающих с кодом. Вместо передачи полного кода функции в контекст, он использует абстрактные описания её поведения, что значительно сокращает объём передаваемых данных. Это позволяет агентам точнее понимать предназначение функций без перегрузки контекста избыточной информацией.

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

by dhorthy • 23 сентября 2025 г. в 14:27 • 444 points

ОригиналHN

#llm#code-generation#code-analysis#context-engineering#function-calling-abstraction#ast#github

Комментарии (370)

  • Участники обсуждают эффективность подхода "исследование -> план -> реализация" для работы с ИИ в больших кодовых базах, отмечая рост производительности, но и сложности управления контекстом.
  • Поднимаются вопросы о надежности ИИ: необходимость почти идеальной точности генерации кода, проблемы с галлюцинациями и сложность верификации поведения без чтения каждой строки.
  • Критикуется масштабируемость подхода: управление контекстом становится сложным при больших объемах, а стоимость использования мощных моделей (например, Opus) может быть высокой.
  • Отмечается сдвиг роли инженера: от написания кода к определению спецификаций и верификации поведения, что требует новых навыков и вызывает сопротивление у некоторых разработчиков.
  • Обсуждаются технические детали и инструменты: важность компрессии контекста, использования AST для анализа кода, необходимость ведения логов промптов и стилистического единообразия кода.

Formatting code should be unnecessary (maxleiter.com) 🔥 Горячее 💬 Длинная дискуссия

Форматирование кода должно быть лишним

В 80-х это уже знали.
Мой школьный учитель информатики, мистер Пейдж, участвовал в разработке компилятора Ada. Когда я в 2016-м жаловался на линтеры, он напомнил: проблему решили 40 лет назад. В Ada исходники не хранили — использовали IR-дерево DIANA. Каждый смотрел его в своём стиле: отступы, пробелы — всё равно.

Сейчас, в 2025-м, мы всё ещё спорим о запятых.

Как это работало
Рабочая станция Rational R1000 (1985) хранила не текст, а DIANA. IDE позволял редактировать дерево напрямую — проекционное редактирование. Компиляция была инкрементной, рефакторинг мгновенным, а «исходник» — просто красивой печатью дерева.

Плюсы: никаких holy-war’ов о табах, быстрая интеграция, встроенный VCS и отладка.
Минус: требовалась железная станция и знание Ada.

Вывод
Не нужно возвращаться к проекционным редакторам, но можно ли встроить идею «храним структуру, а не текст» в современные языки и IDE? Тогда форматирование станет личным вкусом, а не командным законом.

by MaxLeiter • 07 сентября 2025 г. в 23:08 • 316 points

ОригиналHN

#ada#dia#unison#ast#ide#git#gofmt#prettier#black#code-formatting

Комментарии (422)

  • Одни считают форматирование важным каналом коммуникации и показателем вкуса/опыта разработчика, другие — пустым байкшедом, который должен решаться автоматическим линтером без обсуждений.
  • Хранение кода не как текста, а как IR/AST (пример — Ada/DIANA, Unison) позволяет каждому видеть свой вариант форматирования, но ломает привычные grep, diff, git и другие текстовые инструменты.
  • Проекционное редактирование (JetBrains MPS, Chrome DevTools «pretty») демонстрирует «один IR — много представлений», но требует специальных IDE и пока не стало массовым.
  • Проблема смешанных языков, legacy, необходимости универсального стандарта IR и инерции экосистемы тормозит переход от plain-text.
  • Автоформатеры (gofmt, Prettier, Black) уже закрывают 90 % вопросов: на сохранении/коммите единый стиль, локально можно настроить git-фильтры smudge/clean.

How I Made Ruby Faster Than Ruby (noteflakes.com)

Как я ускорил Ruby до скорости Ruby

P2 — новая библиотека шаблонов, где HTML описывается чистым Ruby. В отличие от ERB, исходный код шаблона не исполняется: он компилируется в эффективный Ruby-код, который генерирует HTML. Это делает P2 первой библиотекой, использующей компиляцию исключительно.

Как работает компиляция

Шаблон — это Proc:

->(title:) {
  html { body { h1 title } }
}.render(title: 'Hi')

При вызове #render код превращается в:

->(buf, title) {
  buf << "<html><body><h1>"
  buf << ERB::Escape.html_escape(title.to_s)
  buf << "</h1></body></html>"
  buf
}
  1. Парсинг: Sirop читает файл и строит AST через Prism.
  2. Трансформация: TagTranslator заменяет CallNode на TagNode, если вызов соответствует HTML-тегу без получателя.
  3. Обратный код: подкласс Sourcifier преобразует AST обратно в Ruby, подставляя строки буфера и экранирование.

Оптимизация

Jean Boussier указал узкие места и направления. В результате генерация стала заметно быстрее «чистого» Ruby.

by ciconia • 18 августа 2025 г. в 11:22 • 79 points

ОригиналHN

#ruby#erb#html#compiler#performance#ast#prism#rust

Комментарии (20)

  • Автор создал альтернативу ERB, ускорил её до сопоставимой скорости, но, по мнению @swombat, выводит ошибочное заключение.
  • @ciconia (автор) спорит: производительность Ruby важна, его системы выдают >1K RPS.
  • @barrkel: Ruby медленнее, но быстрее Python; у каждого свои пути к скорости.
  • @Alifatisk: сравнивать Ruby с Rust бессмысленно — языки для разных задач.
  • Остальные комментарии свелись к старому мему «yo dawg».

Claude Code IDE integration for Emacs (github.com) 🔥 Горячее 💬 Длинная дискуссия

Claude Code IDE для Emacs

Обзор

  • Интеграция с Claude Code CLI через MCP создает двусторонний мост между Claude и Emacs.
  • Claude получает доступ к возможностям Emacs: LSP, проекты, Elisp-функции, что делает его «понимающим Emacs» помощником в вашем рабочем процессе.

Возможности

  • Автоопределение проекта и управление сессиями
  • Терминал с цветом (vterm/eat)
  • Реализация MCP для IDE-интеграции
  • Инструменты для файлов, состояния редактора и рабочего пространства
  • Расширяемый сервер MCP для Emacs-команд (xref, tree-sitter, project и др.)
  • Диагностики Flycheck/Flymake
  • Расширенный дифф с ediff
  • Поддержка tab-bar и отслеживание выделений/буферов

Интеграция инструментов Emacs

  • LSP через xref (eglot, lsp-mode) для навигации по коду
  • Tree-sitter для анализа AST
  • Imenu для структуры символов
  • Project для операций на уровне проекта
  • Любую команду/функцию Emacs можно выставить как MCP-инструмент: поиск и рефакторинг по проекту, доступ к режимам, выполнение кастомного Elisp.

Скриншоты

  • Осведомленность об активном файле — знает, какой файл открыт
  • Контекст выделения — работает с выделенным текстом
  • Продвинутый дифф с диагностикой — ediff и доступ к ошибкам/предупреждениям
  • Автоматические упоминания текста — вставка ссылок на выделение в диалог
  • Восстановление сессии — продолжение разговоров с флагом –resume

Установка Предварительные требования

  • Emacs 28.1 или новее

by kgwgk • 06 августа 2025 г. в 13:17 • 772 points

ОригиналHN

#emacs#lsp#elisp#vim#llm#ast#ide#tree-sitter#github

Комментарии (261)

  • AI-инструменты вроде Claude Code делают Emacs/Vim конкурентоспособными: вместо самостоятельной реализации сложных IDE-функций редакторы просто интегрируются с готовыми агентами.
  • Пользователи хвалят Emacs за полный доступ к состоянию редактора и возможность «на лету» менять поведение через Elisp, что идеально подходит для AI-агентов.
  • Уже существует несколько реализаций интеграции (claude-code.el, eca, claude-code-emacs и др.); споры идут, какая из них лучше, но все признают, что встраивание в Emacs ускоряет рабочий процесс.
  • Проблемы: сложность конфигурации, риск утечки чувствительных данных, привязка к конкретному провайдеру и необходимость локального запуска для приватности.