индусский код что это

Индусский код

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

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

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

В вышеприведенном примере код внутри блока else выполнен не будет никогда, но в то же время формально он там присутствует, а следовательно при оценке программы вполне поучаствует в расчете итоговой оплаты проекта.

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

При этом некоторые стали считать, что все проекты айтишников из Индии по умолчанию являются кривыми и плохо поддерживаемыми. В связи с этим критики отмечали, что российские программисты с таким же плохим уровнем знаний стали критиковать индусов, просто чтобы считаться лучше, и это стало своего рода стереотипом. При этом некоторые программы индийского производства могут быть вполне качественно написаны. [1]

Отмечалось, что подобный раздутый и сложно понимаемый код пишут и китайцы.

Выражение «индусский код» стало настолько известным в российской среде, что попало даже в Викисловарь. [2]

Источник

Привет

Русскоязычный информационно-болтологический форум

Индусские программисты и индусский код

Индусские программисты и индусский код

Post by Yeti » Sun Jan 27, 2013 6:32 pm

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

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

В Индии с некоторых времен существует практика оценки производительности труда программиста на основе количества написанного кода. Чем больше кода, тем больше программист работает, и, следовательно, выше его оклад. Шустрые индусы быстро сообразили, как обманывать неквалифицированных заказчиков.

В результате чего можно встретить подобные шедевры (и это только цветочки!):

if (true) <
// какой-то код
> else <
// a вот тут чистый profit
>
Менее очевидный вариант:

if(var)
<
.
>
else if(!var)
<
.
>
else
<
// чистые деньги
>
И особенно весело получается, когда где-нибудь вверху скромно стоит

.
#define true false
.
Ну и уж совсем замечательно, когда

.
#define true (Math.random()>0.5)
. Поговаривают, что последний пример уже из области какого-то стохастического программирования.

Также аутентичный индусский код пишется на хинди и транслитерируется в C, C++ или Java. По некоторым сведениям, индусский код поют и танцуют, и только потом записывают на хинди. Есть народная примета: если программист поёт и танцует — значит, он написал индусский код.

Также при частой работе с этими «спецами», фраза «The only good Indian is a dead Indian» обрастает новым смыслом.

Источник

Индусский код в Микрочипе

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

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

Индусский код (не индийский или индейский) — жаргонное нарицательное название для программного кода крайне низкого качества, использующего простые, но порочные принципы «copy-paste».
Почему именно индусский?
По слухам в Индии с некоторых времен существует практика оценки производительности труда программиста на основе количества написанного кода. Чем больше кода, тем больше программист работает, и, следовательно, выше его оклад. Шустрые индусы быстро сообразили, как обманывать неквалифицированных заказчиков.
Полезное замечание от kaladhara
Житель Индии — индиец, а индус — это последователь любого направления индуизма. Таким образом даже чукча преклонных годов, исповедующий шиваизм (и, вероятно пишуший на с++) — индус.

0. Больше кода — больше профит!

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

1. Классика жанра

Классика жанра индусского кино кода незыблема со времен его появления, для разминки попробуйте угадать что скрывается за этим куском кода, содержащемся в файле «MDD File System\SD-SPI.c» на строчке 1042:

Читайте также:  за что отвечает логопед

2. Копипаст

В отсутствии фантазии подойдет и копи-пейст, хотя по слухам многие работодатели проверяют код на копипаст, микрочип видимо не из их числа. Запомните, для срубания бабла индусским кодом никогда не используйте макросы — они зло и безобразно уменьшают код. В пример кусок, повторяющийся раз двадцать в файле «MDD File System\FSIO.c»:

Соотношение 10:1 в пользу первого варианта, а с учетом двадцатикратного повторения в абсолютных величинах это несколько сот рупий!

3. Линейный код

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

Инициализация структур должна быть побайтной, не надо писать простые инициализаторы типа:

4. Изобретаем велосипед или деньги из пробелов

На очередную мысль меня навела идея функции FileObjectCopy в файле «MDD File System\FSIO.c» на строчке 6065, подозреваю что если бы у них было больше разных структур то появились бы и другие SomeObjectCopy

The FileObjectCopy function will make an exacy copy of a specified FSFILE object.

Если «exacy» == «exact» как следует из кода, то это профитная замена прямого присвоения структур — стандартной операции в ANSI C, a сделанное компилятором, оно должно быть и быстрее и компактнее так как используются аппаратные FSR/INDF регистры. Для разных объектов подойдет memcpy(d, s, sizeof(s)) и работает он тоже быстро, во всяком случае его ассемблерная реализация.

Ну есть еще мелочи для раздувания кода, которыми можно добавить пару — тройку строк, типа:

Даже если это исключительно для того чтобы сделать переменную read-only то такого макроса вполне достаточно, чтобы компилятор выругался где надо:

5. Комментарии с фанатизмом

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

6. Используйте особенности архитектуры

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

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

Еще раз удвоить количество кода вам поможет то, что указатели RAM и ROM в компиляторах под PIC разные, то есть «char*» не может быть преобразован явно или неявно к «const char*» в хайтеке или «const rom char*» в микрочипе. Что вобщем-то проблем в хайтеке не вызывает совсем, так как void, far и const указатели могут адресовать всю память и применяться как к ROM так и RAM. Но в микрочиповской реализации си это может привести к созданию двух функций: одной работающей с ROM, а второй с RAM — чистый профит. Никогда не следует довольствоваться одной функцией, работающей с оперативной памятью (а при необходимости загружающей туда константы из ROM).

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

Источник

Индусский код

Алсо аутентичный индусский код пишется на хинди и транслитерируется в C, C++ или java.
Настоящий индусский код

Примеры индусского кода

Пример № 1 (C#)
uint i;
.
if (i.ToString().Length == 1)
<
.
>

Не сразу можно понять, что в этом коде просто-напросто выполняется проверка i [ Еще чуток ]
Пример № 2 (C#)
double rest(float a, float b)
for (int i=0; i res)
return res;
>

Далеко не сразу можно понять, что этот код выделяет дробную часть произведения a*b. кроме того, функция выдаст ошибочное значение при a*b>999999999 или a*b <
.
>

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

К тому же, это пример ужасного стиля именования переменных, containing as английские слова, так и transliterated russian ones. Видимо, сказался author’s poor английский словарный запас.

TurDuckEn Code — разновидность быдлокода, чаще всего встречающаяся в веб-приложениях. Как спагетти-код, только хуже. ТурДукен (en.w:Turducken) — декадентская расовая пиндосская нямка, cостоящая из индейки (turkey), нафаршированной уткой (duck), зафаршированной курицей (chicken).

Турдукен Код, например, состоит из PHP, фаршированным SQL, нафаршированным HTML, зафаршированным Javascript’ом. Вот так.

Почему именно индусский

В Индии с некоторых времен существует практика оценки производительности труда программиста на основе количества написанного кода. Чем больше кода, тем больше программист работает, и, следовательно, выше его оклад. Шустрые индусы быстро сообразили как обманывать неквалифицированных заказчиков.

Читайте также:  Эпизоды ночного апноэ у грудничка что это

[ И еще примерчик ]
Говорят что программистам из Индии деньги платят за количество строчек кода которые они написали(редко обращая внимание на качество).
Вот пример одной из конструкций:
if ($x == 0) <
// Do 1.
>
elseif ($x!=0) <

// Do 2.
>
else <

//
// А вот здесь чистые деньги 🙂
//
>

Ну и еще примеров можно посмотреть на лурке

Удачи, вам, коллеги, и поменьше иметь дел с индусским кодом

Источник

Как в действительности устроено индийское IT: 4,5 миллиона сотрудников и не так уж много индусского кода

Вам никогда не было интересно, как на самом деле обстоят дела в Индии с IT? Откуда все эти шутки про индусский код и что за ними стоит? Как на самом деле работают разработчики в Индии и как на их работе отражается кастовая система и местная религиозность?

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

Привет, меня зовут Александра, и я уже 7 лет живу в индийском городе Бангалоре. В России я работала в компании, которая часто занималась аутсорс-проектами для зарубежных заказчиков. И в 2015 году мы решили открыть офис в стране, где легко найти англоязычных программистов — в России с этим сложности.

Мы выбирали между тремя странами: Китаем, Вьетнамом и Индией. И Индия победила по нескольким причинам:

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

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

Здесь открыты офисы Google, Microsoft, IBM, Intel, Accenture, Cisco, Adobe, Apple, SAP и других крупных компаний. Особенно это относится к Бангалору — сюда с удовольствием переезжают IT-инженеры со всей страны.

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

Огромное число инженеров. В Индии около 4,5 миллионов людей заняты в IT-секторе. Мне кажется, что даже если во всем мире закончатся IT-специалисты, то Индия будет последней страной где это произойдет. Да, среди такого большого числа попадаются не самые квалифицированные. Но и крутых ребят тоже очень много.

Проанализировав все факторы, мы приняли решение в пользу Индии и в частности города Бангалор. Поэтому я приехала сюда открывать офис, все организовала и осталась в нем в качестве директора.

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

Еще в 1984 году здесь стали открывать филиалы компании из США — их привлекло большое число квалифицированных инженеров и низкие цены на разработку. И вслед за этими компаниями постепенно подтянулись другие, превратив Бангалор в индийскую Силиконовую долину.

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

Текучка кадров. В Индии считается нормальным менять работу — иногда на улице даже висят билборды с пропагандой смены места работы и поиска варианта получше. Чтобы удержать сотрудников, необходимо грамотно выстраивать процессы, с учетом местных особенностей рынка труда и законодательной базы. Например, здесь принято в обязательном порядке каждый год повышать зарплату на 10%.

В Индии свои особенности рекрутингового процесса. Например, здесь «notice period» не 14 дней, как в России, а от 30 до 90. То есть от момента принятия оффера до выхода на работу может пройти три месяца. И конечно, нет никаких гарантий, что в течении этого времени ваш основной кандидат не передумает Популярна опция «Buy out» — можно заплатить компании зарплату сотрудника за оставшиеся дни, чтобы он сразу перешел работать к вам, как бы выкупив его.

Еще в Индии обязательно есть «Joining bonus» — сумма, которую сотруднику платят в первый месяц работы, помимо зарплаты. Это может быть 300$, а может и 2000$, в зависимости от должности и возможностей компании.

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

Читайте также:  Удельный вес мочи повышен у женщин что это значит

Любовь к дипломам. Индийцы очень любят коллекционировать дипломы и сертификаты. Здесь у многих есть диплом MBA — причем такой выпускник может работать в колл-центре с зарплатой 300$. На собеседованиях все очень обижаются, если в расчет берут только релевантный опыт, а на дипломы не обращают внимания.

Религиозность влияет на работу. Здесь три основных религии: индуизм, христианство и ислам. И важно, чтобы сотрудник мог взять выходные на свой религиозный праздник. Индуист, например, может отказаться от выходного в Ид, но попросит дополнительный день на Дивали.

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

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

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

Фальшивое «непонимание». Сразу поясню на примере. Если сотрудник работает на удаленке и у него отключили электричество — он просто сообщит, что сегодня работать не может. На что ему нужно прямо сказать, что в таком случае он может приехать в офис или поработать из ближайшего Старбакса. И тогда проблема сразу решается. Но сам сотрудник делает вид, что не додумался до такого решения.

И вообще время у них течет по другому, они не спешат и часто ждут, что все решится как-то само собой, без их активного участия:)

Настоящие болливудские драмы. Если решите кого-то уволить, особенно фрешера, будьте готовы, что к вам в офис явится вся его семья и будет умолять взять его обратно на работу. А Пускающим слезу женщинам в сари не так-то просто отказать =)

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

Но при этом здесь не важно, зарплата 200 долларов или 3000 — любой сотрудник может спокойно есть на обед руками рис с бананового листа, приготовленный в ближайшей к офису палатке на улице. И стоя у дороги пить чай за 5–10 рупий, который продает чайвалла с велосипеда.

В Индию редко нанимают сотрудников из-за рубежа — тут хватает своих. И шанс попасть сюда у разработчика из России довольно невысокий. Но все равно хочу немного рассказать, как тут живется — вдруг вас сюда занесет как туриста или отправят в командировку по обмену опытом от вашей компании: )

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

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

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

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

А в добавок к цвету кожи еще их впечатляет высокий рост. И у меня есть смешная история — я не только белая, но еще и высокая, 182 сантиметра. Мало того, что многие прохожие просят сфотографироваться вместе, так однажды ко мне подошли с рулеткой и начали измерять мой рост прямо на улице. Затем пригласили в храм для присутствия на какой-то церемонии, где я должна была стоять держа в руках кокос, если бы, конечно, согласилась принять такое интересное приглашение.

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

Источник

Новостной портал