Welcome to TechNet Blogs Sign in | Join | Help

Программист – тоже человек!

Что бы вы сказали о человеке, который решил показывать полноэкранные фильмы на машине с Intel 80386 (помните, были такие?) или решившем построить вебсайт, обслуживающий миллионы человек, на одной едиственной IBM PC XT circa 1980? Покрутили бы пальцем у виска, верно?

Почему-то именно подобные решения многие программисты делают, когда вопрос касается производительности процессора в их собственной голове или головах их коллег. Ну, да, я говорю о сложности программ, которые мы пишем.

Конечно, надо сразу оговориться: бывает сложность неизбежная, вызванная сложностью решаемой задачи, и пытаться написать код, который любой идиот сможет править тоже невозможно. Если бы идиоты могли писать нормальные программы, то программистам столько не платили бы.

Чего далеко ходить, у меня был в прошлом эпизод, когда я вынужден был написать приличный кусок кода, который трудно было поддерживать. Задача была такая, сложная. Росла эта сложность из бредовых требований к функциональности, которые по политическим мотивам нужно было реализовать, в результате получился сложный кусок. Мой менеджер несколько раз порывался править его за меня, и это был первый (и пока последний) случай в моей жизни, когда я наблюдал у человека 100% регрессий. То есть, каждый раз, когда Серый Крыс (назовем так сей обобщенный образ в традициях данного блога*) правил реальный или воображаемый баг в моем коде, он вносил туда другой, как правило более худший баг. Ограничив размер потребляемой памяти он внес deadlock. Проверяя качество моего кода, он вообразил, что я не освобождаю переменную, «исправил» это и внес утечку памяти (не спрашивайте меня, как можно внести утечку памяти добавив free() – я тоже был очень впечатлен.) А исправив редкий и трудно воспроизводимый реальный баг в сетевом соединении он одним махом обрушил половину функциональности всего продукта. В общем, писать код так, чтобы абы кто мог его править, конечно, невозможно. Но ведь можно хотя бы думать об этом и не создавать искуственных усложнений на пустом месте, верно?

Другой пример, где трудно сказать, кто прав, кто виноват, но который показывает к чему приводит сложность кода. Еще в России мой друг работал на некую софтверную фирму и написал им изрядный кусок кода, который был весьма и весьма сложен. Надо отдать должное – задачи и правда были сложные, по своей природе. Сложная растеризация векторной графики. Потом мой друг уехал в Штаты. Через пару лет другой мой друг зашел в ту фирму и увидел следующую картинку: двое ребят грусто смотрели на экран и один другому говорит: «Да-а-а, это Вадик писал, теперь в этом никто не разберется. Придется переписывать...» Никто не сомневался, что он – гений. Проблема в том, что когда гений уезжает в Штаты, найти другого гения ему на замену, который к тому же еще бы и смог разобраться, что тут предыдущий гений накропал, очень тяжело.

Так, а с чего я заговорил на данную тему? Ну, да, натолкнулся на это дело. Кстати, натолкнулся на это в открытом коде, не считайте это нападкой на открытый код, просто именно в нем я натолкнулся на это очередной раз, вот и пишу о нем. К тому же, с открытым кодом каждый может его загрузить и убедиться лично. Собрался я поставить CMS на один из сайтов моей жены. Выбор, разумеется, огромный, но последнее время мне очень нравится Drupal. Amazon.com на нем, конечно, не построить, но сотню-другую посетителей в день он выдерживает легко, а для любительского сайта ничего больше и не нужно. Одна беда, хорошей темы под рукой нету, а сайт у нее специализированный, доступными темами не обойдешься. Ну, что, взял я одну из стандартных тем, начал править. Ёма-ё...

Каждая страница требует примерно дюжину stylesheets. FireFox примерно половину их не видит, или по крайней мере не сознается в этом в плагине разработки. Впрочем, в том, как он отображает страницу, тоже не сознается. То есть, написано в стиле:

body.sidebars {… }

Проверяешь текст страницы:

<body class=”sidebars”>…

Файл со стилем в заголовке страницы. Наводишь на body мышку, элемент видит, класс видит, стиль не видит.

Да-да, сейчас и к IE перейду, не волнуйтесь так. IE стиль видит, но применяет его как-то странно. Представьте себе два вложенных элемента, у внешнего элемента фон зеленый, у внутреннего – синий. Как это должно выглядеть. Просто, синий прямоугольник внутри зеленого, верно? Как бы не так. Я так и не понял, что разработчики этого стиля устроили, но внешний элемент мне показали без фона, а внутренний – зеленым.

Я знаю, что сейчас многие начнут подпрыгивать на месте и кричать про плохой IE, который не поддерживает стандарты, но ведь лисенок от таких стилей тоже рехнулся, при чем тут стадарты? Может просто писать попроще и понадежнее надо?

Что мне тут не понравилось?

  1. Дюжина динамически генерируемых файлов со стилями очень плохо загружается в человеческую голову.
  2. Переписывание атрибутов одного и того же элемента или класса в нескольких разных файлах еще хуже отслеживается в голове.
  3. Стандартная тема должна разрабатываться с расчетом на то, что ее будут использовать в качестве основы для новых тем.

А тут скромнейшие изменения воспринимаются по принципу сталинских лагерей: «Шаг вправо, шаг влево – попытка к бегству, прыжок на месте– провокация.»

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

Да, я понимаю, что это – открытый код, что я не вправе требовать от него суперкачества, что люди тратили свое личное время совершенно задаром, и я должен сказать спасибо за то, что есть. Я и не требую. Просто я решил рассказать, что я буду требовать от себя, когда сегодня вечером сяду писать тему для того сайта с нуля за неимением лучшей альтернативы.

---

* Про образ «Серого Крыса» и сказку об Иванушке Дурачке работающем на Серого Крыса (вместо Ивана Царевича и помогающего ему Серого Волка) можно прочитать вот здесь.

Published Sunday, May 11, 2008 7:03 PM by EldarM

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# re: Программист – тоже человек!

Ссылка на сказку не работает :)

Monday, May 12, 2008 2:17 AM by Александр

# re: Программист – тоже человек!

Хе-хе, темы друпала это фигня. Попробуйте кастомизировать тему в Sharepoint'e, вот это <ну, вы понял что Ренго тут в виду имел... Э.> полноростный :)

Monday, May 12, 2008 4:16 AM by Rengo

# re: Программист – тоже человек!

Стандартная тема для Друпала (если я правильно помню называется Garland) действительна замороченная. Сам пару раз ее правил, т.к. пару лет назад сам выбрал для простого сайта своего друга.

Однако а) в поставке друпала есть более простая тема, сделанная на таблицах - можно ее взять за основу; б) в галерее тем на сайте друпала попадалась простейшая тема как шаблон для построения своего варианта

Кстати, сейчас для простейшего сайта я бы выбрал какой-нибудь блоговый движок:

либо wordpress либо movabletype - они закрывают все вопросы, которые возникли у моего друга при работе с друпалом.

всего наилучшего!

Monday, May 12, 2008 7:52 AM by Nic Ye

# IT и бизнес [it4b] &raquo; Программист – тоже человек! | проектирование, разработка и тестирование ПО; консалтинг, внедрение и эксплуатация информационных систем

# re: Программист – тоже человек!

Ренго: по форме ваш комментарий надо бы удалить, но содержание достойно того, чтобы его сохранить. В следующий раз выражайтесь без слов, которые могут раздражать других читателей, хорошо?

Ник: спасибо за совет, может стоить попробовать. Wordpress, когда я последний раз проверял еще не дотягивал до полноценной CMS, он еще был в основном движком персонального блога. Хотя может и правда ничего больше и не надо... не знаю.

Александр: ссылка должна приводить на индекс статей про корпоративных паразитов.

Monday, May 12, 2008 1:16 PM by EldarM

# re: Программист – тоже человек!

> Что мне тут не понравилось?

Всем моим браузерам в данном посте не нравится вот это:

[ DIV class=MsoListParagraphCxSpFirst style='TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1' ] Дюжина...

Нафига там индент? Цифра налезает на текст или уходит куда-то за пределы страницы.

Monday, May 12, 2008 9:28 PM by Valery Tolkov

# re: Программист – тоже человек!

Валера, а может сам спросишь авторов всех этих MsoListParagraph? Сам небось знаешь не одного из них.

Tuesday, May 13, 2008 2:11 AM by EldarM

# re: Программист – тоже человек!

Кстати, да. IE8 этот момент тоже не нравится. Буквы по три съедается в каждой строке. Я просто не обратил внимания, потому что саму заметку читал RSS.

Tuesday, May 13, 2008 2:17 AM by Artem

Leave a Comment

(required) 
required 
(required) 
 
Page view tracker