Мышление в терминах кода
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 10.04.21 15:29
Оценка: +2
Еще со школьных времен заметил, что меня очень раздражает чрезмерное увлечение символической записью. Скажем, в учебнике по математике, условие может быть сформулировано в виде идеи, концепции, как "дано множество чисел, кратных трем" (возможно, с последующей символической записью), а может и как "дано M такое, что ∀ x ∈ M, ∃ n ∈ ℕ, x = n * 3". Но определения и пояснения второго типа встречаются довольно часто, и непонятно, то ли это образ мышления у автора такой, что за символами он воочию видит непосредственно саму концепцию, то ли уже настолько привык к символам, что стал забывать человеческие слова.

Такая же фигня и с программным кодом. Нередко пост программиста с вопросом к сообществу выглядит примерно так: "вот у меня есть <приводит код>, он не компилируется / не работает / тормозит, что с ним нужно сделать?". Когда подразумевается только оценка синтаксиса, это вполне нормально, но довольно часто необходимо понимать и задачу, которую этот код должен решать, но ее словесное описание отсутствует, или очень неполно, а код состоит из пары десятков строк или больше, и смысл его, на первый взгляд, далеко не всегда очевиден.

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

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

Ну и главный вопрос: мне должно быть стыдно, что у меня такого понимания почти никогда не возникает?
код запись символ символическая формальная знаковая
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.