1. C++ / Говнокод #12857

    +19

    1. 1
    2. 2
    3. 3
    4. 4
    #include <iostream.h>
    #define TRUE 1
    #define FALSE 0
    typedef int Boolean;

    Запостил: vortexx1, 06 Апреля 2013

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

    • > iostream.h
      Код со времен доса, борманд с++ и синеньких окошек?
      Ответить
      • Я такого вообще не знаю, что когда-то он был с .h
        Ответить
        • $ cat gk.cxx
          #include <iostream.h>
          
          int main () {
          	std::cout << "LOL" << std::endl;
          }
          $ g++ gk.cxx
          In file included from /usr/include/c++/4.2.1/backward/iostream.h:31,
                           from gk.cxx:1:
          /usr/include/c++/4.2.1/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
          $ ./a.out
          LOL

          Они и сейчас есть.
          ЗЫ:
          $ gcc --version
          i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
          Copyright (C) 2007 Free Software Foundation, Inc.
          This is free software; see the source for copying conditions.  There is NO
          warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
          Ответить
          • Гцц старый у тебя.
            Ответить
            • Кто старый?
              ГЦЦ 3 - зи бест!
              Ответить
              • телл ми моар
                гцц 3 медленное уебищное говно с навечно неисправленными багами
                Ответить
                • Мне кажется, тройка в этом сообщении лишняя
                  Ответить
                  • Да это вообще ко всем компиляторам С++ применимо. И вообще ко всему, что связано с С++.
                    Ответить
                    • Скорее, ко всему софту в целом.
                      Ответить
                      • Это из-за крестов всё. И из-за сишки.
                        До 70го года, чёрного года, когда изобрели это сраное Си, количество говнокода в мире было несоизмеримо меньше, чем сейчас.
                        Ответить
                        • До 70го года количество какого-либо кода вообще было несоизмеримо меньше, чем сейчас. Если бы не Пророки, сидели бы и дописывали сейчас блокнот на непереносимом диалекте паскаля.
                          Ответить
                          • Нет, Ада - переносимая.
                            Ответить
                            • Неправда. Никогда перенести не мог.
                              Ответить
                          • Ну кто на Паскале, а кто на Лиспе. Я б не жаловался.
                            Ответить
                            • Не всё на свете можно написать на лиспе. Управляемые среды - это хорошо, но их и операционные системы в догонку нужно написать на чём-то эффективном и работающим в терминах конечной машины.
                              Ответить
                              • Ну так это не какая-то теоретически неразрешимая задача. Просто люди писали без оглядки на производительность, веря в то, что она будет расти очень быстро, и в то, что компиляторы будут умнеть гораздо быстрее, чем получилось на практике. А когда спохватились - оказалось, что поздно.
                                Судя по воспоминаниям очевидцев было очень много расстройства когда жизненно важные контракты были безвозвратно перенесены на Си. Чуть ли не на столько, что "уходили в монастырь" - ну, в смысле, люди бросали программирование, и начинали заниматься либо администраторской работой, либо грядки возле дома окапывать.
                                Я, так случайно получилось, знаю человека, который учавствовал в разработке и последующем отказе от Дилана. С его слов - очень мало кто после этого проекта продолжил работать в той же области. Кстати, он сына Диланом назвал.

                                В смысле, переход на Си был для многих трагедией всей жизни, т.как иначе как недоразумением они это даже назвать не могли.
                                Ответить
                                • действительно недоразумение, ведь на сишке и подобном синтаксисе построены и остальные ненужные языки - c++, objc, java, c#, js, as, все они занимают ничтожную часть рынка, доказавшую полную бесполезность фигурных скобок

                                  другое дело - круглые скобки, их удобство столь велико и распространение столь повсеместно, что просто не оставляет никакого шанса даже не менее удобным языкам с великолепными begin/end
                                  Ответить
                                  • Часть рынка стала такой, какой стала не потому, что языки такие замечательные. Тривиальная бюрократия, которая управлялась не программистами, а людьми не способными видеть дальше своего носа. Увидели более дешевый и более развитый компилятор - не важно, что к нему в довесок шел плохой язык. Кому-то нужно было отчитаться перед начальстов об внесенных улучшениях. Так оно и началось.
                                    Собственно, история началась с НАСА, где решили перейти с Лиспа на С, и впоследствии, на С++. И это послужило ориентиром множеству других компаний.

                                    Ну и такая ситуация - это вообще типичный процесс в человеческом обществе, в любом начинании всегда есть небольшая группа энтузиастов, которые хорошо знают свою работу, и есть гораздо больше второсортных рабочих и второсортной продукции. С++ в этом смысле занимает нишу ширпотреба. И, как бы в этом нет ничего предосудительного. Просто не нужно претендовать на какие-то высокие стандарты, которых там отродясь не было и быть не может. Это примерно как сравнивать производство телерекламмы с авторским кино. Авторское кино делается единицами, дохода не приносит, в отличие от рекламы. И тем не менее, реклама не развивает жанр, там не случается ничего интересного. Но, для кого-то реклама заменяет кино - вот тогда с этим что-то нужно делать.
                                    Ответить
                                    • > всегда есть небольшая группа энтузиастов, которые хорошо знают свою работу, и есть гораздо больше второсортных рабочих и второсортной продукции

                                      И Вы, разумеется, относитесь к первым?
                                      Ответить
                                      • Если бы я относился к первым, то скорее всего либо уже умер, либо мне так много лет было бы, что я бы уже не помнил, как оно все происходило :) Кроме того, с практически стопроцентой вероятностью, я бы не говорил по-русски, вообще.
                                        Я просто любитель, которому до лампочки требования промышленности и сколько за что платят. Мне нет необходимости любить самый популярный язык, или язык на котом написано больше всего библиотек. Я могу спокойно взять книжку про язык и потратить на ее прочтение, столько времени, сколько мне захочется - ни дедлайнов, ни сурового начальства. Я думаю, что в этом плане, я в лучшем положении чем большинство программистов работающих в промышленности.
                                        Ответить
                                        • > Я могу спокойно взять книжку про язык и потратить на ее прочтение, столько времени, сколько мне захочется

                                          Я работаю в промышленности, но вполне могу позволить себе читать любые книги. Даже по несколько раз.
                                          Ответить
                                          • Можете, но почему-то либо не делаете, либо не помогает.
                                            Это можно сравнить (с огромным преувеличением) с Винцентом ван Гогом и Густавом Климтом. Они более-менее современники, и есть определенное сходство в том, чего они пытались добиться, но Климт - академик, который большую часть своего "творчества" сделал на заказ. С технической точки зрения он был хорошим знатоком своего дела. Но как художник - пустое место. Ван Гог - любитель, который вобщем-то в привычном смысле слова "не умел рисовать", но у него было преимущество в том, что он не был отягощен "знаниями" из академии. Как выяснилось врезультате, эти знания все равно ничего не стоили, но изза них было сложно применить те полезные вещи, которые до этого описал Делакруа.
                                            Вообще, если посмотреть на историю изобразительного исскуства, то было черезвычайно мало людей, которые были одновременно хорошими художниками, и хорошими мастерами. Возможно, Рембарндт ван Рейн... конечно, Тициан, Веласкез (ок, более-менее, но там поди знай, кто именно рисовал, подмастерьев было очень много). А кроме этого - так даже тяжело кого-то еще вспомнить.
                                            Ответить
                                            • Да вы еще и в изобразительном искусстве эксперт.
                                              Ответить
                                              • Даже задипломированый. Выставки, награды, все такое.
                                                Ответить
                                              • > в изобразительном искусстве эксперт

                                                Bezalel Academy of Art and Design, это вам не мехмат какой-нибудь.
                                                Ответить
                                            • wvxvw, дай ссылку на свой блог с кулсторями
                                              Ответить
                                            • > Можете, но почему-то либо не делаете, либо не помогает
                                              > то можно сравнить... с Винцентом ван Гогом и Густавом Климтом

                                              Что-то я запутался, с кем меня ассоциируют: со знающим и умелым, но "бездарным" писакой или талантливым психом, не отягощённым высокими науками?
                                              Ответить
                                              • С бездарным :) Ну, чтобы не так обидно было: знания есть, и больше, чем у меня, например, а выводы из этих знаний - плохие. В часнотсти потому, что часть выводов основана не на знаниях, а убеждениях, которые, вобщем-то с программированием не связаны, а, скорее, реторика, психология и т.д. Если бы мне нужно было принимать такое решение: я бы вам доверил реализацию сложной задачи, но ни за что бы не доверил изобретение, или исследование даже тривиального вопроса.

                                                Блог есть... вернее был, т.как давно туда ничего не писал. Но там и интересного не много...
                                                Ответить
                                                • > часть выводов основана не на знаниях, а убеждениях, которые, вобщем-то с программированием не связаны

                                                  Меньше всего ожидал услышать это от вас.

                                                  > исследование даже тривиального вопроса

                                                  По счастливой случайности на текущем месте работы я занимаюсь как раз исследованиями и изобретением всяких необычных штук, призванных упростить, ускорить, etc. Пока все весьма довольны.
                                                  Ответить
                                                  • Ну, мало ли, я так много делал в жизни вещей, которые кто-то другой мог бы сделать лучше, и к которым у меня вообще таланта нет... Я даже бальные танцы глухонемым преподавал. И это совсем не сделало меня даже сносным танцором :)
                                                    Ответить
                                            • > Ван Гог - любитель, который вобщем-то в привычном смысле слова "не умел рисовать", но у него было преимущество в том, что он не был отягощен "знаниями" из академии
                                              А в Академии художеств в Брюсселе (1880—1881) и Антверпене (1885—1886) он просто так штаны просиживал, что ли?
                                              У него были вполне академические работы, до того как он окончательно обратился к «любительскому» постимпрессионизму.
                                              Ответить
                                              • Да, более-менее, штаны происживал. Он пошел учиться поздно, и не особо преуспел на академическом поприще. Я был в его музее на его родине и видел его академические работы - ну, как бы... так себе / ничего интересного. Кроме того, если вы не заметили, обучение в академии, это, как правило, пять или больше лет. Один год - это значит, что он бросил учебу / его выгнали. Подробностей я не знаю.
                                                Ответить
                                • Хлюпики.
                                  Бетховен писал свои лучшие работы уже будучи глухим.
                                  Ответить
                                  • >Бетховен писал свои лучшие работы уже будучи глухим.
                                    Именно потому, что писал он их не на си.
                                    p.s. но си использовал конечно.
                                    Ответить
                                    • Спорить с зелёным текстом, написаным чёрным шрифтом, смысла мало, но некая аналогия есть - он лишился важного инструмента, который облегчал его работу и это искалечило его жизнь и характер.
                                      Ответить
                                      • А мне нравятся кулстори wvxvw. Он хоть и против всех и не высказывает общепризнаную версию, но философ и часто бывает прав о чем молчат другие.
                                        Ответить
                                        • Присоединяюсь. Подавляющее большинство гениальных вещей вселенной не рождаются в абсолютном порядке, их маленькие росточки прорастают из хаоса.
                                          Ответить
                                    • B, C, C#, D, E, F# он тоже иcпользовал
                                      Ответить
    • Олдскул же!
      Ответить
    • Требую
      #define TRUE (-1)

      !
      Ответить
      • и
        #define FALSE (!TRUE)
        Ответить
        • Тогда уж
          #define FALSE (0)
          #define TRUE (~(FALSE))
          Ответить
          • И тут у нас опять возникает 10 несовместимых булеанов.
            Ответить
            • Больше булеанов, на каждый случай жизни!
              Ответить
            • Кстати, в ObjC, емнип, всего лишь три булеана. Где остальные семь???семьсесьдесятсемь
              Ответить
              • Четыре.
                bool
                BOOL
                boolean
                bool_t

                А вот версии с -1 там нет.
                Ответить
                • Про bool_t как-то забыл. А вот по поводу отсутствия (-1) им вечный позор.
                  Ответить
                  • Знаете.. И нафиг. Меньше граблей. А то будет потом: NO == no // NO
                    Ответить
                • > А вот версии с -1 там нет.

                  Тогда уже null, нежели (-1).
                  С принятием bool є {null;0;1} начнется век троичной цивилизации.
                  Ответить
                  • Вы вообще о чём? nil и подобные - это обозначение нулевого указателя, и все они равны 0.
                    Ответить
                    • Ну в том же информиксе null в интах это число Тараса (0x80000000). Так что далеко не всегда null это 0.
                      Ответить
                      • Информиксопроблемы
                        NULL, nil, Null, == 0х00000000 по определению.
                        Ответить
                        • лолчто? NULL есть ((void*)0).
                          Стандарт не гарантирует, что в двоичном представлении нулевой указатель состоит из одних лишь нулей.
                          Ответить
                          • У них просто разные типы, значение в памяти одинаковое, не придирайтесь.
                            nil, это нулевой указатель на класс, если я не ошибаюсь, NULL, то, что вы написали, а Null - не помню уже, пользоваться не приходилось.
                            И из ((void*)0) ничего, кроме нуля получиться не может
                            *пошёл искать описание в стандарте*
                            Ответить
                          • А, и стоит уточнить, что речь шла об Obj-C изначально, который больше C, чем C++.
                            Мне какой стандарт искать?
                            Ответить
                            • C89: NULL which expands to an implementation-defined null pointer constant.
                              Obj-C полностью содержит сишку как подмножество, и это подмножество должно соответствовать соответствующему стандарту.
                              Ответить
                          • > NULL есть ((void*)0).
                            лолчто? В С++ (не в си) #define NULL 0
                            Ответить
                    • Я про http://ru.wikipedia.org/wiki/Троичный_разряд

                      Среди прочего, значения троичного разряда:
                      false null true
                      false unknown true
                      false Fail true
                      Ответить
            • xkcd-у-нас-есть-тринадцать-несовместимых-стандартов.jpg
              Ответить
              • http://xkcd.com/927/
                Ответить
                • Спасибо тебе, человек-гугол.
                  Ответить
                  • >>человек-гугол
                    >>человек
                    Всегда пожалуйста, человек-сетевой интерфейс, валидных тебе аргументов ifconfig.
                    Ответить
    • #define FATE 2
      Ответить
    • #include <stdbool.h>


      Fixed?
      Ответить
    • Кстати, у меня одного в stdbool.h:
      ...
      #define bool bool
      #define false false
      #define true true
      ...
      ???
      Ответить
      • Защита от передефайнивания видимо. Чтобы левые либы не добавляли свой дефайн, не увидев подобного.
        #ifndef false
        #define false 0
        #endif
        Ответить
      • показать все, что скрытобул-бул
        в переводе с казахского - соловей
        простите, просто в Казахстане живу
        Ответить
    • Кокошник явно писал.
      Ответить

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