Обсуждение:Индусский код
Материал из 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&
[править] Кривой редирект
В статье "Индусский код" есть несколько ссылок на слово "Индус", которое тупо перенаправляет обратно на статью "Индусский код"! Я даже не знаю, на что это можно исправить...
- Это тоже пример Индусского кода. -- Ононимус 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/ я читал чуть не убился
Чтобы прошло
...
|
Закчазчик должен быть полный идиот... <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";
}
[править] Оверинжиниринг
Со слова "гнойника" делаем ссылку на Фобос-Грунт. Ибо живейший пример (а Лурка, как всегда, Нострадамус).