Личные инструменты

Быдлокодер

Материал из Lurkmore

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

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

»
Аноним[1]
«

Каждый дурак может написать код, понятный компьютеру. Хорошие программисты пишут код, понятный людям.

»
— Мартин Фаулер
Уотти Бьюкэн и его быдлокод
— Почему вы не наняли специально обученную обезьяну?
— Он дешевле.
Суть

Быдлокодер (aka горе-программист, индус; англ. Code Monkey) — это человек, который считает рекурсию мемом башорга и не знает основных алгоритмов и тонкостей языка, на котором пишет. Поэтому быдлокодер использует неочевидные и абсурдные решения.

Содержание

[править] Характерные черты

b
Быдлокодеры-пиндосы - устами русского персонажа в Iron Man
b
Code Monkey - AMV клип про тяготы жизни Code Monkey
b
Истинный сайтостроитель

Понятие быдлокодера тесно связано с понятием индусского кода, которое также является одним из мемов Рунета. Также быдлокодерами являются программисты, пишущие исключительно на языках подобных VB, JavaScript, PHP и привыкшие программировать мышкой[1], результатом чего является отсутствие языковой грамотности, понимания собственного кода и культуры программирования ИЧСХ, орфографических правил, любящие писать абсолютно нечитаемый код, игнорируя все мыслимые и немыслимые правила здравого смысла, логической и типовой совместимости данных и структур данных, и класть член на достижения человечества в области структурированного программирования. Программы таких быдлокодеров никогда не бывают кроссплатформенными и редко бывают стабильными, а любимыми высокоуровневыми языками являются те, которые и позволяют писать нечитаемый код, игнорируя все мыслимые и немыслимые правила здравого смысла, логической и типовой совместимости данных и структур данных, и ложить класть член на достижения человечества в области структурированного программирования и строгой типизации. Их девиз: «Пишу как хочу, преобразовываю во что хочу, вызываю как мне нравится, имею право на компиляцию ошибочного кода и только тот язык мне друг, чья парадигма это позволяет». Это породило в начале 70-х феномен жопоязыка, код на котором, даже написанный прыганием жопой по клавиатуре, компилируется. И этот феномен к несчастью становится стандартом де-факто в сегодняшнем программировании из-за превалирования быдлокодеров, у которых на хоть что-то математическое (читайте структурированное, строгое, однозначное, чёткое, наглядное, лаконичное и логичное) начинается приступ тошноты. И это не удивительно. У класса быдла, наследником которого является класс быдлокодеров, всё, что построенно по чётким правилам, что предъявляет строгие требования к чему-либо, что сковывает свободу во имя порядка и правильного функционирования чего-либо, что учит хорошим манерам (стилю) является неприемлемым, недопустимым и уродливым, и только их хаос и анархия есть гармония.

Стоит обратить внимание, что (чуть меньше чем все) быдлокодеры избегают использования форматирования кода (что, к примеру, вынудило компанию Microsoft разработать средства принудительного форматирования Visual Basic-кода).

Ещё одна пагубная привычка быдлокодеров — давать функциям, переменным и тому подобным вещам русские имена на транслите (или кодировать кириллицей непосредственно, часто выражается в комментариях к коду вроде ПЫЩ!! ПЫЩ!!!111Адин11адин11Адин1).

[править] Поведение быдлокодера в реальной жизни

  1. Готов часами обсуждать недостатки операционных систем, не имея ни малейшего представления об их внутреннем устройстве и причине возникновения вышеуказанных недостатков;
  2. Всегда стремится установить все доступные в этих ваших Интернетах программы, связанные и не связанные с его работой, а затем с возмущением совершает действия, описанные в пункте 1;
  3. Никогда не соблюдает правил структурного и объектного программирования из-за недостатка времени, возникающем по причине выполнения действий, описанных в пункте 2;
  4. Вследствие выполнения действий, описанных в пункте 3, постоянно вступает в стычки с руководством и коллегами[2];
  5. Несмотря на постоянную нехватку времени, вызванную выполнением пунктов 1-4, постоянно смотрит Анимэ;
  6. По слухам, распространяемым самим быдлокодером, в его коде всё-таки есть один комментарий;
  7. Верит в то, что можно найти работу, где можно ещё больше ничего не делать и лучше зарабатывать. В доказательство демонстрирует всем вакансию с какого-нибудь хедхантерского сайта, абсолютно не соответствующую его компетенциям и навыкам;
  8. Всегда планирует завтра написать Мегапрогу;
  9. При принятии решений в области IT руководствуется не здравым смыслом, а тем, является ли тот или иной метод, программа, подход, тру или не тру. Дело в том, что эти понятия, заимствованные из математической логики, переплетаются в мозгу говнокодера с представлениями о логичности решений;
  10. Считает, что все вокруг тупые уроды, так как не знают некоторых вещей (конечно же, охренительно серьёзных и профессиональных), которые знает он, или потому, что пытаются объяснить ему то (конечно же, никому не нужное), чего он не знает.
  11. Быдлокодер считает себя Программистом, а чуть менее, чем всех остальных быдлокодерами. Иногда он читает умные книжки по кодингу, преисполняется по отношению к ним священным экстазом(правда его код от этого лучше не становится) и потом пеняет других за то, что код написан не так как в этой книжке. Схватки быдлокодеров по весне представляют собой интересное зрелище.

[править] Примеры быдлокода

Пример быдлокодерства на языке C++

void SprositiPolzovatela()
{
for(unsigned int i=1;i<5;i++)
{
cout << "OK? (y/n) ";
cin >> c;
// bolshie i malenkie bukvi
c = tolower(c);
if(c != 'y' && c != 'n') i--;
else i=9000;
}}

Здесь человек, вместо того, чтобы организовать условный цикл, использует цикл со счетчиком и манипулирует переменной внутри цикла, уменьшая ее на единицу, если пользователь ввел недопустимые символы, организуя таким образом вечный цикл, или же присваивая ей значение, заведомо не проходящее условие продолжения цикла, таким образом, организуя выход из цикла. А вот c — глобальная переменная. В лучших традициях быдлокода. Помимо этого использована функция tolower() из <ctype.h>, что конечно не принципиально для современных настольных ПК, но в своё время было весьма существенно… а также актуально и по сей день для всяких там AVR/ARM’ов[3], в которых помимо сказочного быстродействия, имеются ещё и суровые ограничения на объём кода. За пару лет может скопиться немало таких кусочков, и… ну ты понел? Более правильно этот участок кода нужно было бы написать так:

char AskUser()
{
char c;
do
{
cout << "OK? (y/n) ";
cin >> c;
}while(!strchr("yYnN",c));
return c;
}

…а впавший в прямо противоположный грех кодозадрот вообще повыкинет библиотечные строковые функции:

BOOL AskUser()
{
int c; //Нативный для платформы размер тянет за собой меньше хлама, особенно на RISC
cout << "OK? (y/n) " << endl;
while (1)
if ( (c=getch()) == 'Y' || c == 'y') return TRUE; //Порядок следования стандартный!
else if (c == 'N' || c == 'n') return FALSE;
return FALSE; //Чтобы компилятор не ругался
}

Альзо, после Y или N юзеру не придётся нажимать Enter, что православно и неуподоблено интерфейсу мелкософтовской DOS.

Быдлокодер палится вконтакте

Или пример на pascal:

var
i: word;
begin
for i:=0 to List1.Count-1 do
ShowMessage(List1.Items[i]);
...
Если в списке было 0 элементов, компилятор выкидывал исключение о недопустимом индексе.

В данном случае из-за того, что i беззнакового типа, число List1.Count — 1, равное минус единице, автоматом преобразовывалось к тому же типу, что i, и становилось равным $FFFF. То есть данный код при пустом списке эквивалентен for i := 0 to $FFFF do… То есть будет пытаться перебрать ВСЕ значения i от 0 до $FFFF, выдав ошибку на первом же из них.
Очень часто быдлокодеры, ориентированные на веб, занимаются разработкой таких приложений, как дорвеи и дейтинги. В этом случае их любимым языком является PHP. Благодаря очень высокой гибкости в применении и использовании конструкций кода, PHP отличный детектор, позволяющий отличить быдлокодера от программиста, а также узнать много нюансов о программистских предпочтениях и привычках автора кода. Как правило, PHP-быдлокодеры часто обсуждают «заработок в интернете» и прочую веб-скаммерцию.

[править] Примеры в литературе

Когда Маяковский стал писать стихи «лесенкой», другие поэты обвинили его в жульничестве. Поэтам тогда платили построчно, а Маяковский получал за лесенку больше остальных.

Когда Дюма писал «Трёх мушкетёров», в контракте с издателем была оговорена построчная оплата рукописи. Для увеличения гонорара Дюма придумал для Атоса слугу по имени Гримо, который говорил и отвечал на все вопросы исключительно односложно, в большинстве случаев «Да» «Нет». Приключения мушкетеров «Двадцать лет спустя» оплачивались уже пословно, и Гримо стал чуть более разговорчивым.

[править] Хороший скрипт быдлоскриптом не назовут!

Быдлокодеры на моем лурке

Быдлоскрипт — это скрипт, сделанный быдлокодером «с душою», либо злым кодером с жуткими умыслами. Умыслы в основном заключены во взломе ламеров, которые каким-либо образом будут проводить непосредственный контакт с этим скриптом. Быдлоскрипты могут выдавать ацкие глюки, по дизайну чаще напоминают merde, иногда всплывает ощущение что быдлокодер здорово нажрался когда писал этот скрипт.

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


Быдлоскрипты как правило 100% имеют уязвимости и являются лакомой мишенью для кулхацкеров.

Пример быдлоскрипта:

Файл:Untitled-3.jpg

[править] Срачи

Tank Games 2: результат работы быдлокодера и быдлодизайнера в одном лице

Как и любой представитель быдла горе-программист любит участвовать в разнообразных срачах и холиварах. Вот некоторые из них:

[править] Нужна ли программисту математика?

Срач старый, как говно мамонта. Обычно его инициаторами выступают школьники, которые не осилили матан на уровне даже 9 классов и ввиду своей недоразвитости не догоняют, зачем, дескать он нужен? Пионерам невдомек, что матан — лучшее средство лечения взаимоисключающих параграфов в их юных головах, он организует мышление, и позволяет не писать всю эту тошнотворную хуиту, которой быдлокодеры засрали эти ваши интернеты.

Математика — один из основных инструментов построения абстрактных моделей программных конструкций и даже целых систем. ИЧСХ, чуть менее чем все студенты, которым пять лет выносили мозг высшей математикой являются быдлокодерами в наихудшем варианте. Доказано печальной практикой. Так что, программист со средним образованием, но пятилетним опытом работы ценится на рынке труда много больше, чем программист с нулевым опытом и хоть тремя дипломами. В то же время, умение мыслить абстракцию кода отдельно и независимо от его реализации в языке — необходимое условие хорошего программиста[4]. Как правило, школие часами доказывает, что для того, чтобы писать крутые проги знать всякие лямбда-исчисления не надо, и вообще всё это — задротство. На вопрос, почему же эти их проги такие говеные, исчерпывающего ответа дать не могут.

Для написания программ весьма полезными и рекомендуемыми являются знания матана и дифуров (без них в остальных предметах делать нечего), численных методов, методов оптимизации, мат. моделирования и теории графов. А если ты, школьник, хочешь написать свой Фоллавут онлине в полном Тридэ, то тебе совершенно точно понадобятся знания матричной (и векторной, как частный случай) алгебры и аналитической геометрии (для трехмерного движка — даже если ты берешь уже готовый, все равно оперировать с векторами и матрицами придется чуть чаще, чем всегда), теоретической механики и дифференциальной геометрии (это если ты планируешь, чтобы твои болванчики перемещались поразнообразнее, чем по прямой). А ты думал, что преподавателям скучно дома, и они решили тебя помучить бесполезными науками за государственный счет?

Список знаний для написания 3D игрушки велик и пугающ: аналитическая и векторная геометрия, матричная алгебра, теормех. Тошнотворную хуиту, как правило, пишут из-за того, что перед началом работы не укладывают в своей голове решаемый функционал и не делают его здравую разбивку на функции. В результате кодер борется со своим же кодом как с противником, начинается цейтнот, что в свою очередь приводит к переизбытку кофе и мочи в голове, потому что иначе секир башка. Матан может и РАЗВИВАЕТпруф? абстрактное мышление, хотя может быть, это и не единственный путь. Но примеры обратного достаточно редки. В любом случае, если нет соответствующего раздела в мозге, абстрактное мышление не разовьёт даже матан. Правда, он позволяет произвести начальный отсев и отправить несостоявшегося быдлокодера учить другие подходящие вещи или более гуманитарные науки.

tl;drПодытоживая вышесказанное, следует отметить, что всеразличный матан не является панацеей и волшебной таблеткой для верхней головы, увы нет. Это не более чем мозговая клизьма, способная стремительным домкратом прочистить от говен фимозги подрастающих погромистов. Другое дело, что в некоторых случаях против ФГМ нужна не клизма, а сразу живительная эфтаназия.

[править] Сишники vs. Паскалисты (Сионисты vs. Пасквилянты)

«

Программируйте с использованием языка, а не на языке.

»
— С. Макконнелл

Старый срач, зародился IRL еще в 80-х, а может и раньше. Историческими предпосылками начала срача IRL в этой стране стало отсутствие доступа к компьютерам. Школоте не понять, но было время когда к единственному на факультете компьютеру студентов допускали по предварительной записи и не более чем на полчаса в неделю. Поэтому программы зачастую писались и отлаживалсь на бумаге, а только потом в полностью готовом виде набирались и компилировались. Программировать в уме на C умели не все, приходилось использовать Pascal. По этой причине Сионисты которых также называли Насильниками считали Пасквилянтов за быдлокодеров. Сами-же Сионисты зачастую страдали чрезмерным ЧСВ. С появлением ФИДО срач перекачивал в оное. Но анонимусу думается, что в те времена участники были несколько адекватнее, потому что быдла в фидо было меньше, чем в нынешних интернетах. С течением времени это ваше фидо постепенно самовыпиливалось, а интернеты прогрессировали — быдло набигало. И срач приобрел более современную форму: Delphi vs. C++. Причём основная масса дерьма (если не вся), генерируемая срачем Delphi vs. C++, обрушивается на Delphi. Исходя из этого, а также того, что дерьмо в процессе подобных срачев способны генерировать только быдлокодеры, можно понять, во что воплотился идеал быдлокодерского языка.

Самый пик пришелся на начало 00-х годов, когда Мелкомягкие сделали довольно большой перерыв после выпуска Visual C++ 6, а дельфинарий тем временем не стоял на месте. После выпуска Биллом Г. платформы .NET срач постепенно начал самовыпиливаться из-за того, что схожие наработки по объединению нескольких языков стали популярны. Суть холивара, однако, вовсе не в том, что какой-то язык хуже, а какой-то лучше. Самый цимес в ФГМ, который непрерывно пожирает межушной нервный узел быдлокодеров.

Также в быдлокодерской среде популярна разновидность этих споров в виде того, является ли С, С++, Турбо Паскаль 5.0 и Турбо Паскаль 6.0 четырьмя разными языками или их всего 2(или 3). Быдлокодеры считают, что добавление объектов создаёт принципиально новый язык. Другие быдлокодеры возражают, что нет. С и С++ всё таки отличаются (правда полутра операторами) даже без использования объектов. Однако чуть менее, чем все быдлокодеры, говоря о прелестях «чистого С», имеют ввиду, естественно, не эти различия, а именно использование объектов.

Типично доставляющий и забавно свежий пример поражения межушного нерва поциента

Слушай, ты, я 5 лет назад отучился. На Дельфи не пишу из религиозной ненависти, на С++ Билдере начал с поддержки наследия, которое благополучно переписываю, уже наполовину убрал всё гавно. В Нетбинсе использую unit-тесты, и SVN, к Билдеру юнит-тесты прикрутить мне не удалось, давайте, списывайте на мою недоученность, но всё же я перерыл несколько библиотек юнит-тестирования, и мозг сломал об их документацию, при этом постоянно отвлекаясь на текущую работу. Причём к примеру boost.regex я прикрутил к одному Билдеровскому проекту. Ещё раз насчёт недоученности, у меня универ был лажовый, группа 17 человек, из них я один программист, остальные и рядом не валялись. Я вообще программирую не благодаря, а вопреки университету. Никаким из своих навыков программирования, я универу не обязан. Разве что может основы UML там узнал. Всё остальное самообучение. Результаты неплохие, но есть к чему стремиться. НО МЛЯ НА ЭТОМ ФОРУМЕ ЗАКОЛЕБАЛИ УЖЕ ВСЯКИЕ ОНАНИЗМУСЫ МЕНЯ ОСКОРБЛЯТЬ!!! Чем я показал какую-то недоученность и ущербность? Я справляюсь с работой, и дома программирую из личного желания, в чём я не прав то опять? Короче, смотался отсюда, му**ло, ты запарил уже!

sql.ru

[править] Заметки страдающего быдлокодера

Хер ли, думаете не хотелось бы сидеть и неделями шлифовать свои строчечки, искать оптимальные решеньица, вплоть до экономии оперативной памяти? Если это школьный проект или дипломная работа — и имеешь усидчивую жеппу и ноль личной жизни в квадрате, так задрачиваться можно годами. Тем более когда под рукой интернетов йок, за каждой хреновиной чеши в библиотеку, а там очередь и чтоб сдать книгу обратно до восхода солнца. иначе линчуют такие же ушлепки как ты. Быдлокодерство, к сожалению, это не цель а средство. Как только писание строчечек когда исчисляется не количеством и не качеством, а потраченным временеи и соответствующей оплатой последнего, фигушки позадрачиваешься. Помню дали заданьице — до конца НЕДЕЛИ — был вторник — отсканировать, внести в базу и написать часть поиска (по заглавию хотя бы) триста газетных статей из газетных же архивов. То есть на все про все — включая OCR и физическое перетаскивание хреновин с газетными вырезками из подвала наверх — меньше чем пять дней. нормально. Хорошо хоть уже инет был и интерфейсы можно было делать в дельфи, правда в самой первой версии со всякими тараканами и без поддержки локального алфавита (самой пришлось писать коробочки с праволевной ориентацией и поддержку иврита мать их). Да-да, там вдобавок на иврите все было. Ну так вот пять дней. С ограниченным доступом в инет — два часа за рабочий день, пока выделенку не дали нам. Тут уже не нашлифуешься, работает — и хрен с ней, а память пусть сами докупают если такие нетерпеливые. Вот так и появляется быдлокод, даже в такой херне как базы данных. Хотя знание определенных правил очень помогает, все равно наизобретаешь велосипедов. А им боссам тоже похуй, лишь бы своему можно было отчитаться — мол дедлайн вытянули, на отладку время не дают, сразу новый проект. Это хорошо когда бородатые дяти пишут. но бородатые дяди и берут хорошо, а сопляков можно за копейки гонять. Такая философия и рождает быдлокодеров. Гораздо быстрее чем просто глупость и амбиции тех кто программировать толком не научился. Как-то так.

[править] Известные быдлокодеры

[править] См. также

[править] Ссылки

[править] Примечания

  1. Цитата была использована в книге Стива Макконнелла «Совершенный код»
  2. Следует заметить, что стычки проиходят лишь при условии что его коллеги и начальство не являются точно такими же быдлокодерами, в противном случае они легко находят общий язык и вместе просирают все полимеры
  3. Тот кто под них быдлокодит, косячит более хитро
  4. Помимо математики, есть ещё OOA&D, но Буча быдлокодеры тоже не читали.


Источник — «http://lurkmore.ru/Быдлокодер»