Персональные инструменты
Счётчики

Обсуждение:Индусский код

Материал из Lurkmore
Перейти к: навигация, поиск

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

и да. почитал коменты - я лучше с индусами, они придумали санскрит и кастовую систему, а товарищи комментаторы нулл с нолем путают, дальше только второкуры.

Содержание

[править] Почему индусы идут в программисты

Это видео поможет понять, почему некоторые индусы становятся девелоперами.
История индийского программиста SHITa CODEjesh, который освоил все языки программирования!

b


[править] Коммерческие продукты содержащие индусский код

Cisco же конечно, в рот им ноги! Чуть более, чем все продукты. А приобретаемый за отдельные бабки техсаппорт на софт и продукцию, приятно удивляет перенаправлением звонков в далёкую Индию, где внезапно дежурный Брахмапутра Харикришна вежливо объяснит тебе, дружок, на смеси хинди и олбанского, что обращения в техсаппорт надо пейсать по электронной почте, приложив нотариально заверенный скриншот купленного сервисного контракта. А так, как в Индии ебут слонов торопиться не принято, то время реакции на твои письма будет ещё более удивлять тебя и заставлять срать кирпичами любить простых отзывчивых индийский парней, которые близко к сердцу воспринимают твои проблемы.

[править] просто вопрос

Если у тебя метод класса на 300 строк то норм?

Необъективное отношение к Индусам. На "Codeproject", встречается неадекватный код, как с подачи сабжа так и других жителей планеты. Всё зависит от умственных способностей, поэтому вывод: Индусский код - Миф. Индусский гений: Nish Sivakumar : http://www.codeproject.com/Articles/10493/MAC-Address-Changer-for-Windows-XP
Индусский лох: http://vk.com/video-211751_162034209

[править] Индусский менеджмент

Выезжая за пределы родины в цивилизованные страны, индусские программисты (самые ловкие из них) стремятся верх по служебной лестнице. Многим удается. Вполне логично, что накопленные за долгие годы быдло-программирования профессиональные навыки они берут с собой. Поэтому коллектив, руководимый индусским менеджером, свободен от такой хуйни, как дисциплина, сроки сдачи проекта, эффективность, целесообразность и пр. Данный подход позволяет работнику сконцентрироваться на написании говнокода, производя его тоннами, без оглядки на всякие ебаные стандарты и мнение коллег. В результате индусского менеджмента с коллективом происходят две вещи: а) он растет количественно; б) индусов в нем становится чуть более, чем 100%.

Для оправдания своего распиздяйства индусские менеджеры придумывают методологии типа Agile или Scrum, на которые потом сами же и ссылаются, если к ним возникают претензии.

Код мира грязен. Он опасен для нашей жизни так же как и грязный скальпель.

Как правило, требуется несколько лет, чтобы владелец компании, в которой поселилась индийская IT-деревня, почувствовал запах кари и определил его источник. Впрочем, даже локализация проблемы не всегда ведет к ее решению. Мешает политкорректность и тот факт, что метастазы, поразившие организацию, не лечатся в одночасье, отпугивая тем самым потенциальных докторов. У выживших поциентов вырабатывается стойкий иммунитет к индоменеджменту, иногда граничащий с индофобией.

[править] Индокритическая масса

Ахтунг! В статье ни слова ни о индокритической массе, ни о индоцепной реакции. Немедленно вставить.

Индокритическая масса — минимальное количество индийцев, задействованных в проекте, после которого начинается индоцепная реакция.

Индоцепная реакция — по достижении индокритической массы число индийцев, задействованных в проекте, начинает неконтролируемо увеличиваться, а неиндийцев снижаться, что приводит для проекта к просёру полимеров, а для компании — к банкротству.

[править] ToDo: что сделать со статьей

Если вы оградили статью, то хоть превратите её во что-то варимое. Выпилите нахуй все примеры(в них без объяснений все равно адекватные сходу ничего не поймут) Уберите нахуй пример про драйвера AMD, ибо все у них хорошо, инфа 7 летней давности

По другой трактовке, индусский код — жаргонное нарицательное название для программного кода крайне низкого качества, использующего простые, но порочные принципы «copy-paste», «главное — завалить, а там запинаем», «шапкозакидательство». Также известен как «write only», или (в пику принципу «написано однажды — читается везде») — «написанное однажды — лучше не читать».

Это вообще для кого написано?

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

Такую хуйню тем более надо удалять.

ДелфиШколоКод тоже надо переписать, такую ебанутую простыню читать даже хуево, и в отличии от всей статьи здесь не хватает примера.

раздел «Оверинжиниринг» по сути своей это вообще оффтоп.

[править] Добавьте в статью

Добавьте пикчу в статью Media:Indianprogrammers6.jpg


Пример № 2 индусского дебаггинга на примере исходника 3vBot2

	char *tempBuffer = (char*)malloc(64);
	tempBuffer = strtok(fBuffer, "\n");
 
	for (int i = 1; i < param; i++) {
		tempBuffer = strtok(NULL, "\n");
	}
 
	if (tempBuffer == NULL)
		return false;
//...
	try { free(tempBuffer); } catch (...) {}

Таки дела. Автор по видимому не догонял почему после free происходило heap corruption и решил это элементарно — блоком try/catch.

Вернуть примеры быстраблять111

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

Как там в C# сказать «unsigned int»? Ибо не стоит забывать про знак.

Кажется, так и сказать. --21:38, 25 августа 2007 (MSD)
uint. Ключевого слова unsigned нет. 77.40.68.18 20:52, 29 января 2008 (MSK)
Добавьте плиз пример http://rsdn.ru/forum/Message.aspx?mid=1250236&amp

[править] Кривой редирект

В статье «Индусский код» есть несколько ссылок на слово «Индус», которое тупо перенаправляет обратно на статью «Индусский код»! Я даже не знаю, на что это можно исправить…

Это тоже пример Индусского кода. — Ононимус 12:29, 15 февраля 2008 (MSK)
А ещё во фразе об отличии ИК от быдлокода ссылка на статью «быдлокод», где редирект сюда же, лол. — 06:25, 23 ноября 2008 (MSK)

А это социалка Вконтакте. Фрагмент исходного кода главной страницы: <noscript><meta http-equiv="refresh" content="0; URL=/badbrowser.php"></noscript> Как бы, браузеры без поддержки джаваскрипта - валите на badbrowser.php А это уже фрагмент исходника той самой badbrowser.php <script type="text/javascript"> </script> Т.е. видимо браузерам без поддержки джаваскрипта этот код выполнить предлагается... Браузер с включенной поддержкой скриптов на эту страницу даже не попадет никогда.

[править] Хочу поделиться

http://www.it-repetitors.ru/archives/175

Реквестую залить картинку — http://anekdotov.net/pic/photo9/07255040p.jpg подпись «Рождение индусского кода»

Задача: получить расширение файла. Решение:

$a=explode(".",$filename);
$a=array_reverse($a);
$a[0]=strtolower($a[0]);

Хотя так проще:

$ext = strtolower(end(explode(".",$filename)));

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

>>Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

Мне похуй. Если вы, юннаты, еще не знаете, что разворачивание циклов — есть один из способов оптимизации скорости работы программы — то нехуй даже пиздить про китайский код. (это можно было бы и отметить, так как этот ресурс читают не только прикладные программеры).

  • Само пришло. Наш китайский друг не знает, что уже более 9000 лет во всём остальном мире циклы разворачивают компиляторы, а не кодообезьянки?
    • Well done. Ваш китайский друг сильно ржет над юзерами, использующими любой другой компилятор, кроме ?asm. Ибо включение оптимизации современных компиляторов — это пиздец какая ошибка (особенно если Вы (OMG!) пишете кроссплатформу).
  • Разворачивать следует только маленькие циклы (как по числу итераций, так и по телу цикла), иначе профит будет стремиться к нулю. BPB в действии.
  • Что же, блиать, наш кетайский друг пишет за кроссплатформу так упорно на асме? Так уж все современные компиляторы делаются далпаепами, которые нихуя в циклах не шарят? Горлум, не ты ли это??? В развертке циклов прирост производительности весьма сомнительный, огромный минус — код становится громоздким и нечитабильным (особенно важно если ты, бля, кетаец, не один его пишешь). Выигрышь в пол процента производительности сведется к потере многих часов времени (= тонны денег) при попытке понять или изменить написаное кетайским другом говно. Другое дело — распараллеливание, что в принципе самостоятельно делают современные компиляторы типа того же Intel C++ --Docusync 06:08, 4 апреля 2009 (MSD).

> Такой подход увеличивает > обьем кода на диске > но увеличивает производительность > (ведь пропускаются > такты на джамповые команды) И как, сильно этот 1% ускорения помогает?

  • А еще быдлокодер-кун напоминает, что такой подход требует больше памяти, ибо хранить один адрес начала массива или стопицот адресов переменных — это не одно и то же. Так что профит еще более сомнителен. Кроме того, в случае увеличения/уменьшения (и, тащемта, просто неизвестного во время написания) количества элементов код с массивом можно быстро перепилить, а китайский — нет. Ну и еще одно: для массива все в том же C можно пользовать арифметику с указателями, а китайцам это счастье недоступно. Говорите, ей пользоваться некошерно? А ну-ка покажите мне реализацию двоичной кучи на основе отдельных переменных!

[править] Kитайский код и джампы

и в дальнейшем будет использовать a0, a1, a2, a3, a4, и т. д. Например, вместо
if (x < 10) arr[x] = x;   // наверное индусский автор статьи имел ввиду таки while(x < 10) arr[x] = x++;

будет

if (x == 0) {
  a0 = x;
}
else if (x == 1) {
  a1 = x;
}
else if ( x == 2) {
...
}

^^ данный пример инвалиден для утверждения: «(ведь пропускаются такты на джамповые команды)». Так как код в примере «будет» сгенерирует больше джампов чем в примере «вместо».

Анонимус 03:18, 13 января 2009 (MSK)

При обработке в 10 потоков это выполнится за такт, профит налицо. 77.41.71.112 18:50, 29 апреля 2009 (MSD) Может офтопик, но большинство китайских фирм железячных заказывает софт у Индии. Кетайцы тоже страдают от кривого китайского.

[править] ЗАПИЛИЛИ СЮДА ПРИМЕРОВ, БЫСТРА .!

быстра сюда про индийскую готику(аддон) накатали! А то дам!


люто бешнно реквест по материалам: http://www.lenta.ru/articles/2009/02/05/sakshat/ я читал чуть не убился

Чтобы прошло

...

  1. define true false
... if (true) { // какой-то код } else { // a вот тут чистый profit}

Закчазчик должен быть полный идиот… <math>\zeta(s) = \sum_{n=1}^\infty \frac{1}{n^s}</math> Просто хотела проверить работает ли bbcode Чёта ни хрена… Как бы халявно писать нормальные формулы и чтоб у себя на сайте и чтоб самой не писать скрипты???

[править] Пример № 3 (C#)

Ох пиздец. Не позорьтесь с такими комментами. >И всё только потому, что какому-то индусу было лень придумать менее ресурсоёмкую альтернативу. Кривость этого кода состоит вовсе не в ресурсоемкости, а в том, что его можно было заменить на обычный матч по регексу, что было бы куда читабельней.

  • Читабельней — нечитабильней, но производительность бы упала, если бы каждый раз строился регекс из-за такой фигни — на часто вызываемых подпрограммах неэтично насиловать GC. Представьте себе кучу с графом объектов доверху заполненную маленькими экземплярами String или RegEx — если куча большая, то этих экземпляров в поколении будет очень много. Вообще из-за проблемы с заменами метод Replace добавили в StringBuilder — а Regex — это для извращений вроде распознавания имэйлов и телефонных номеров во всех форматах сразу(причем у нормальных людей создается один экземпляр RegEx который будет проверять, а не в подпрограмме каждый раз — лучше инкапуслировать такую обработку в отдельный объект — сервис.).
    • В догонку: к чему приводит увлечение RegEx
public bool IsPositiveNumber(String strNumber)
{
    Regex objNotPositivePattern = new Regex("[^0-9.]");
    Regex objPositivePattern = new Regex("^[.][0-9]+$|[0-9]*[.]*[0-9]+$");
    Regex objTwoDotPattern = new Regex("[0-9]*[.][0-9]*[.][0-9]*");
    return !objNotPositivePattern.IsMatch(strNumber) &&
    objPositivePattern.IsMatch(strNumber) &&
    !objTwoDotPattern.IsMatch(strNumber);
}

Лул исправил тег.

[править] алсо

набирающий популярность php фрэймворк Yii написан индусом так-то

может это явление является обфускацией

[править] 10 пример

В PL/SQL при отсутствии «ELSE NULL» будет выброшено исключение CASE_NOT_FOUND.

[править] 11 пример

Автор статьи тоже неправ: проверка на NULL обязательна. Однако выполнять ее следует так:

 SELECT aa.*
 FROM Bla_Bla aa
 WHERE ISNULL(aa.AccountNr, -1) > 0

Yбрав проверку, получите код зависящий от установки ANSI_NULLS и сервера.


[править] К примеру #13 (о повисшем reader'e)

Матчасть: SqlCommand.ExecuteReader()
В случае MS Sql Server 2000 и младше у нас может подвиснуть соединение — из всех доступных операций честно отработает только SqlConnection.Close(). Для более поздной версии MS Sql Server'а (начиная с Yukon — 2005) открытые SqlDataReader'ы не мешают работать другим таким же (см. MARS). При закрытии SqlConnection'а SqlDataReader становится беспомощным ибо целиком и полностью на него полагается (качаем Reflector, изучаем). Сам же SqlDataReader будет подобран сборщиком мусора и благополучно скончается.
Там ошибки нет. Или что пропустил? — Да, функции «new_id()» чего-то не припомню в стандартном арсенале эскулеев. Единственное что можно было сделать, чтобы синтаксис был корректен, это создать ее с тестом ПРИМЕРНО «RETURN NewID()»

[править] Че за бред?

Примеры от части верные, но самое начало полный бред: Главное то, что переадресация с «быдлокод», быдлокод — бессмысленные для пользователя строки кода обязательно снижающие производительность, и не как иначе! И чем меньше код оптимизирован, тем он ближе к быдлокоду. попробую завтра править. --77.37.243.155 23:57, 3 марта 2010 (MSK) Отменил переадресацию, буду писать статью. --Moscwich (77.37.243.155) 21:33, 4 марта 2010 (MSK)

[править] Ахтунг! Примеры на SQL не канают

В статье куча примеров с функцией ISNULL(что_то, значение_если_null), причём в якобы «индийском» варианте этой функции нет, а в якобы православном — есть. А чем, спрашивается, второй вариант лучше? Ничем. Зато кое-чем он хуже: «индийские» варианты одинаково выполнятся на любом источнике данных, а вариант с ISNULL — только на MSSQL, так как нигде больше этой самой функции ISNULL тупо-напросто нет (есть похожие с другим названием: на Oracle — NVL, на MySQL — IFNULL). Может, убрать эти примеры, а?

[править] какая-то поебень про sql

По стандарту, на всех SQL'ах должна быть ф-ция COALESCE. Которая возвращает первое неNULL значение из списка своих аргументов (коих м.б. скока угодно; ISNULL по сути — ее двухаргументная аналогия). потому для чтобы не зависить от сервера — лучше пользовать именно ее. А так — раз в примерах используется ISNULL которая есть на MSSQL (и плюс к тому переменные с собакой, которые есть там же), то может считать что примеры приведены ИМЕННО для MSSQL (а не оракла и т. д.)?

[править] Трижды рандомный пример

По алгоритму в из данного примера вычисляется среднее арифметическое. Может автор примера не совсем дурак и ему и надо было более частое выпадение средних значений? А-ля дайсролл типа.

  • Двачую. Мне тоже сразу в голову пришло бросание трех кубиков для проверки на удачу. Что не есть идиотизм. Или в палате мер и весов уже есть эталон рандома для игр?
  • Но всё же он дурак, поскольку забил хуй на переполнение целого, опасность которого в данном коде неиллюзорно высока. Надо либо явно приводить к более объёмному типу, либо идти несколько иным путём.

[править] Отличный пример индусского кода

http://begemoth.livejournal.com/114092.html - этот пример столь шикарен, что даже удивительно, что нигде в статье или поблизости нет на него ссылки.

  • Код, выполняющий эти же действия:
days = []
day_m = 1
month_m = 1
year_m = 1
dict_month = {1: "Январь", 2: "Февраль",
              3: "Март", 4: "Апрель",
              5: "Май", 6: "Июнь",
              7: "Июль", 8: "Август",
              9: "Сентябрь", 10: "Октябрь",
              11: "Ноябрь", 12: "Декабрь"}
 
while year_m <= 4:
    if month_m <= 12:
        if (month_m == 1 or month_m == 3 or
            month_m == 5 or month_m == 7 or
            month_m == 8 or month_m == 10 or
            month_m == 12):
            day_m2 = 32
        elif month_m == 2:
            if year_m == 4:
                day_m2 = 30
            else:
                day_m2 = 29
        else:
            day_m2 = 31
        for a in range(1, day_m2):
            days.append("{0}: {1}".format(dict_month[month_m], a))
        else:
            day_m = 1
            month_m += 1
    else:
        month_m = 1
        year_m += 1
print(days)

p.s Оцените, норм или индусский код

[править] //TODO: запилить обратно видео

subj


[править] Hodgie Code

имхо нужно упомянуть в статье английский аналог термина, ну чтоб знать что в багрепортах писать например

http://www.urbandictionary.com/define.php?term=hodgie+code

[править] Для лулзов поправьте ссылку

Текущий вариант аппарат лучевой терапии, медицинский ускоритель Новый вариант аппарат лучевой терапии, медицинский ускоритель

Мимокрокодил

[править] Я просто оставлю это здесь

http://dl.dropbox.com/u/23924907/indian.cpp

Что это за хуйня, анон?

[править] Нужно, наверное, удалить битое видео

С ютуба удалили видео Герои Intel

[править] К демотиватору о «Hello world!»

На самом деле отличный и полезный пример сериализации данных.

[править] Годный пример индусского кода С++

вычисление среднего арифметического двух чисел:

int a1 = 3;
int a2 = 2;
if  ( 0==(a1+a2)%2)
  cout<< (a1+a2)/2;
if  (1==(a1+a2)%2)
{
cout<< (a1+a2-1)/2;
cout<< ".5";
}

А вдумается кто-то о скорости операции float vs. сдвиг int?

С учётом того, что результат отправляется в cout, не стоит особо об этом задумываться. Лучше задуматься о том, что бывают платформы на которых нет аппаратной поддержки float, и подчастую такие платформы не оборудуются и софтовой поддержкой float, ибо нехуй. Другое дело, что этот код нихуя не работает на отрицательных числах, и при этом содержит кучу ненужного, сбивающего с толку, говна, например, можно записать то же самое но короче:
int a1 = 3;
int a2 = 2;
int n = (a1+a2)/2;
cout << n;
if((a1+a2)%2)
  cout << ".5";

[править] Обфускод

Считается ли излишне сжатый код индусским, например этот:

??=include <iostream>
??=include <string>
??=include <conio.h>
using namespace std;void main()??<int a = 0,b = 0;string c;setlocale(0,"");while(true)
??<if(a==7&&b==10)break;cout<<"c="<<a<<":"<<b<<endl;cin>>c;if(c=="^")??<cout<<"^^"<<endl
;a++;??>else if(c=="_")??<cout<<"__"<<endl;a--;??>else if(c=="<")??<cout<<"<<"<<endl;b--
;??>else if(c==">")??<cout<<">>"<<endl;b++;??>else cout<<"r";??>cout<<"t";_getch();??>

[править] Оверинжиниринг

Со слова «гнойника» делаем ссылку на Фобос-Грунт. Ибо живейший пример (а Лурка, как всегда, Нострадамус).

Всё гораздо хуже. ИЧСХ было понятно ещё отцам-основателям. Просто ІТ индустрии, как и всем другим, в совр. кап. мире надо продавать «пользователям» всё новые и новые продукты (ООП, ХМL), а не делать один раз хорошо и навечно! То же про автомобили, про аппаратуру и бытовую технику — мир врЕменных вещей (как-то был фантастический рассказец в «ТМ» про бумажную рубашку и т. п., надо бы найти!)… У компаний есть свой интерес: вывод денеХ из облагаемой налогами статьи «прибыль» в статью «расходы», к тому же такие «расходы» влияют на котировки (ну, как же? мы ж переписали с COBOL'а на Жабу — стало круче!), а рост котировок на возможность получать новые кредиты и т. д. Рост же прожорливости ПО имеет свой бэк-сайд в виде развития железа, о чём неоднократно сказано, только вторую часть сделки мало кто полностью себе представляет :/ Мир начал превращаться в фейк ещё где-то с 60-х гг. и в том б.м. был свой плюс, так как альтернативный сценарий при неизменной социоэкономической модели после создания термояда просчитать было не сложно :/

Следует таки изменить ссылку в конце раздела на http://web.archive.org/web/20120607054846/http://www.phppatterns.com/docs/design/hello_world_in_patterns , ибо мертва

[править] К слову о китайском коде

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


[править] Еврейский код

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

В обычной жизни типичный еврей:

1. Паталогически пиздлив. Еврей не может просто сказать «да» или «нет»: он начнет с биографии своего дедушки из Бердичева и закончит подробным изложением того, что, по его мнению, должна думать по данному вопросу его троюродная сестра Сара Соломоновна, ныне проживающая в Хайфе со своим мужем Марком Израилевичем, ну ви, таки, знаете — но ни «да», ни «нет» в итоге еврей так и не скажет.

2. Еврей не может просто жить и наслаждаться жизнью. Нет: он обязан на ровном месте сам себе создать кучу условностей и проблем, заебать ими и себя, и всех окружающих, и, таким образом, получить возможность Страдать ™, а, следовательно, и Жаловаться На Жизнь ™. Только тогда, когда еврей может Страдать и Жаловаться, его существование наполняется смыслом.

Перечисленные принципы неукоснительно соблюдаются и при написании кода. Еврейский код, во-первых, по определению не может быть простым и кратким, а, во-вторых, пишется с неосознанной, но обязательно присутствующей целью рано или поздно самого себя выебать, чтобы получить возможность Страдать и Жаловаться (PROFIT!). Именно этим он принципиально отличается от банального оверинжениринга.

Достоевский был, тащемто, не евреем. И Толстой. И Пушкин. И Лермонтов. Но они продвигали страдание, как неотделимую часть РУССКОЙ, БЛЯ духовности, такчто ты хуй.

Пример 1. Еврей физически не может написать просто:

TypeA a = CreateA();
a.UseA();
a.Dispose();

Настоящий, расово правильный еврей обязательно напишет так:

var a = CreateA();
 
// Пара экранов кода, не имеющего отношения к A
 
if (a != null)
{
    a.UseA();
}
else
{
    // Хренова туча кода, скорее всего приписанного позднее, в минуту страданий,    когда автору все-таки удалось себя выебать, потому что в промежутках между обращениями к "a" её кто-то по ошибке очистил
}
 
// Еще много кода, не имеющего отношения к A
 
if (a != null)
{
    a.Dispose();
}
else
{
    // Еще одна хренова туча кода на тот же случай и по той же причине 
}

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

Особенную пикантность код приобретает, когда помимо еврея над ним работает еще и китаец. Если китайцу требуется функциональность, сходная с той, что выполняется в коде еврея (в приведенном примере — по отношению к «A»), то он ее просто скопипастит (китаец иначе не умеет) — естественно, не разбираясь в содержании и, следовательно, копипаст произойдет со всеми лирическими отступлениями, к «A» отношения не имеющими. Тому, кто впоследствии поимеет счастье со всем этим разбираться, длительная просветленная задумчивость на тему «нахуя это всё здесь написано?!» таки гарантирована.

Пример 2. Еврей любит строки. Вместо того, чтобы объявить метод:

ResultDataStructure DoSomething(SourceDataStructure value)

истинный еврей сделает так:

string DoSomething(string value)

Многочисленные параметры метода должны быть упакованы в строку; результаты — из другой строки извлечены. Не надо добавлять, что для разных методов — даже в пределах одной программы — способ преобразования в строку будет различным: в одном XML, в другом — CSV, в третьем — JSON. Верхом кошерности считается использовать разные способы в пределах одного метода: для передачи параметров один; для получения результатов — другой. Если рискнуть спросить аффтора: «А нахуя так сложно?», еврей оживится и затеет двухдневную дискуссию на тему «гибкости, универсальности и готовности к сериализации через любой канал» (еврей пиздит => PROFIT!). Если же, не вступая в прения, этот метод просто взять и переписать, еврей получит возможность тихо страдать (PROFIT при любом раскладе!)

Следствием любви к строкам, является любовь к логам. Если в вашей программе имеется лог — пусть даже текстовый и предназначенный исключительно для человека — можете не сомневаться: рано или поздно еврей до него доберется программно и на извлеченных оттуда данных построит какую-то свою функциональность. То, что все остальные разработчики проекта наивно полагают, что лог предназначен исключительно для человека, и не стесняются менять формат записи в него, рушит еврейский код с завидным постоянством, что, однако, ни в коем случае не отвращает еврея от самой идеи (код падаеет => можно страдать => PROFIT!), а только лишний раз убеждает в существовании мирового антисемитского заговора, направленного лично против него.

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

int A = 1;
int B = 2;
int C = A + B;

объектно-ориентированный еврей соорудит целую поэму:

private interface IVariable
{
    int Get();
}
 
private interface ISummator
{
    int Add(int value1, int value2);
}
 
private class A : IVariable
{
    public int Get()
    {
        return 1;
    }
}
 
private class B : IVariable
{
    public int Get()
    {
        return 2;
    }
}
 
private class Summator : ISummator
{
    public int Add(int value1, int value2)
    {
        return value1 + value2;
    }
}
 
...
 
var C = new Summator().Add(new A().Get(),new B().Get());

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

Практический, осязаемый profit извлекается из того, что с кодом, написанным евреем, возникают постоянные проблемы, и никто, за исключением самого еврея (а зачастую даже и он сам) не способен их устранить, не переписав все с нуля к ебеням собачьим. Все перечисленное делает еврея незаменимым работником и гарантирует его занятость, а тот факт, что он пишет код, от которого остальные сотрудники охуевают через пять минут просмотра, вызывает у непросвещенного начальства стойкий пиетет перед еврейской профессиональной крутостью.

[править] Код Шрёдингера

Код Шрёдингера — код, успех компиляции которого зависит от наличия фактора наблюдения

[править] Косяк в примерах

Вот вы издеваетесь над индусами и китайцами, однако в примерах всякую херь пишете. Вы говорите что это:

int arr[10];
int i;
for (i = 0; i < 10; i++)
{
  arr[i] = 0;
}

могло бы выглядеть так:

int arr[10] = {0};

А не кажется ли вам, что во втором случае нулём явно инициализируется только нулевой элемент массива. Этот кусок сработает так же только при инициализации нулями (да и с нулём может сработать не всегда).

Сразу видно, что автор этого не знаком со стандартами плюсов. Код полностью идентичен в соответствии с ними. — Анонимус

[править] Хороший, гнодный демотиватор на тему

http://gdemozg.ru/images/demot/Govnokod.jpg 95.220.247.235 14:58, 25 сентября 2013 (MSK)

[править] Мелкомягкие

Новым главой Майкрософта стал рассовый индус Сатья Наделла [1], [2], [3], [4], что символизирует.

[править] вставьте цитату

«

PM — Ритика, сколько функций ты вчера написала? Ритика — 17 PM — Плохо! А ты Вишну? Вишну — Я написал 36 функций! PM — Молодец, Вишну! Всем тоже писать 36 функций в день!

»
http://habrahabr.ru/post/230783/

[править] Как это выглядит на практике

Луноход, спроектированный индийскими инженерами, во время испытаний застрял у кратера и внезапно стал почковаться.

Индийские программисты придумали такую сложную капчу, что ее только робот и может прочитать.

[править] вставьте в основной статье (в нормальной форме)

Указано в статье, что Сатья Наделла - индус, и заправляет мелкософтом. "Новым главой Майкрософта стал рассовый индус Сатья Наделла [5], [6], [7], [8] бла-бла-бла, что символизирует." (писалось и здесь, выше). Однако, googl'ом заправляет не меньший индус, а именно Сундар Пичаи, "http://en.wikipedia.org/wiki/Sundar_Pichai" HALT! Эпичный провал индийского подразделения ZOG.

Ну, Product Chief это всё-таки не CEO.

[править] Иллюстрация по сабжу, мож сгодится для статьи...

(Залить без регистрации не судьба - а регистрация, видимо, не судьба бен норм. VPN'а - отсюда линки наружу.)

Собственно, сабж:

https://www.telemundo.com/sites/nbcutelemundo/files/styles/gallery_slide_full/public/sites/nbcutelemundo/files/images/gallery/2012/03/31/200428538-001_copy_133287927075_0.jpg

...и гулопоиск по нему как backup:

www.google.ru/search?tbs=sbi:AMhZZi...

[править] Рекурсивный индусский код в самой статье

Поправьте чтоли, а то огорожено. http://i.imgur.com/9ECldUm.png
Там какой-то сраный NSFW и абсолютно непонятная магия с nowiki, которая никак себя визуально не проявляет, кроме этого загадочного флоата.

[править] WebArchive

Статья закрыта для изменений, и одна из ссылок ведёт на несуществующую тему на sql.ru. Зеркало здесь: https://web.archive.org/web/20130619012101/http://www.sql.ru/forum/708039/novaya-besplatnaya-baza-dannyh-fvmas