Личные инструменты
Счётчики

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

Материал из Lurkmore

Перейти к: навигация, поиск
Warning 1.pngК вашему сведению!
В этой статье мы описываем само явление интусского кота, а не составляем списки всех возможных примеров. Ваше мнение о кривых реализациях и копипасту очередного ZOMG TEH HINDU CODE!!111! читать здесь никому не интересно, поэтому все правки с упоминанием «Пример № 100500» будут откачены, а их авторы — расстреляны на месте из реактивного говномёта, for great justice!
Barbed wire new flip.pngHalt! Страница огорожена от примеродрочеров.
Хочешь высказаться? Добро пожаловать в обсуждение.
«

/** * For the brave souls who get this far: You are the chosen ones, * the valiant knights of programming who toil away, without rest, * fixing our most awful code. To you, true saviors, kings of men, * I say this: never gonna give you up, never gonna let you down, * never gonna run around and desert you. Never gonna make you cry, * never gonna say goodbye. Never gonna tell a lie and hurt you. **/

»
http://stackoverflow.com/questions/184618/
Индусский программист. «Пишу на C++ за еду!»
Генеральный директор Microsoft с 2014 года — индус. Это должно было случиться.

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

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

Содержание

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

Pro desu.gif
Code Nulch dem.jpg

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


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

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

कोड में टिप्पणी - यह है कि उसने क्या कहा डिबगिंग के दौरान प्रोग्रामर, так-то!

b
Герои Intel
Настоящий индусский код

Индусский дебаггинг

Частично является разновидностью индусского кодинга. Суть заключается в том, что при дебаггинге индус убирает видимое проявление проблемы, а не саму проблему (он её даже и не пытается искать). Например:

Проблема

При чтении одного конкретного ре́корда из базы прога падает в функции CalculateTaxes с ошибкой переполнения.

Человеческий фикс
  IF rs.fields("money") > 1e9 THEN
    Throw New System.Exception("Не может в нашей школе быть таких зарплат. В базе неправильное значение зарплаты для работника " + rs.fields("name") + ", исправьте.")
  END

  Call CalculateTaxes(rs)
Индусский фикс
  IF rs.fields("name") = "уборщица тётя люся" THEN
    ' Ну и похуй, что налоги для тёти люси не посчитаются. Зато софтина не упадёт!
  ELSE
    Call CalculateTaxes(rs)
  END

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

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

Не сразу можно понять, что в этом коде просто-напросто выполняется проверка 0 <=i <10. Алгоритм достаточно прост: выполняется преобразование i в строку, после чего вычисляется её длина. Если число больше 9, то его десятичная запись содержит больше одного символа. Поскольку отрицательные числа переменная типа uint содержать не может, то проверку успешно проходят лишь числа от 0 до 9. Строка же, полученная из отрицательного числа, состоит как минимум из знака '-' и одной цифры, поэтому проверка справедлива и для знаковых целых (int). Алгоритм ресурсоёмок, неочевиден, и не поддаётся сопровождению даже теоретически.


Kитайский код

b
Герои Intel, Чайна-стайл!

Kитайский код — стиль написания программ, нарушающий принцип НПС («Не повторяй себя»). Китайский подход к программированию требует эксплицитного отказа от циклов, локальных переменных, любых процедур и условных выражений, а также использования технологии copy-and-paste чуть менее, чем везде. Такой подход точно увеличивает объём исходников и может увеличить производительность (ведь пропускаются такты на джамповые команды).


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

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

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

Делфишколокод

Явление, наблюдаемое исключительно на просторах Этой Страны. Возникло из-за маниакального пристрастия «преподавателей» информатики Этой Страны преподносить неокрепшим школьным умам «основы программирования» на базе небезызвестной быдлокодерской RAD Delphi. Особенностями такого кода являются стандартные автоматически сгенерированные RAD имена методов классов, событий, переменных (Form1, Button1, Button1Click и т. д.), отсутствие всякого форматирования, комментариев, документации. В случае, если делфишколокодер придумывает собственные названия методам, функциям или переменным — эти названия состоят из транслитерированных русских слов вперемешку с немногими известными школоло английскими, например CheckOplata. Либо — вообще лишены всякого смысла. Примеры делфишколокода, а также примеры замечательных и очень полезных «программ», создаваемых нашими школьниками, можно найти на замечательном, зашкаливающем лулзами «Личном сайта Разработчика!» по адресу http://ykolchurin.narod.ru/. Лулзы от этого кода искать здесь: http://www.sql.ru/foru...d=708039

Оверинжиниринг

Кроме быдлокода и китайского кода, высокой пертинентностью к индусскому коду обладает т. н. «оверинжиниринг» — решение простых задач сложными методами. Да-да, просто чтобы повыёбываться, показать своё знание всех возможных приёмов, методов и конструкций (в чем и отличие от индусского кода) и произвести впечатление на человека, от темы далёкого, но зато платящего за это денежки. Как всегда, ничто не ново под луной: в 1920-е был крайне популярен карикатурный изобретатель с характерно громоздким именем «профессор Люцифер Горгонзолла Баттс», пародирующий первый виток явления, окружённый своими адскими механическими машинами, которыми познее вдохновились создатели досовской игрушки «The Incredible Machine». Сейчас то же самое наблюдается как в электронике, так и (особенно ярко) в сфере ПО. Причём опенсорс подвержен этому раку не менее, чем коммерческий код: там тоже пытаются произвести впечатление на пустом месте, но уже не на заказчика, а на тусовку. Такие дела.

Большой недоговоркой было бы умолчать, что сие явление не просто масштабно — оно всеохватно, о́бло, озо́рно, огро́мно, стозе́вно и ла́яй ©. Раком оверинжиниринга отрасль охвачена, пожалуй, полнее, чем рынок — быдлодевайсами, а телевизор — зомбопрограммами. Она охвачена им практически вся. Результаты, собственно, печальны и наблюдаемы невооружённым глазом. Умирающий от ожирения код пишется визуально генерируется умирающими от ожирения средствами разработки, а количество багов в результате просто астрономическое (преподносится этот бред как «средства, помогающие минимизировать людские ошибки» — быдломенеджеры по внедрению верят буклетам больше, чем визуально наблюдаемой картине). Скорость достижения результата тоже прямо противоположна заявам (на ассемблере и то было бы быстрее написать). Вопрос «нахуя?» вызывает в ответ тонны шизофазии про «прогрессивные методы и смелый взгляд в будущее». Запасаемся попкорном и ждём прорыва этого гнойника.

Пример кода: Hello world на PHP in da patterns.

Анналы истории

29 января 2009 года, на открытии Всемирного экономического форума в Давосе, афтаритетность и квалифекация наших индусско-индийских коллег была подтверждена на официальном уровне и использована для доказательства не меньшей авторитетности и квалификации нашего брата:

«

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

»
[1]

Олсо, 26 ноября 2009 года Александр Лукашенко выступил перед участниками специального заседания саммита «Соединим пространство СНГ» с почти дословным пересказом своего бывшего российского коллеги:

«

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

»
http://www.president.gov.by/press80066.html

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

Возможные последствия

«

Мичман также считает, что произошел сбой в компьютере. «Такую систему нельзя было запитывать на электронику. Раньше на всех лодках система пожаротушения была ручная, по приказанию. Дается команда: „Включиться в дыхательные аппараты!“, и только потом запускается система тушения. А тут уже фреон льется и одновременно аварийная тревога. У нас был пульт общекорабельных систем „Молибден-И“, индийский вариант», — сказал Кошеваров. По его словам, экипаж во время аварии действовал грамотно. Многих из примерно 70 человек, находившихся во втором отсеке, спасли.

»
http://www.newsru.com/russia/12nov2008/podlodka.html

Therac-25

Терак-25 (англ. Therac-25) — аппарат лучевой терапии, медицинский ускоритель созданный канадской государственной организацией Atomic Energy of Canada Limited. От него погибло как минимум шесть человек. А все это из-за сами знаете чего.

Обезъяны, пейсавшие код были довольно везучими и допустили около 3 ошибок. Среди них шедевры:

  • Одна и та же переменная применялась как для анализа введённых чисел, так и для определения положения поворотного круга. Поэтому при быстром вводе Therac мог иметь дело с неправильным положением поворотного круга.
  • Настройка положения отклоняющих магнитов занимает около 8 секунд. Если за это время параметры типа и мощности излучения были изменены, и курсор установлен на финальную позицию, система не обнаруживала изменений.
  • Установка булевской переменной (однобайтовой) в значение «истина» производилось командой «x=x+1». Поэтому с вероятностью 1/256 (если x=255, то сложение с единицей приводит к переполнению и обнулению переменной) при нажатии кнопки «Set» программа могла не пропустить информацию о некорректном положении диска.

Коммерческие продукты, содержащие индусский код

Команда разработчиков IE7. Вглядитесь в эти лица.
И на количество пальцев, что показывает нижний-правый программист
IDA Pro срывает покровы
  • Microsoft Windows. Исходники NT4, 2k, xp есть в сети. Найти в сорцах следы индусов не сложно. В 2014 M$ окончательно перестала притворяться, взяв генеральным директором индуса!
  • Symbian. Горячо любимая нокией. До открытия исходного кода писалась индусами. Я гарантирую это. Те, кому нужен пруф, могут посмотреть на обилие индийских знатоков symbian на форуме http://discussion.forum.nokia.com/forum/
  • Драйвера AMD/ATI. Эдакий эталон говнокода из парижской палаты мер и весов. Количество багов, глюков и недоделок перевалило за все мыслимые пределы (особенно на Линуксе). Радует также Catalyst Control Center, написанный на б-гомерзком Microsoft.NET. Впрочем, это не удивительно — сама контора анально зависит от мелкомягких. Алсо, ходили слухи, что последние версии драйверов видеокарт писали их ближайшие конкуренты — калифорнийская хлебопекарня nVidia.
  • Тысячи их.

См. также


Ссылки