Linux за българи: Форуми

Хумор, сатира и забава => Хумор => Темата е започната от: tarator в Dec 19, 2007, 18:11



Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: tarator в Dec 19, 2007, 18:11
Всеки който е разглеждал кода на разни драйвери в ядрото знае, че качеството им не е кой знае колко добро (меко казано). Въпреки, че пиша предимно за Линукс, когато трябва да портвам драйвер за друга операционна система, обикновено използвам някой от *BSD драйверите (ако има такъв) и само сверявам с кода от Линукс драйверите. Та, израза че Линукс разработчиците са идиоти си е частна шега между хората с които работим заедно.

Това е имейла, който изпратих вчера до някои от тях (преведен на български):

От atheros драйвера в OpenBSDs, sys/dev/ic/ar5xxx.h:

Примерен код

   #define AR5K_REG_WAIT(i) \
       if (i % 64) \
           AR5K_DELAY(1);


Макросът се използва в цикли, които записват стойности в регистри, нещо като:

Примерен код

   for(i = 0; i < len; i++) {
       AR5K_REG_WRITE(reg, val);
       AR5K_REG_WAIT(i);
   }


Възможностите са две:

1. Разработчиците на OpenBSD са идиоти защото си правят труда да "икономисат" една микросекунда за всеки 64 записа/микросекунди.

2. Разработчиците на OpenBSD са идиоти защото не знаят как да използват оператора %. (т.е. искат да направят пауза от 1 микросекунда на всеки 64 записа, но са оплескали условието в if-a).

Коя от двете възможности избирате? :)

П.П. Предимствата на отворения софтуер се виждат ясно в този случай -- драйверът за Линукс има същия бъг ;)


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: gat3way в Dec 19, 2007, 18:43
Вероятно целта им е била веднъж на 64 пъти да не правят пауза :)


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: tarator в Dec 19, 2007, 18:44
Това автоматично ги прави идиоти, вж. 1 :)


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: gat3way в Dec 19, 2007, 18:45
Е глей ся не знам какво прави AR5K_DELAY(1), затова просто предполагам. Може и да прави нещо друго, освен да дреме :)


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: tarator в Dec 19, 2007, 18:47
Прави една микросекунда пауза.


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: gat3way в Dec 19, 2007, 18:48
Хм, сигурно Тео the Rat има пръст в тази работа :) Ма човек не е добре да се рови из изпражнения на гризачи, може да прихване некой бацил :)


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: tarator в Dec 19, 2007, 18:59
Основната причина да пусна коментара е, че пример много добре показва, че предимството "много очи, малко бъгове" не работи, очите първо трябва да могат да виждат.

Обзалагам се, че и след 1 година този бъг все още ще си е там (защото аз нямам намерение да съобщавам за него).


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: gat3way в Dec 19, 2007, 19:08
Ами добре, само че аз не вярвам, че ако очите са по-малко и има една пасмина слабоумни QAs с големи претенции и заплати, нещата ще са по-добре. Мисля, че една друга операционна система го доказва достатъчно нагледно :)

Апропо, OBSD хората имат претенции че пишат перфектен код от едва ли не академично-доказани разработчици и тем подобни глупости, имат си едни хак-а-тони, на които пишат и дебъгват. Отделно дето Тео е един абсолютен трол, който постоянно плюе по линукс community-то. А съм сигурен, че този драйвер е порт-нат от обсд. Така че не знам..


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: tarator в Dec 19, 2007, 19:17
Като стана дума за една друга операционна система, ето какво видях днес:

Optimization, the Microsoft way

This was found in the 2004 leaked Windows sources

__inline BOOL
SearchOneDirectory(
                  IN  LPSTR Directory,
                  IN  LPSTR FileToFind,
                  IN  LPSTR SourceFullName,
                  IN  LPSTR SourceFilePart,
                  OUT PBOOL FoundInTree
                  )
{
    //
    // This was way too slow. Just say we didn't find the file.
    //
    *FoundInTree = FALSE;
    return(TRUE);
}


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: gat3way в Dec 19, 2007, 20:00
Знаех си, че ако стана някога програмист, моят бъдещ работодател ще е Майкрософт :)


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: Nikolavp в Dec 19, 2007, 20:14
Определено мисля, че това е бъг и са искали да постигнат второто, но не са съобразили, че трябва да има един ! преди израза :). Между другото каква може да бъде причината да заспи на всеки 64 минавания през цикъл(ако за това се ползва) ?:)
П.С. Тва с функцията от прозореца май е шега :)





Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: Lord Bad в Dec 19, 2007, 21:14
Обикновено драйверите ги пишат хардуерни инженери, които нямат кой знае какъв опит в програмирането и затова се получава така. И аз сега работя по едно драйверче и като гледам в кода на разни подобни драйвери има и там разни неразчетени изпълнения. Но нещата винаги се компенсират - аз като видя някоя по сложна принципна схема или pcb почти нищо не мога да вдяна от тях. Никой не може да знае всичко.


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: tarator в Dec 19, 2007, 21:40
Специално atheros драйвера не е писан от хардуеристи, а е reverse engineered от някой.


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: gat3way в Dec 19, 2007, 21:57
Абе сега се присетих...имаше някакви големи драми свързани с този драйвер навремето на LKML доколкото имам спомени...ама нещо ми се губят нещата. Нещо сходно с драйверите на АТИ беше, фирменият драйвер беше някакъв "blob" май и някакви такива работи, техни политически там.

Честно казано слабо ме интересуват такива неща де. Нямам много против драйвери, които не са с отворен код. Стига да работят и да има подръжка като хората, а не като си сменя ядрото да нямам начин да си подкарам джаджата..


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: edmon в Dec 19, 2007, 23:43
хах сигурно искат да чака .. щото като правиш записи може и да е проблем... ама явно и така си работи :) хахахахахахахах
а иначе що му фащаш край си длъжен да им кажеш че има бъг:)
по мое скромноо мнение де!:)


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: ray в Dec 20, 2007, 09:32
Здравейте,

Нима има някой безгрешен, или винаги да е във форма, и това че греши прави ли го идиот ?
Без лоши чувства.
Румен


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: console в Dec 20, 2007, 12:09
Цитат (gat3way @ Дек. 19 2007,21:00)
Знаех си, че ако стана някога програмист, моят бъдещ работодател ще е Майкрософт :)

//offtopic

Мойте съболезнования  :p


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: tarator в Dec 20, 2007, 16:12
ray,

Когато някой направи такава елементарна грешка, той е идиот. Когато аз направя такава елементарна грешка, аз си признавам че съм идиот.


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: console в Dec 20, 2007, 16:14
Цитат (tarator @ Дек. 20 2007,17:12)
ray,

Когато някой направи такава елементарна грешка, той е идиот. Когато аз направя такава елементарна грешка, аз си признавам че съм идиот.

Ами ако за него това не е грешка тогава какво означава??
Сигурно ,че е пълен идиот?  B)


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: tarator в Dec 20, 2007, 16:19
console,

Философствам за различията във възприятието на света от различни индивиди само в понеделник, първо число от месеца, от 17:30 до 17:40 :)


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: nov_chovek в Dec 20, 2007, 21:43
tarator,

ти пък като си мислиш, че е бъг, що не съобщиш? Може да излезе, че си има причина за това "приспиване".


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: ray в Dec 21, 2007, 11:15
Цитат (tarator @ Дек. 20 2007,17:12)
ray,

Когато някой направи такава елементарна грешка, той е идиот. Когато аз направя такава елементарна грешка, аз си признавам че съм идиот.

&tarator,

Съгласен съм, лично аз препочитам да не давам оценки (освен за себе си:-)
Дори не мислех да пиша, но се сетих нещо което ми се случи преди много време - ~1997.
Наложи ми се да 'импортирам' ~1500 реда в база данни, но процеса винаги спираше но на различни места с код за грешка (да е на едно място ясно, обаче така).
След доста мислене предположих че ще да е от разликата в бързодействието между процесора и дисковата подсистема.
Това ми реши проблема (вмъкнах празен цикъл), и всичко се 'импортира'.
Сега ако някой погледне кода (това е чисто хипотетично, тъй като дори аз вече го нямам - то и един код ;-) едва ли ще разбере защо аджиба е този цикъл :-)
Когато писах първия си коментар 'това' го нямах предвид едва сега се сетих.
Поздрави. Румен


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: Nikolavp в Dec 21, 2007, 14:50
Цитат (ray @ Дек. 21 2007,12:15)
Цитат на: tarator,Дек. 20 2007,17:12
ray,

Когато някой направи такава елементарна грешка, той е идиот. Когато аз направя такава елементарна грешка, аз си признавам че съм идиот.

&tarator,

Съгласен съм, лично аз препочитам да не давам оценки (освен за себе си:-)
Дори не мислех да пиша, но се сетих нещо което ми се случи преди много време - ~1997.
Наложи ми се да 'импортирам' ~1500 реда в база данни, но процеса винаги спираше но на различни места с код за грешка (да е на едно място ясно, обаче така).
След доста мислене предположих че ще да е от разликата в бързодействието между процесора и дисковата подсистема.
Това ми реши проблема (вмъкнах празен цикъл), и всичко се 'импортира'.
Сега ако някой погледне кода (това е чисто хипотетично, тъй като дори аз вече го нямам - то и един код ;-) едва ли ще разбере защо аджиба е този цикъл :-)
Когато писах първия си коментар 'това' го нямах предвид едва сега се сетих.
Поздрави. Румен

Той няма нищо против празният сикъл :). Въпроса е, че те са искали да го направят на всеки 64 влизания в цикъла да заспива, а то всъщност спира/заспива всеки път с изключение на 64-ия път, което си е направо смешно ;). За една милисекунда изпълняват код, който отнема сигурно повече време ;)(може би толкова е времето на проверката с if, може и да е по - малко де ; ) ).

п.с. Понеже ми стана интересно има ли спецификация за тая простотия ;) Колко време отнема един тест с if да кажем на код компилиран с gcc :)





Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: Stratovarius в Dec 21, 2007, 15:31
Nikolavp,

прочети си коментара и ще видиш колко е безмислен, личи си че не се занимаваш с информатика :p


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: tarator в Dec 21, 2007, 16:46
Nikolavp,

Спецификация има, в документацията на Интел и АМД пише колко процесорни цикъла е всяка инструкция. След това трябва да вземеш предвид каква е вероятността няколко инструкции да се изпълнят едновременно (заради суперскаларността), каква е вероятността данните да не се четат от паметта, а от някой от кешовете, каква е вероятността да направиш TLB miss и т.н. Сметките изобщо не са прости и почти никой не ги прави :)


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: gat3way в Dec 21, 2007, 17:13
Абе сега тръгнах да търся такъв драйвер в source tree-то и нещо нямам успех. Как точно се казва тва нещо в linux? grep-вах AR5K, theros, etc, нямам успех. Съжалявам за глупавия въпрос :)


Титла: Не само разработчиците на Линукс ядрото са идиоти
Публикувано от: Nikolavp в Dec 21, 2007, 17:19
Цитат (Stratovarius @ Дек. 21 2007,16:31)
Nikolavp,

прочети си коментара и ще видиш колко е безмислен, личи си че не се занимаваш с информатика :p

Всъщност съм прекалено малък, за да се занимавам толкова усилено с информатика, но ще ми кажеш ли кое ти звучи нелогично ?