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

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

Материал из Lurkmore

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

Вернуть примеры быстраблять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)

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

Реквестую залить картинку - 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 написан индусом так-то

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

[править] 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 - этот пример столь шикарен, что даже удивительно, что нигде в статье или поблизости нет на него ссылки.

[править] //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";
}

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

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