1. Си / Говнокод #11398

    +113

    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
    #include <stdio.h>
     
    int main()
    {
            void say_hello()
            {
                    puts("Hello govnokod!");
            }
     
            say_hello();
    
    	return 0;
    }

    http://ideone.com/QZipp

    Запостил: rat4, 11 Июля 2012

    Комментарии (78) RSS

    • summon @TarasB
      Ответить
      • С каких пор это работает?
        Ответить
        • > С каких пор это работает?
          Саммон Тараса? Ну видимо с тех пор, как Тарас зарегистрировался тут.
          Ответить
          • Представляю себе фичу: при посте коммента summon @username на почту юзеру приходит письмо:
            $username, собирай манатки!
            Тебя вызывают в тред #11398!
            Явка обязательна!
            Ответить
            • Реквестирую такую возможность в новом ГК. Если на него еще не забили...
              Ответить
              • Воображение рисует приаттаченную к письму картинку с изображением "мистера говяшки" в позе дяди сэма и надписью "I want you for the thread #11398!"
                Ответить
            • summon @guest

              И пусть отправляется письмо всем гуестам.

              Т.к. их почта неизвестна пусть отправляется вообще всей планете.
              Ответить
        • Как минимум с March 16, 2001 gcc-2.95.3
          Более старых манов не нашёл
          Ответить
          • А чё в кресты не могли добавить, так трудно штоле? И с автоматическим добавлением неявного параметра - указателя на стек внешней функции.
            Ответить
            • Сишечка это может:
              http://ideone.com/HO9SY
              offset - переменная, захваченная локальной функцией из окружения.
              Ответить
              • А, сама захватывает окружение?
                Круто, полноценная локальная функция наконец-то.
                Или очередной гэцэцизм?
                Ответить
                • > Круто, полноценная локальная функция наконец-то.
                  Да, полноценная.

                  > Или очередной гэцэцизм?
                  Да, к сожалению, очередной гэцецизм.
                  Ответить
    • GCCизм.
      Ответить
      • Причем даже не G++изм: Nested functions are not supported for GNU C++.
        Ответить
    • даже сраная сишка лучше крестоговна
      Ответить
      • собственно становится ясно, что "++" это не инкремент, а могильные кресты языка
        Ответить
        • да, крестоблядские кресты сдохли еще когда SGI пыжились и натужно пилили на этом убожестве глючные библиотеки, в конце концов неверный выбор языка утянул их на дно, впрочем, и не жалко
          я вообще удивляюсь как до сих пор какие-то недалёкие маргиналы пинают его вонючий труп, ставят винтажные 2003 студии, которые текут и падают, вместо того, чтобы писать быстрые и производительные программы, скажем, на Делфи или Ада
          вот многие малораспространенные и экзотические языки, тот же С, берут пример со старших братьев и в 2012 году наконец вводят локальные функции
          Ответить
          • Шутки шутками, а впопулярность крестов - действительно проблема для всей ИТ-индустрии.
            Ответить
        • Зачем ему два креста?

          А да. На одном его распнут, а другой на могиле поставят.
          Ответить
          • Можно было бы оставить один крест и для распятия и для могилы, но крестошаблоны не могут одновременно работать и на статику, и на динамику.
            Ответить
            • А может второй - это костыль чтоб первый не упал?
              Ответить
    • http://ideone.com/s1oPS
      Ответить
    • http://ideone.com/c68dJ
      #include <stdio.h>
      int main(void){ printf ("%s!\n", ({a:; "hell o govnokod"; })); goto a; }
      Ответить
      • Ну вот документацию по блокам внутри выражений я нашел:
        http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Statement-Exprs.html#Statement%20Exprs
        Но какого ж хрена в них работают метки...
        Ответить
        • Это для создания более или менее безопасных макросов, что-то типа такого:
          #define max(a,b) \
                 ({decltype(a) _a = (a); decltype(b) _b = (b); _a > _b ? _a : _b; })

          И эти переменные _a и _b не будут конфликтовать с другими.
          Ответить
          • Ну я понял назначение этого расширения. Я не понял какого хрена там работают метки...
            Ответить
            • А блок, возвращающий значение, может работать в составе оператора switch?
              int foo = ({switch(bar)
              {
              case 0 : 1; break;
              case 1 : 4; break;
              default : 9; break;
              }});
              Ответить
              • У свечки свой скоуп, значения надо сохранять во внешней и как-то возвращать.
                Вариант такой: http://ideone.com/KcUKb
                Ответить
                • foo : integer := (case bar is when 0 => 1, when 1 => 4, when others => 9);

                  На ideone не покажу, там походу ada2012 не поддерживается.
                  Ответить
                  • По-моему 'is when' излишне — что-то одно.
                    Ябоставил 'when', тогда читаем: для случаев 'bar', когда 0 возвращаем 1, когда 1 возвращаем 4...во всех остальных 9
                    Ответить
                    • Ну и вместо when others я бы поставил otherwise.
                      Ответить
                      • Не забывай, что в Аде можно в метки ставить диапазоны и перечисления. others - это такое перечисление, например.
                        Ответить
                        • Т.е. others в данном примере это некая константа-перечисление, а не ключевое слово "для всех остальных"? Если да, то для "все остальные" используется другое слово?
                          Ответить
                          • оно означает "остальные", перечисляя все остальные значения типа
                            посмотри на ровный столбик when и пойми, почему так
                            Ответить
                        • >Не забывай, что в Аде можно в метки ставить диапазоны и перечисления
                          Вы так говорите, как будто в крестах так нельзя:
                          http://ideone.com/s8Btt
                          switch(i)
                                  {
                                          case 1 ... 3: cout<<123<<endl; break;
                                          default: cout<<"other"<<endl;
                                  }
                          Ответить
                          • ЧТО? ГДЕ? КОГДА?
                            Ответить
                          • Да у вас же GCCизм
                            Ответить
                            • Это там не по-стандарту запилили или это ещё один отличный пункт C++11?
                              Ответить
                              • Очередное расширение GCC:
                                http://gcc.gnu.org/onlinedocs/gcc/Case-Ranges.html#Case-Ranges

                                P.S. Be careful: Write spaces around the ..., for otherwise it may be parsed wrong when you use it with integer values.
                                Ответить
                    • is это символ конца заголовка блока
                      when ставится перед метками
                      foo : integer := (
                        case bar is
                          when 0      => 1, 
                          when 1      => 4, 
                          when others => 9
                      );

                      Так понятнее, почему такой синтаксис?
                      Ответить
                      • Вон оно чего.
                        Да же так, при чтении создаётся ощущение некой многословности - наверно субъективное.
                        Ответить
                        • Ну знает, is после case это то же, что и then после if, или do после while. В сишке вот нет слов, означающих конец условия, так приходится снаружи лишние скобки ставить, а они видны хуже, чем подсвеченное ключевое слово.
                          Ответить
                          • Вопрос привычки.
                            Ответить
                            • Что закорючки видны хуже, чем жирное зелёное ключевое слово?
                              Ответить
                              • Нет. Привыкаешь к "закарлючкам", к лаконичности.
                                Ответить
                                • Ага, человек привыкает ко всему.
                                  Я где-то говорил, как поразился лёгкости восприятия исходников адских библиотек, но набежали крестобляди и заминусовали - ну да, миллионы крестухов не могут ошибаться же!
                                  Ответить
                                  • В общем вопрос сводится к другому:
                                    1) «Насколько вы, как программист, зависимы от своих привычек?»
                                    2) «Можете ли вы, при объективной необходимости, выявить, переосмыслить и может быть даже отказаться от них?»
                                    3) «Можете ли вы вырабатывать, хотя бы для себя, более эффективные привычки?»

                                    И не надо забывать, кто на чём начинал, тот к тому и привык.
                                    Ответить
                                    • Если кратко: Кто кем управляет? Вы своими привычками или они вами?
                                      Ответить
                                    • Если абстрагироваться от привычек, то остаётся вопрос: почему дельфины привыкли к 2-пробельным отступами, а сишники привыкнуть к ним не смогли и ушли с них?
                                      Ответить
                                      • 1) Не смогли и не захотели — не одно и тоже.
                                        2) Кто такие «сишники»? Имена, фамилии, адреса, явки? У них и спросим «Почему?»
                                        Ответить
                                        • Хорошо, почему дельфины захотели, а сишники - нет? Видимо, потому, что блоки, выделенные {}, нормально читаются только с 4 отступами и выше, в отличие от блоков, выделенных if end или while end.
                                          Ответить
                                          • Кому нормально? Мне нормально читаются и с 2-мя и 4-мя и 8-ю отступами.
                                            Лишь бы код был осмысленный. Есть требования проекта, а есть ваши личные предпочтения...
                                            И да, обратите внимание на книгу http://www.ozon.ru/context/detail/id/928388/
                                            Ответить
                                          • Тарас всё борется за скобочки и отступы... В современном мире главное - инфраструктура.
                                            К примеру, я считаю синтаксис Erlang крайне неудачным. Но возможности его рантайма меня очень привлекают.
                                            Ответить
                                            • > В современном мире главное - инфраструктура.

                                              Вот в этом я действительно всё больше и больше убеждаюсь. Удобство и безотказность среды часто важнее всех фишек языка.
                                              Да и если писать не на чем, кроме крестов и жабы, то приходится брать кресты. Только вот дерьмо, ну какого хуя именно убогие кресты первые пролазят на новые платформы? Даже не в языке проблем больше, а в неадекватном порядке компиляции, пришедшем из 70х.
                                              Ответить
                                              • > убогие кресты

                                                Одни заголовочные файлы чего стоят...
                                                Ответить
                                              • >> В современном мире главное - инфраструктура.

                                                >>Удобство и безотказность среды часто важнее всех фишек языка.

                                                Поцоны, вы чего? Ересь какая - cвистелки и перделки IDE важнее языка!
                                                Хотя Тараса, как пользователя Багланда говносреда наверное уже просто достала.
                                                Ответить
                                                • Дельфи - самая нормальная среда из всех, что я знаю. И язык за счёт адекватной модульности выручает.
                                                  Ответить
                                                  • >Дельфи - самая нормальная среда из всех, что я знаю.
                                                    Насмешил. Надеюсь это сказано не на полном серъезе.
                                                    Ответить
                                                    • Она единственная подерживает концепцию "вот тебе один файл с текстом, сделай мне екзешник, и не еби мозги всякими мейкфайлами, именами объектных файлов, манифестами и прочей хернёй". Причём делает она этот самый екзешник за секунды.
                                                      Ответить
                                                      • >вот тебе один файл с текстом, сделай мне екзешник
                                                        И положи туда, пожалуйста, если тебе конечно не трудно, быдлоVCL.

                                                        >и не еби мозги всякими мейкфайлами, именами объектных файлов, манифестами и прочей хернёй

                                                        Чтобы я потом не ебал мозги с переносом моей программы на другие машины или платформы.

                                                        >Она единственная подерживает концепцию
                                                        Да. А как же она, одна единственная моя. Это просто слишком узкий кругозор. Тот же мелкософтовский аналог - VB - тоже не YOBEт мозги мейкфайлами, и именами объектных файлов.
                                                        Ответить
                                                • > Ересь какая - cвистелки и перделки IDE важнее языка

                                                  Какие ещё свистелки IDE? я говорю об оптимизирующих компиляторах, отлаженных сборщиках мусора и JIT'ах, инструментах сборки, библиотеках, документации, специалистах, etc.
                                                  Ответить
                                                  • >>>Какие ещё свистелки IDE?

                                                    TarasB says 23 hours ago:
                                                    Удобство и безотказность среды часто важнее всех фишек языка.
                                                    Ответить
                                                    • > 23 hours ago

                                                      Анонимус не забывает...
                                                      Ответить
                                              • >почему дельфины привыкли к 2-пробельным отступами
                                                Потому что дельфины!

                                                >а сишники привыкнуть к ним не смогли и ушли с них?
                                                Они никогда и не пытались к ним привыкнуть. K&R style был изначально.
                                                Ответить
                                              • Между прочим это ответ и на другой вопрос:
                                                >ну какого хуя именно убогие кресты первые пролазят на новые платформы?

                                                И вот почему же супер-прогрессивный ботланд-паскаль написанный сам на себе так никуда больше не портировали?
                                                Наверное дабы сохранить максимальную его ориентированость на быдлоаудиторию - не хотим слышать ни о каких манифестах, дескрипторах развертывания, мейкерах с их зависимостями.

                                                Просто хочу чтобы формочка с кнопками сразу открывалась у меня на компе.
                                                Ответить
                                                • Паскаль от этого конечно очень плохим языком стал.

                                                  Вирта пожалейте.
                                                  Ответить
                                                  • Речь о поделии из говна и костылей: ботланд-обджект-паскале под кодовым именем: "дельфи".
                                                    А FreePascal само собой - православен.
                                                    Ответить
                                          • У меня вот лично от двухпробельных отступов что в паскале, что в си глаза устают ;(
                                            Ответить
                                            • Ада говно, потому что код с однобайтовыми отступами плохо читается.
                                              Ответить
                                              • Кресты говно, потому что в них однобайтовые отступы ещё хуже читаются, и это подтвердается статистикой, а не тролловысером.
                                                Ответить
                    • >По-моему 'is when' излишне — что-то одно.
                      Думаю в аде можно так:
                      foo : integer := case bar is when 0 => 1, when 1 => 4, when others => 9; и поэтому is необходим. Тоесть это как замена скобок.
                      Ответить
    • До кучи:
      http://stackoverflow.com/questions/11448436/static-function-declaration-inside-a-block
      static function declaration inside a block

      Q: A tutorial said You cannot declare functions within a block as static.
      What is the reason?How does it affect the function?

      A: static when applied to functions means that the function has
      internal linkage. i.e. it can be accessed within this file only.
      In other words it has file-scope. This linkage applies irrespective
      of whether you declare a function inside another function or outside
      of all of them.
      Now, if you apply the static keyword to a function declaration inside
      another block/function, semantically speaking, you are trying to restrict
      the scope of the function to that particular block/function, which goes
      against the language rules that state that static functions, irrespective
      of their place of declaration, shall have file-scope.
      And hence, the standard might be prohibiting such a declaration.
      Ответить

    Добавить комментарий