Здравствуйте, A13x, Вы писали:
A>Автор предлагает использовать математический язык для описания и проверки алгоритмов, весьма здравая и популярная "в узких кругах" идея. По сути описание алгоритма использует теорию множеств, логику предикатов первого порядка и темпоральную логику:
Математика, разумеется, великая вещь, без нее никуда.
Можно ли сделать коды более понятными?
Можно ли сделать математику более понятной?
Можно ли сделать алгоритмы более понятными?
Насчет алгоритмов: я попытался найти более понятный способ записи алгоритмов.
Точнее,способ записи порядка выполнения (потока управления) control flow.
Мой способ записи потока управления называется ДРАКОН (DRAKON)
https://en.wikipedia.org/wiki/DRAKON
Предлагаемое решение таково: если нужно иметь более доходчивую и легкую для понимания (но математически строгую) запись потока управления, я рекомендую использовать визуальный алгоритмический язык ДРАКОН.
Конечно, это лишь частичное и неполное решение проблемы, которая волнует уважаемого топикстартера.
С уважением В. Паронджанов
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Еще со школьных времен заметил, что меня очень раздражает чрезмерное увлечение символической записью. Скажем, в учебнике по математике, условие может быть сформулировано в виде идеи, концепции, как "дано множество чисел, кратных трем" (возможно, с последующей символической записью), а может и как "дано M такое, что ∀ x ∈ M, ∃ n ∈ ℕ, x = n * 3". Но определения и пояснения второго типа встречаются довольно часто, и непонятно, то ли это образ мышления у автора такой, что за символами он воочию видит непосредственно саму концепцию, то ли уже настолько привык к символам, что стал забывать человеческие слова.
На самом деле такая запись очень крутая, я когда освоил, все лекции по вышке так писать стал, и время экономит, и все понятно. Но для чтения таких записей нужен навык, который, к сожалению, быстро уходит (но и быстро восстанавливается, после определенных усилий, прикладывать эти усилия, конечно же лень
).
ЕМ>Такая же фигня и с программным кодом. Нередко пост программиста с вопросом к сообществу выглядит примерно так: "вот у меня есть <приводит код>, он не компилируется / не работает / тормозит, что с ним нужно сделать?". Когда подразумевается только оценка синтаксиса, это вполне нормально, но довольно часто необходимо понимать и задачу, которую этот код должен решать, но ее словесное описание отсутствует, или очень неполно, а код состоит из пары десятков строк или больше, и смысл его, на первый взгляд, далеко не всегда очевиден.
С кодом другая фигня. Математические языки (типа эпсилон-дельта) однозначны, а код нет. Одно и тоже можно сделать разными способами. Отсюда, более долгое въезжание, которое раздражает.
ЕМ>В таких случаях у меня сразу же возникает острое нежелание вчитываться в код, чтобы понять его смысл (я вообще не люблю копаться в чужом коде, и делаю это лишь в случае серьезной нужды). Но дальше нередко вижу комментарии, из которых следует, что их авторы поняли смысл кода, и делятся соображениями по его улучшению. Непонятно — то ли они не поленились вчитаться и разобраться сами, то ли почти сразу увидели суть задачи, которую поленился описать автор исходного сообщения.
А вот не факт, что они поняли. Вполне могли понять что-то свое, не относящееся к задаче, которую должен решать код по замыслу автора. Такое часто случается и с вполне откомментированным и очевидным кодом.
ЕМ>Отсюда вопрос: когда вы видите незнакомый код без пояснений, состоящий из десятка-другого строк простых операций, или из нескольких функций/классов/шаблонов, или из нескольких строк хитровложенных конструкций, как часто у вас в мозгу возникает понимание непосредственно идеи, концепции, которую должен реализовывать этот код? И от чего это больше зависит — от типа мышления, или от многолетнего опыта ковыряния в чужом коде самого разного вида?
Это зависит от сходства типов мышления автора кода и моего. Если они во многом совпадают, то код понимается быстро и правильно, а если — нет, то — как получится.
ЕМ>Ну и главный вопрос: мне должно быть стыдно, что у меня такого понимания почти никогда не возникает?
Нет, не должно. Всё нормально