Соционические типы в программировании
Sunday, October 10, 2010

Код Дон Кихота - стиль каждый раз отличается от предыдущего. Дон Кихот своего стиля не находит никогда.

Из Дюмы ужасный программист. Дюме будет жалко удалить ненужный кусок кода который "здесь уже прижился". Вообще, установление отношений с чем-либо - признак этики. Я видел Доста который говорил только что закрытому мной окну "bye-bye"

Код Робеспьера - содержит максимальное количество state-machine. Сложных и вложенных. Роб перед тем как приступить к программированию обязательно нарисует блок-схему. Способны долго "мять сиськи" оценивая все за и против вместо того чтобы тупо сесть, написать и посмотреть что же получится.

Кода Максима - много. В нем нет алгоритмов, есть четкие соотношения. (Буква 'a' - код 35, буква 'б' - код 36, буква 'в' - код 37. код 37 - буква 'в', код 36 - буква 'б', код 35 - буква 'а'. Максимы работать любят). Строгие иерархические модели, где каждый класс "отчитывается" перед вышестоящими. Много observer'ов (надсмотрщиков). Инспектор, этим всё сказано :) Есть state-machin'ы, но попроще чем у Робов.

Отдельной части требует ода чёрной логике Максима. Ограничительную ЧЛ не пропьешь - Максим борется с эффективностью работы программы как с заклятым врагом. Если Максим или Роб взялся "реструктуризировать" какой-либо модуль, то результатом этого будет модуль в три раза больше по размеру и работающий в 5 раз медленней. Вместо использования обычных указателей он будет повсюду где только возможно лепить auto_ptr, вместо обычных массивов он будет создавать по отдельному файлу для каждого типа массива только чтобы объявить там typedef на std::vector, и использовать затем его. На каждый цикл for он будет создавать по новой функции, на каждые два параметра функции он будет создавать по новому классу. Для выбора из массива объекта вместо того чтобы пройтись один раз по массиву, сохраняя лучший результат он:
1. Создаст вектор из std::pair, в которых будет содержаться индекс объекта в массиве и результат его оценки
2. Соберет все результаты работы цикла в этот вектор
3. Создаст новый namespace, в котором создаст новый класс который будет перегружать operator() для того, чтобы можно было использовать этот класс как функцию (вместо того чтобы написать тупо одну функцию)
4. Использует std::sort чтобы отсортировать этот вектор из std::pair используя свой вновь созданный класс как функцию-компаратор
5. Из отсортированного вектора выберет первый элемент

(трудно было понять из краткого словесного описания смысл действий? Теперь представьте себе попытку понять смысл всех этих махинаций за килобайтами кода ).

этот же пример в понятной не-программистам форме: есть стопка тетрадей с контрольными по математике. надо сказать, кто написал контрольную лучше всех (если несколько человек написали на "5", достаточно и одного). Вместо того, чтобы по ходу проверки просто запоминать лучшую оценку и имя ученика, Максим возьмет 30 листов А4, подпишет их порядковыми номерами тетрадей в стопке и разложит их по полу. По мере проверки, он будет ставить на эти листы камешки - 5 камешков за "5"-ку, 4 за "4"-ку и т.д. Затем он начнет сортировать эти листы в порядке убывания количества камешков, используя собственноручно сделанные весы для определения, на каком из двух листов камешков больше. Отсортировав листы, он возьмет самый первый, посмотрит номер, который записан на нем, вытащит из стопки соответствующую тетрадь и прочитает с нее фамилию.

Я не шучу, реальный пример из жизни. Бойтесь Максимов-программистов.





Гамлеты - отличные программисты в силу диалектического состава мышления. Отменно распознают шаблоны и паттерны. В силу этого код Гамлета трудно определить на глаз, потому что его код будет состоять из кусков кода других разработчиков, которые он "распознал" и скопипастил себе :)

Код Жукова - спартанский. Его мало. Лаконичные четкие конструкции. Ни одного лишнего символа. (Логика Жукова работает на упрощение, отсечение лишнего. Даже если на глаз написано мало - знайте, Жуков этот код переписывал пять раз). Таблицы отформатированы четкими рядами, символ к символу (косточка к косточке, ленточки в ряд - трамвай переехал отряд октябрят).

Код Есенина как-то работает. Есенин сам не понимает как. Есенину стоит дать задачу и оставить его одного - Есенин будет там ковыряться, крутить, химичить, (спать), но в результате ты получишь то, что будет работать.

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

Код Наполеона не работает. Но Наполеон всех убедил что это не баг - это фича.

Код Бальзака - не видел. Мне интересно, покажите :)

Код Габена ленив, неспешен и растянут (визуально). При этом очень качественный и детально проработан.

Гексли всеми своими компьютерными успехами очень гордятся. И иногда у них это даже и получается.

0 comments:

Post a Comment