- PVSM.RU - https://www.pvsm.ru -
Почему многие разработчики не мыслят словами, а сразу «видят» архитектуру, блок-схемы, паттерны и фрагменты кода? Что особенного в программиста и как он превращает абстрактные задачи в работающие системы? В этой статье я разбираюсь в когнитивной архитектуре программистского

«Ты вечно бормочешь что-то себе под нос», — говорит мне человек, наблюдая за тем, как я сижу перед ноутбуком с выражением лица, напоминающим хардкорную медитацию. Но правда в том, что я не разговариваю. Я думаю. Я не думаю словами. Я думаю конструкциями. Если что-то идет не так, я не слышу «ошибка», я вижу KeyError, null, SIGSEGV. Иногда прямо перед глазами.
Программисты редко формулируют проблему в голове естественным языком. Мы строим абстракции, раскладываем на слои, оборачиваем ошибки и вспоминаем сигнатуры методов. В этой статье я постараюсь объяснить, почему это не просто привычка, а нейрокогнитивная особенность, которая формируется у нас годами.
Рабочая память в голове — это тот же стек вызовов. Слишком много контекста — и всё валится. Переключение между задачами — это как git stash: что-то скинул, но не факт, что достанешь обратно без боли.
Писать код — не значит просто «думать логически». Это постоянная балансировка между:
левой префронтальной корой (абстрактное
правым полушарием (визуализация, паттерны),
и моторной памятью (вспомни, как ты вслепую пишешь def init(self):).
Пример: ты думаешь над структурой класса. В этот момент
Один из самых заметных эффектов — мы «собираем» мысль по аналогии с компиляцией:
class Vector2D:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Vector2D(self.x + other.x, self.y + other.y)
В голове это выглядит не как «два вектора складываются», а как: объект, метод, сигнатура, проверка типов, возвращаемое значение. Мы не думаем: «сложи x и x», мы видим self.x + other.x.
Когда изучаешь паттерны проектирования, со временем
фабрика,
декоратор,
адаптер.
Это не просто шаблоны, это «горячие ключи» в голове.
У каждого опытного разработчика есть «чуйка». Её трудно объяснить словами, но она работает. Ты видишь функцию и понимаешь: тут будет баг, даже если пока не знаешь где.
Это не магия. Это гиппокамп и моторная память. Если ты сто раз отлаживал NullPointerException,
Почему многие программисты не любят писать документацию? Потому что язык — это медленный сериал, а код — это видеоигра. Мысль, выраженная словами, теряет точность.
Особенно в функциональных языках вроде Haskell:
mapMaybe :: (a -> Maybe b) -> [a] -> [b]
mapMaybe _ [] = []
mapMaybe f (x:xs) = case f x of
Just y -> y : mapMaybe f xs
Nothing -> mapMaybe f xs
В голове это работает как поток: «применяй функцию, фильтруй Nothing, оставляй Just». Не словами. Потоком.
Есть шутка: «Программисты разговаривают с компьютерами больше, чем с людьми». На деле — да. Только разговаривают они кодом.
Пример: идешь в магазин, а в голове идет примерно такое:
if milk in cart:
skip()
else:
add(milk)
Ты не формулируешь это словами. У тебя в голове работает DSL, оптимизированный под твою жизнь.
Любой, кто пытался одновременно писать асинхронный код и общаться в чате, знает:
В C++ это примерно как:
void doWork() {
std::stack<Context> callStack;
// ...
if (interrupt)
throw ContextSwitchException();
}
Когда тебя прерывают, стек сбрасывается. И это стоит времени. Даже не в секундах, а в потерянной архитектуре задачи.
Потому что
Язык — штука многозначная. В нем куча нюансов, подтекста и иронии. В коде всё конкретно. Код либо работает, либо нет. Это именно то, что
Мысли программиста — это сжатые бинарные AST. Это DSL, встроенный в нейроны. Это привычка мыслить не словами, а структурами, паттернами, потоками данных. Это не значит, что мы хуже объясняемся. Просто мы думаем иначе. А может, и глубже.
Ведь язык можно соврать. А код — нет.
Хочешь обсудить? У тебя тоже в голове крутится while True:?
Пиши в комментарии. Думаем асинхронно, но с общим API.
Автор: AlexaEremin
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/abstraktsiya/426225
Ссылки в тексте:
[1] мозге: http://www.braintools.ru
[2] Источник: https://habr.com/ru/articles/931266/?utm_campaign=931266&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.