TGViewer
Лаборатория Математики и Программирования Сергея Бобровского Лаборатория Математики и Программирования Сергея Бобровского @lambda_brain · 1.41K subscribers
Post #734 761
В продолжение про интерфейсы.

Например, мы вполне можем убрать из интерфейса стека специальные слова push и pop, и назвать эти операции просто add и remove. Потом мы можем создать интерфейс очереди, также используя операции add и remove. Когда я делал курсы по алгоритмам, сразу отметил, насколько похожи интерфейсы классов стека и очереди. Фактически, если заменить push и pop на add и remove, мы получим идентичный интерфейс! Не знаю, хорошо это или плохо, но люди, которые хотят объединить эти два интерфейса, встречаются примерно так же часто, как люди, которые требуют, чтобы их обслужили первыми, потому что они вошли в очередь последними.

Это показывает, что когда мы думаем об интерфейсах, мы думаем не только о том, содержит ли модуль функции с определёнными сигнатурами. Мы также думаем о спецификации -- о том, какого именно поведения мы ожидаем от этих функций. Возможно, рядом с функцией pop() есть комментарий, говорящий, что она обратна функции push(). Этот факт можно считать частью типа модуля в той же мере, что и сами сигнатуры функций, потому что знание этого факта необходимо для использования модуля! В идеале его надо сделать "физической" частью типа.

Существует несколько языков с достаточно мощными системами типов, чтобы выразить связь между push() и pop() -- например, Coq, Agda, Idris. Я могу показать вам, как это выглядит на любом из них, но к большому сожалению это совсем непрактично. Поэтому пока основное решение -- материалы из СильныхИдей, где я постоянно поясняю, как правильно думать на более высоком логическом уровне -- абстракциями, которые в обычном коде отсутствуют по определению.
  • 🔥 6
  • ❤ 2
  • 👍 2
More from @lambda_brain
  1. Oct 15, 2026И вот куда же в этом десятилетии придёт айтишка с эйайкой?? Ладно, спалю базу. Вот о чём т…
  2. Oct 15, 2026Уничтожаем всю мировую AI-индустрию и бизнес на цодах-шмодах одним сетапом. Старенький сис…
  3. Oct 15, 2026Вот идеальный формат собеседования в айтишке: в течение часа наблюдайте за тем, как кто-то…
  4. Oct 15, 2026Каждый месяц мой рабочий процесс разработки с использованием AI полностью заменяется совсе…
  5. Oct 14, 2026Этот отчёт ментата заслуживает быть приведённым полностью => Итоги. Часов 8 "одним подходо…
  6. Oct 14, 2026Прекрасное: вся музыкальная индустрия перешла на цифру и стриминг, но музыкальная экономик…
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 →