May 26th, 2010

Логика неизбежности

Шаг первый



Я — профессионал, мастер своего дела и вообще. Пока эти не умеющие проектировать долбодятлы пытаются как-то выкрутиться, я солидно и по-взрослому выстраиваю архитектуру проекта так, чтобы никаких ошибок с управлением памятью не возникало. Мне, с моим развитым интеллектом и широким кругозором, не тяжело сначала подумать, а потом сделать, поэтому связки new-delete вполне достаточно. Я ж не быдлокодер какой.

Единственно, вот в этой функции пять точек выхода, и в каждой надо несколько массивов удалить. Внутренний голос подсказывает, что зря это я во всех пяти местах один и тот же код удаления написал. Надо бы как-то общее.

Кстати, а вот отличная идея: надо завести класс DeleteOnExit и ему передавать указатели — кандидаты на зачистку. DeleteOnExit мы будем заводить по значению, поэтому при выходе из функции он удалится — мы ж вышли из его области видимости. А в деструкторе DeleteOnExit мы напишем delete для переданного ему объекта.

Вот что значит знание языка: пока эти дебилы выворачивались, я, с моими знаниями, сразу сообразил, как сделать необходимое. Это потому что интеллект и руки прямые!


Шаг второй



Чего я тут подумал-то. Вот есть у меня класс. В его конструкторе создаётся десяток объектов. А потом они удаляются в деструкторе. Если я эти объекты оберну в мой DeleteOnExit, то ведь они тогда сами будут вместе с родительским объектом удаляться. А что, удобно. Вот что значит системный подход! Нашёл решение и сразу же его применил. Называется «повторное использование». Поняли, ламерьё, как надо-то? Это вам не быдлокодить, это — торжество разума.


Шаг третий



Позвонил один знакомый и сказал, что им срочно нужен ещё один программист. Предложил на полставки после института у них подрабатывать. Ну так а то! Знают, где профессионалов искать!

Согласился. Вышел на работу и сразу охренел. Нет, я, конечно, подозревал, что Фотошоп какой имеет более длинный код, чем моя утилита, отслеживающая изменения в директории, но что б настолько! Да такого размера код за всю жизнь не просмотреть, зараза. Это ж надо так много написать! Я ж теперь уже наверно не смогу каждый день все строки кода перепроверять. А у них тут в архитектуре, со слов главного программиста, бардак полный: здесь создали объект, туда на него указатель передали, а оттуда он ещё вон туда ушёл. По ходу, архитектурой эти лохи вообще не владеют.

Поговорил с коллегой. Тот сказал, что в моей утилите по коду один проход делается, а потом приложение закрывается, так что я вообще мог бы не заморачиваться с delete-ом — один хрен, на выходе вся память освободится. Странный, блин: если delete не вызвать, то утечки ж памяти будут.

Сделал функцию и вписал в неё мой DeleteOnExit. Ничего так. Подход рулит. Но во второй функции оказалось, что указатель на объект надо наружу передать. Хотел ведь поначалу отрисовку прямо у себя сделать, но главный программист сказал, что так нельзя, что у них для отрисовки целая иерархия объектов используется, и я должен в неё как-то свой объект передать. На хрена, интересно, им такая иерархия? Чего бы сразу на месте не нарисовать-то? Но спорить не стал. Не люблю конфликты

В общем, объект должен уйти в их иерархию. А где его тогда удалять прикажете?

Проанализировал задачу, снова поразился, как много у них всего написано. Понял, что DeleteOnExit тут не прокатит. Придумал: этот объект мы положим в хранилище объектов, которое я сделаю, а там каждый объект будет обёрнут в DeleteOnExit. При удалении хранилища, удалятся и все объекты в нём. А в функции объект будем класть в хранилище. Вот что значит — системный подход. Это вам не быдлокодить.


Шаг четвёртый



Collapse )

Про общество и крыс

Текст со следующего абзаца не мой. Вот источник. Очень образно написано. Действительно ли так борятся с крысами, не уверен, но очень образно.

Сложившаяся в России ситуация создана путем применения технологии, известной под названием «крысиный король». Задача этой технологии — разрушить ключевые узлы, невидимые фундаменты и скрепы социальной конструкции. Создать атмосферу раздробленности, когда каждый сам за себя и нет понятия «свой». Чтобы достичь этого, нужно сломать нравственность. Показателем сломанной нравственности является поведение, когда свой предает своего.

Суть этой технологии очень ярко раскрывается на примере крыс. Эти животные в первую очередь известны своей невероятной выживаемостью. Основа такой живучести — в социальной сплоченности. Крысы невероятно социальные животные. Они вместе ходят «на дело», помогают друг другу, защищают, если есть возможность, забирают с собой раненых. Крысы ощущают себя единым организмом и ведут себя как единый организм. Они быстро обмениваются информацией, быстро предупреждают об опасности, передают навыки защиты. В таком поведении нет индивидуальной выгоды. Защитный механизм имеет нравственную природу.

Один из самых эффективных способов борьбы с крысами основан на разрушении защиты. Так как защита имеет основанием нравственность, способ в итоге основан на разрушении нравственности. Всем нельзя сломать нравственность. Можно сломать одиночке, да и то не сразу. Ломают постепенно. Для этого создают условия, когда рациональная логика приобретает решающее значение. Главное, заставить совершить первый шаг — действие, до этого находящееся под абсолютным табу.

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

Второй раз планка безнравственности поднимается выше. В клетку бросают еле живое животное. Новая «пища» хоть и почти мертвая, но все же живая. И снова рациональная логика подсказывает решение. Он все равно умрет, а мне нужно жить. И крыса опять ест себе подобного, теперь уже практически живого.

Третий раз в клетку бросают вполне живую и здоровую «пищу», слабого крысенка. У сильной крысы снова включается алгоритм рациональной логики. Есть все равно нечего, говорит она себе. Что толку, если мы оба погибнем? Пусть выживет сильнейший. И сильнейший выживает.

Обратите внимание, у крысы на принятие решения с каждым разом уходило все меньше времени. При этом уровень безнравственности каждого нового пожирания был все больше. Через некоторое время крыса вообще не думала. Она относилась к своим соотечественникам как к пище. Едва ей подбрасывали в клетку новую крысу, она тут же накидывалась на нее и пожирала. С момента, когда она вообще не думала, жрать или не жрать, ее нравственность была сломлена. Далее ее выпускали назад в общество, откуда в свое время взяли. Это уже была не та крыса. Это уже было существо без признаков нравственности. В своих поступках оно руководствовалась только логикой эгоизма. Но окружающие не знали этого. Они принимали ее за свою и полностью доверяли

Collapse )