TGViewer
YeaHub Tech YeaHub Tech @yeahub_tech · 412 subscribers
Post #313 84
#алгоритмы #git #diff #программирование #CS

🔖 Знаешь ли ты, почему diff выглядят по-разному в разных инструментах?

Оказывается, это не баг, а фишка алгоритмов!

🔸Проблема

Есть две версии кода. Нужно показать разницу. Логично, что должен быть один правильный diff, верно?

❌ Неправильно! Существует множество "правильных" diff'ов.

Пример:

 a
+b
-c
d


Столь же правильно:

 a
-c
+b
d


Они идентичны, но выглядят совсем по-разному!

💡 Алгоритм Майерса

Большинство инструментов используют алгоритм Майерса. Он находит один из минимальных diff'ов (но не обязательно самый читаемый).

Сложность: O(ND) в обычных случаях, но может деградировать до O(N²) в наихудшем!

🔸 Почему они отличаются

1️⃣ Разная реализация — даже один алгоритм может дать разные результаты
2️⃣ Эвристики — добавляют быстродействие, но жертвуют качеством
3️⃣ Постобработка — переставляют строки, чтобы улучшить читаемость


🔸 Три режима

Есть компромисс между скоростью и качеством:

🔸 Fast — максимум скорости, минимум качества
🔸 Default — баланс (используется везде)
🔸 Minimal — идеальный diff, но медленнее

💡 Главное открытие

Читаемость diff определяется не только алгоритмом, но и его реализацией + постобработкой

Поэтому в GitHub качество выше, чем в простом diff утилите. Они используют лучшую реализацию с постобработкой (indent heuristic).
Подробнее по ссылке ниже ⬇️


📎 Статья

🎙 Новости

📝 База вопросов
  • 👍 2
More from @yeahub_tech
  1. Oct 9, 2026#Собес #pipeline #ci #stage 🤔 Что происходит при автоматической сборке feature-ветки на s…
  2. Oct 8, 2026#course #задачи #тесты 📚 JavaScript. A3 Задачи Задачи на программирования на языке JavaSc…
  3. Oct 7, 2026#course #начинающие 📚 Твой Golang Твой Golang — это идеальный старт для освоения языка. П…
  4. Oct 5, 2026🧑‍💻 Вопросы с собесов для Node.js Разработчика 1. Как использовать Service Workers для р…
  5. Oct 2, 2026#Собес #transaction #propagation #required 🤔 Что такое propagation у транзакций и какие т…
  6. Oct 1, 2026#book #book 📚 Библия C#. 6-е изд. Автор: Михаил Фленов Это настольная книга программиста,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →