image

(источник)

Иногда в обсуждениях Хабра проступает ужас – недавно спорили про goto, и мои собеседники, зная такие непростые вещи, как соотношение неопределённости Гейзенберга, показали полное непонимание различия топологии и геометрии. Возможно, они окончили вуз, где их научили брать сложные интегралы, но им забыли сказать про топологию с геометрией или они пропустили это мимо ушей.

Разницу можно понять в 5 минут. Скоро Новый год – поэтому аналогия с елочной гирляндой выглядит актуальной.

Представим модельную ситуацию. По дороге на работу вы сообразили, как поправить программу, над которой работаете. Бодро, через две ступеньки взбегаете на второй этаж к своему рабочему месту, а там Вас встречает непосредственный начальник широкой улыбкой и сообщает: тут нужно помочь елочку нарядить, поэтому поступаете в распоряжение члена нашего месткома Ирины Александровны Алмазовой, которая сейчас с елочкой в холле первого этажа.

Как отказаться? На радикулит не спишешь – начальник видел, как я по лестнице бежал. Сказать, что плохо себя чувствую — так он в мед. кабинет пошлет. А там жалоба на самочувствие не прокатит — мне измерят температуру и давление, сердце послушают и горло посмотрят – скажут: “здоров”. Могут еще валерьянкой напоить, чтобы не переживал о своем здоровье. Не думали: зачем на IT предприятиях мед. кабинеты? Основная цель не первая помощь: это редкий случай, что какой-то один фрезеровщик может на станке порезаться, а один из программистов, которых сильно больше, чем фрезеровщиков, как может травмироваться? Головой в ЖК монитор въехать? — Скорее монитор пострадает, а не голова. Основная цель мед. кабинета: пресекать симулянтов. Поэтому приходится согласиться на елочку – приказ начальства обсуждать вредно.

Спускаемся снова на первый этаж – уже не так быстро, как поднимались. Там двое рабочих и Ирина Александровна, которая путается под ногами этих рабочих, давая “ценные” указания. Рабочие прикручивают скотчем елку к трем химическим штативам. Кто не видел: хим. штатив состоит из железной плиты весом более 5 кг., из которой торчит стальной штырь, примерно в палец толщиной. Вот “работяги” к этим штырям ствол елки скотчем обматывали. А еще с потолка провод для гирлянды спустили до пола удлинитель. И этот провод к стволу примотали.

Старший, уже седой, рабочий сказал, что теперь уж точно не упадет, разве что бульдозер уронить сможет, а младший рабочий сказал, что приведет своего пятилетнего сына на новогодний праздник. Ирина Александровна сказала им: свободны. Рабочие ушли, оставив стремянку, чтобы мне на елочку лазить. Ирина Александровна переключилась на меня, указала на коробку с шариками и другими игрушками. Шарики и другие игрушки повесил под руководством Алмазовой. Дошло дело до гирлянды. Она сказала, чтобы размотал ее на полу в линию и проверил, что рядом нет одного цвета лампочек. Так и сделал, но это оказалось плохим решением: когда на елку повесил, то некоторые близкие лампочки оказались одного цвета. Топология осталась прежней – лампочки соединены последовательно проводками, а геометрия изменилась – изменились расстояния между лампочками.

Теперь представим исходный код на каком-то ЯП, можно и псевдокод. Пусть, для простоты, он будет линейным, т.е. без условных операторов. Распечатаем его на бумагу и порежем на куски-фрагменты. Вначале каждого куска зададим метку N, а в конце добавим goto N+1. Разложив нашу гирлянду лампочек в линию на полу, привяжем к лампочке N бумажку с меткой N. И можно представить, что будем иметь после размещения гирлянды на елке: метки фрагментов смешаются случайным образом, и расстояния между ближайшими фрагментами могут иметь очень разные метки. Если мы будем обрывать последовательно наиболее близкие бумажки, то код по их стопке будет работать как исходный, и гирлянда будет гореть. Но разобраться в таком коде будет сложно.

Разница между геометрией и топологией очень важна в электронике – не все монтажные схемы геометрически повторяют принципиальные, главное чтобы топология сохранилась; и важна в химии – молекулу можно нарисовать очень разными способами. И схема линий метро должна быть максимально наглядной и может не повторять реальную геометрию этих линий.

Комментарии (16)