1. Лучший говнокод

    В номинации:
    За время:
  2. Куча / Говнокод #16084

    +131

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    Шесть месяцев назад я нашёл в Интернете книжку "Dive into Python". Странная книжка, толстая,
    да ещё на не русском языке.
    Усердно прочитал её, методично и вдумываясь, но таки ничего и не понял.
    Но что-то не отпускало меня - я пошёл на python.org и стал изучать стандартную библиотеку,
    старательно, скурпулёзно, от корки до корки. Гугля примеры кода, я наткнулся на пост в блоге одного гуру,
    где было написано про PEP8.
    То, что рассказывал этот умудрённый опытом кодер, настолько впечатлило меня, что я словно в припадке
    безумия бросился зубрить эту конвенцию по написанию питоньего кода.
    У меня тряслись руки, по телу прокатывали волны возбуждения, я, можно сказать, бился в экстазе всё
    это время - и теперь могу процитировать наизусть любой пункт, даже если меня разбудить посреди 
    глубокой ночи.
    Новые знания окрыляли меня, я бросился писать (что бы вы подумали?) очередную имиджборду.
    Я не писал раньше имиджборд, эта была моей первой. По пути пришлось освоить азы вёрстки на html и css,
    но там всё оказалось совсем не сложно.
    Я плавно двигался вперёд, наращивая функционал. И знаете что? Я упёрся в недостаток
    производительности. Ну, так мне показалось. Я делал замеры, устранял места с тяжёлым кодом.
    Тысячи раз запускал ab, но так и не сумел перейти порог в 300 запросов в секунду.
    Я как-то ожидал большего и был немного разочарован.
    Гугл, снова гугл. Десятки статей и тем на форуме… Довольно быстро я заметил, что люди часто пишут про
    какие-то "асинхронные веб-сервера". Часто встречались названия Tornado и Gevent. Я прочитал про них
    подробнее - и был просто ошеломлён. Как мне это раньше не приходило в голову?!
    Это же, это просто гениально, чёрт меня побери!
    Исходники в ведро, всё переписать! Меня переполняло новое знание, поток мыслей ровно ложился в
    строчки кода. Я просто не мог остановиться. Чашка кофе… Ещё чашка…
    Мой небольшой кусочек софта приобретал кристалльную чистоту,
    я смертельно устал, но продолжал в умилении полировать его зудящими руками, нанося последние штрихи
    Пять тысяч. Я получил производительность в пять тысяч запросов в секунду. В ту ночь я так и не смог заснуть.
    Наиувлекательнейший мир хай-лоада открылся передо мной. Позже я изучил ещё много классных вещей
    типа сверхбыстрых асинхронных key-value-хранилищ, или, например, такого необычного подхода к
    обработке данных, как map-reduce.
    Это уже был другой я, новый, обновлённый. С незашоренным взглядом, с жаждой новых знаний и
    незнакомых концепций.
    Я летел вперёд, оставляя за спиной ступень за ступенью.
    За пол-года я сменил несколько мест работы, и моя зарплата взлетела до умопомрачительных сумм.
    Сотни замечательных мест открыли передо мной свои двери. Любые, самые изысканные девушки
    проявляли просто чудеса изобретательности, чтобы находиться рядом со мной.
    А ещё, я никогда не забуду тот момент, когда на одной из конференций я впервые в жизни поймал на
    себе завистливый взгляд.
    Это был взгляд какого-то сливающегося с толпой неудачника, взгляд преисполненный ненависти,
    презрения и желчного вожделения, направленного на мой Олимп. Наверное, он всю свою никчёмную
    жизнь писал на каком-нибудь си-шарпе или там на джаве, проводя долгие дни в одиночестве.
    И теперь начинал подсознательно догадываться, что долгие годы безуспешно пытался
    построить замок из навоза.

    IKing, 30 Мая 2014

    Комментарии (74)
  3. PHP / Говнокод #12528

    +49

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    switch ( ! empty($rules['last_online']) )
    {
    			case '3days':
    				$where .= " AND last_online > NOW() - INTERVAL '3 DAYS' ";
    			break;
    
    			case 'week':
    				$where .= " AND last_online > NOW() - INTERVAL '7 DAYS' ";
    			break;
    
    			case 'month':
    				$where .= " AND last_online > NOW() - INTERVAL '1 MONTH' ";
    			break;
    }

    Внезапно сломался фильтр .... И такое найти можно. Впервые подобное вижу

    nobody, 01 Февраля 2013

    Комментарии (74)
  4. Си / Говнокод #12299

    +127

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    #include <stdio.h>
    
    int Sravn (int a, int b)
    {
    if (a=b)
    {return 1;}
    else 
    {return 0;}
    }
    
    int main()
    {
         int A[5]={1, 4, 7, 4, 4}, rez1, rez2, rez3, rez4, rez5;
         int i=0;
         rez1=Sravn(A[i], A[i+1])+Sravn(A[i], A[i+2])+Sravn(A[i], A[i+3])+Sravn(A[i], A[i+4]);
         rez2=Sravn(A[i+1], A[i])+Sravn(A[i+1], A[i+2])+Sravn(A[i+1], A[i+3])+Sravn(A[i+1], A[i+4]);
         rez3=Sravn(A[i+2], A[i])+Sravn(A[i+2], A[i+1])+Sravn(A[i+2], A[i+3])+Sravn(A[i+2], A[i+4]);
         rez4=Sravn(A[i+3], A[i])+Sravn(A[i+3], A[i+1])+Sravn(A[i+3], A[i+2])+Sravn(A[i+3], A[i+4]);
         rez5=Sravn(A[i+4], A[i])+Sravn(A[i+4], A[i+1])+Sravn(A[i+4], A[i+3])+Sravn(A[i+4], A[i+2]);
         if (rez1>rez2 && rez1>rez3 && rez1>rez4 && rez1>rez5)
         {printf ("/d", A[i]);}
         else if (rez2>rez1 && rez2>rez3 && rez2>rez4 && rez2>rez5)
         {printf ("/d", A[i+1]);}
         else if (rez3>rez2 && rez3>rez1 && rez3>rez4 && rez3>rez5)
         {printf ("/d", A[i+2]);}
         else if (rez4>rez2 && rez4>rez3 && rez4>rez1 && rez4>rez5)
         {printf ("/d", A[i+3]);}
         else if (rez5>rez2 && rez5>rez3 && rez5>rez1 && rez5>rez4)
         {printf ("/d", A[i+4]);}
         return 0;
         }

    Ищет в массиве наиболее часто повторяющийся элемент. Написано мною. Нифига не работает, но ошибок не выдает.

    MurMur, 16 Декабря 2012

    Комментарии (74)
  5. Си / Говнокод #12108

    +136

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    typedef char C;typedef long I;
    typedef struct a{I t,r,d[3],p[2];}*A;
    #define P printf
    #define R return
    #define V1(f) A f(w)A w;
    #define V2(f) A f(a,w)A a,w;
    #define DO(n,x) {I i=0,_n=(n);for(;i<_n;++i){x;}}
    I *ma(n){R(I*)malloc(n*4);}mv(d,s,n)I *d,*s;{DO(n,d[i]=s[i]);}
    tr(r,d)I *d;{I z=1;DO(r,z=z*d[i]);R z;}
    A ga(t,r,d)I *d;{A z=(A)ma(5+tr(r,d));z->t=t,z->r=r,mv(z->d,d,r);R z;}
    V1(iota){I n=*w->p;A z=ga(0,1,&n);DO(n,z->p[i]=i);R z;}
    V2(plus){I r=w->r,*d=w->d,n=tr(r,d);A z=ga(0,r,d);
     DO(n,z->p[i]=a->p[i]+w->p[i]);R z;}
    V2(from){I r=w->r-1,*d=w->d+1,n=tr(r,d);
     A z=ga(w->t,r,d);mv(z->p,w->p+(n**a->p),n);R z;}
    V1(box){A z=ga(1,0,0);*z->p=(I)w;R z;}
    V2(cat){I an=tr(a->r,a->d),wn=tr(w->r,w->d),n=an+wn;
     A z=ga(w->t,1,&n);mv(z->p,a->p,an);mv(z->p+an,w->p,wn);R z;}
    V2(find){}
    V2(rsh){I r=a->r?*a->d:1,n=tr(r,a->p),wn=tr(w->r,w->d);
     A z=ga(w->t,r,a->p);mv(z->p,w->p,wn=n>wn?wn:n);
     if(n-=wn)mv(z->p+wn,z->p,n);R z;}
    V1(sha){A z=ga(0,1,&w->r);mv(z->p,w->d,w->r);R z;}
    V1(id){R w;}V1(size){A z=ga(0,0,0);*z->p=w->r?*w->d:1;R z;}
    pi(i){P("%d ",i);}nl(){P("\n");}
    pr(w)A w;{I r=w->r,*d=w->d,n=tr(r,d);DO(r,pi(d[i]));nl();
     if(w->t)DO(n,P("< ");pr(w->p[i]))else DO(n,pi(w->p[i]));nl();}
    
    C vt[]="+{~<#,";
    A(*vd[])()={0,plus,from,find,0,rsh,cat},
     (*vm[])()={0,id,size,iota,box,sha,0};
    I st[26]; qp(a){R a>='a'&&a<='z';}qv(a){R a<'a';}
    A ex(e)I *e;{I a=*e;
     if(qp(a)){if(e[1]=='=')R st[a-'a']=ex(e+2);a= st[ a-'a'];}
     R qv(a)?(*vm[a])(ex(e+1)):e[1]?(*vd[e[1]])(a,ex(e+2)):(A)a;}
    noun(c){A z;if(c<'0'||c>'9')R 0;z=ga(0,0,0);*z->p=c-'0';R z;}
    verb(c){I i=0;for(;vt[i];)if(vt[i++]==c)R i;R 0;}
    I *wd(s)C *s;{I a,n=strlen(s),*e=ma(n+1);C c;
     DO(n,e[i]=(a=noun(c=s[i]))?a:(a=verb(c))?a:c);e[n]=0;R e;}
    
    main(){C s[99];while(gets(s))pr(ex(wd(s)));}

    http://www.kuro5hin.org/story/2002/8/30/175531/763

    Taken from Roger Hui's An Implementation of J.

    One summer weekend in 1989, Arthur Whitney visited Ken Iverson at Kiln Farm and produced — on one page and in one afternoon — an interpreter fragment on the AT&T 3B1 computer. I studied this interpreter for about a week for its organization and programming style; and on Sunday, August 27, 1989, at about four o'clock in the afternoon, wrote the first line of code that became the implementation described in this document.

    Arthur's one-page interpreter fragment is as follows:

    Read inside for the most beautiful code you have ever seen.

    bazhenovc, 12 Ноября 2012

    Комментарии (74)
  6. C++ / Говнокод #12095

    +17

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    #include <iostream>
     
    template< class Val >struct SwithClass
    {
        SwithClass( const Val & v ):val(v){}
        void operator() (){}
        template < class E, class F, class ... Args > void operator() ( E e, F f, Args ... args )
        {
           if( e==val )  f(); 
           else  (*this)( args... );
        }
    private:
        Val val;
    };
     
    template< class Val > SwithClass<Val> Swith( const Val& v ){  return SwithClass<Val>(v);}
     
    int main()
    {
        int x = 8;
        Swith( x )
        (
           1,  [](){  std::cout <<"x=1" << std::endl;  },
           8,  [](){  std::cout <<"x=8" << std::endl;  } 
        );
       return 0;
    }

    http://ideone.com/Xbj46U

    LispGovno, 11 Ноября 2012

    Комментарии (74)
  7. C++ / Говнокод #9152

    +993

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    void inline WriteXY(int X, int Y, byte szText, WORD fColor = 0x01F) {
    	DWORD cWritten;
    	COORD ptCoord = {X - 1, Y - 1};
    	gotoxy(X, Y);
    	cout << char(szText);
    	cout.flush();
    	FillConsoleOutputAttribute(hStdOut, fColor, 1, ptCoord, &cWritten);
    	return;
    }
    
    void inline WriteXY(int X, int Y, string szText, WORD fColor = 0x01F) {
    	DWORD cWritten;
    	COORD ptCoord = {X - 1, Y - 1};
    	gotoxy(X, Y);
    	cout << szText.c_str();
    	cout.flush();
    	FillConsoleOutputAttribute(hStdOut, fColor, strlen(szText.c_str()), ptCoord, &cWritten);
    	return;
    }

    Функция и её прототип

    FalseCoder, 17 Января 2012

    Комментарии (74)
  8. C++ / Говнокод #8276

    +997

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    list<int> l;
    //...
    for(int i=0;i<l.size();++i)
    {
     auto it=l.begin();
     advance(it, i);
     int item=*it;
     //...

    AnimeGovno-_-, 22 Октября 2011

    Комментарии (74)
  9. Java / Говнокод #7897

    +82

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    /**
         * метод возвращает int-овое смещение тайм-зоны
         */
        
        public long getIntOffset() {
    
            if (timeZone == null) {
                return 0;
            }
            return timeZone.getOffset(System.currentTimeMillis());
            Calendar now = Calendar.getInstance();
            int millisPerDay = 
                now.get(Calendar.HOUR) * ONE_HOUR + 
                now.get(Calendar.MINUTE) * ONE_MINUTE +
                now.get(Calendar.SECOND) * ONE_SECOND;
            int offset = timeZone.getOffset(
                    now.get(Calendar.ERA), 
                    now.get(Calendar.YEAR), 
                    now.get(Calendar.MONTH),
                    now.get(Calendar.DAY_OF_MONTH), 
                    now.get(Calendar.DAY_OF_WEEK), 
                    millisPerDay
                );
            int diff = now.get(Calendar.ZONE_OFFSET);
            boolean isNegative = (offset < 0);
            long intOffset = Math.abs(offset) - Math.abs(diff);
            //todo здесь наверное как-то по-лучше можно выделить часы 
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
            String time = sdf.format(new Date(intOffset));
            Date d;
            try {
                d = sdf.parse(time);
            } catch (ParseException e) {
                d=null;
            }
            if (d!=null)
                return (isNegative?-1:1) * d.getHours()*3600000;
            else 
                return 0;
        }

    Этот "шедевр" был написан не индусами, а суровыми программистами Новосиба ;) Это чудо долго работало, вплоть до обновления tzdata на 2011. Придется удалить, а жаль...

    karamba, 19 Сентября 2011

    Комментарии (74)
  10. Си / Говнокод #4018

    +135

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
       static int val = 1;
       while(val /* vanish */ --> 0)
       {
          (++ /* do black magic ! */  val) /* very black magic !!! */ ++;
          (val == 2 ? printf("WTF ??!") : val =- 1);
       }
     
       if(val<-15)
               return ((1<0?/* magic */100500:500?233?33?321?2223?0:0:0:0:0:0));
     
       return ((!!val==!!false)?val ==- 100500?5:1:main());
    }

    Из разряда синтаксиса языка

    ForEveR, 17 Августа 2010

    Комментарии (74)
  11. Си / Говнокод #27962

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    union bitdata {
        struct {
          unsigned int bit1 : 1;
          unsigned int bit2 : 1;
          unsigned int bit3 : 1;
          unsigned int bit4 : 1;
          unsigned int bit5 : 1;
          unsigned int bit6 : 1;
          unsigned int bit7 : 1;
          unsigned int bit8 : 1;
        };
        unsigned char byte;
      } first_byte, second_byte;
    
    <...>
    
    for ( j = 0; j < bytes_count; j++ ) {
          unsigned char t;
    
          ret = gzread( gz_fd, &t, sizeof( t ) );
          if ( ret != sizeof( t ) ) {
        printf( "Failed to read file %s: %s\n", argv[i], strerror( errno ) );
        gzclose( gz_fd );
        return EXIT_FAILURE;
          }
    
          first_byte.byte  = t;
          second_byte.byte = ready_bytes[j];
    
          first_byte.bit1 = first_byte.bit1 == 0 && second_byte.bit1 == 0 ? 0 : 1;
          first_byte.bit2 = first_byte.bit2 == 0 && second_byte.bit2 == 0 ? 0 : 1;
          first_byte.bit3 = first_byte.bit3 == 0 && second_byte.bit3 == 0 ? 0 : 1;
          first_byte.bit4 = first_byte.bit4 == 0 && second_byte.bit4 == 0 ? 0 : 1;
          first_byte.bit5 = first_byte.bit5 == 0 && second_byte.bit5 == 0 ? 0 : 1;
          first_byte.bit6 = first_byte.bit6 == 0 && second_byte.bit6 == 0 ? 0 : 1;
          first_byte.bit7 = first_byte.bit7 == 0 && second_byte.bit7 == 0 ? 0 : 1;
          first_byte.bit8 = first_byte.bit8 == 0 && second_byte.bit8 == 0 ? 0 : 1;
    
          ready_bytes[j] = first_byte.byte;
        }

    Всё еще не можем понять, зачем в конце тернарник. Всё остальное уже не смущает.

    codemeow, 21 Января 2022

    Комментарии (73)