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

    +152

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    class ListEl{
    public:
    int val;
    ListEl *head;
    ListEl *tail;
    }
    
    class MyList{
    public:
    ListEl *head, *tail;

    Запостил: Rohanion, 03 Января 2011

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

    • Ичо?

      Первая лаба по указателям?
      Ответить
      • Угу.
        Ответить
        • Дак и чо ей тут делать-то? Это не сайт labacpp.ru - это говнокод!

          Где говнокод?
          Ответить
          • Извиняюсь, забыл комментарий добавить. Это так студент попытался реализовать линейный однонаправленный список.
            Ответить
            • хули плюсуют?
              заебали говнолабы
              Ответить
              • Вспомните корни.
                Когда-то Вы были таким же.
                Ответить
                • Давайте ещё вспомним время когда говно было не в лабах, а в штанах.
                  Ответить
                  • Хорошее было время. :)
                    Или я не прав? Понастальгируйте со мной. :)
                    Ответить
                    • >заебали говнолабы
                      Если для Вас это было ещё совсем недавно и Вы всё ещё студент\школьник, то лабы, действительно, достают... Настальгировать Вам пока рано...
                      Ответить
                      • точно!

                        только вчера сдал лабу на визуал бейсике.
                        cплошная копипаста хелпов.
                        Ответить
                    • Ненавижу детство.
                      Ничего нельзя, всё страшно.
                      Ответить
                      • Тяжёлое детство...
                        Компренда, этож не Вы, да?
                        Ответить
                      • >Ненавижу детство.
                        Взрослейте и всё будет хорошо. :)
                        Ответить
                    • не прав ибо я мало чего помню из дества, а это значит, что оно было так-себе, без ярких моментов
                      Ответить
                      • Это особенности Вашего детства.
                        Тут я бессилен помочь. :(
                        Ответить
                      • >я мало чего помню из дества
                        Тоже было тяжёлое?
                        Всё что тяжёло для психики человека - он старается забыть.
                        Ответить
    • говнокод всеж тут есть:
      ListEl *head, *tail;
      а немного выше:
      ListEl *head;
      ListEl *tail;


      потом если ещё подумать, то видно, что:
      int val;
      - значение, ради которых заводился весь список, а значит
      ListEl *head;
      здесь не нужен
      Ответить
      • показать все, что скрытота ну... Хед - указатель на себя... как же без него можно будет построить структуру:

        ((((((((((x->head)->head)->head)->head)->head)->head)->head)->head)->head)->head)->head)->val = 1;

        прикинь как с такой фичей можно над препом поглумиться (если преп не особо разумный) ?))
        -----------------

        а вообще, похоже на попытку реализации двунаправленного списка (ну только вот имена переменных малёха подкачали)

        |head|  <-- |this| -----> |tail|
            \-- val     \-- val     \-- val
        Ответить
        • >Хед - указатель на себя...
          из кода этого не видно
          нет присвоений типа:
          head=this
          не будем додумывать то, чего нет
          Ответить
        • хех, неужели не известно народу такое штуко как сарказм ? :)
          ну да ладно
          Ответить
    • показать все, что скрытоДа вообще я бы такие вещи делал через просто указатели (не классы), но указатели бы все скрыл внутри реализации, наружу бы оставил только обёртку-объект, которая в автовызываемом деструкторе сама уничтожает всю структуру. Будет надёжно и без утечек (если внутри реализации не слажать).
      Ответить
      • >в автовызываемом деструкторе
        :D
        Ответить
        • В этом вся фишка объектов в С++. В дельфе хочу такую же.
          Ответить
          • ах вот почему ты вспомнил, что деструкторы бывают кривыми... ты ж на дельфи программируешь
            сорри
            Ответить
            • Говорят, в Delphi 2010 таки ввели средства для автоудаляемых объектов,
              а то были только строки, динмассивы и костыли с интерфейсами.
              Ответить
              • новые слухи?
                жаль пропал язык... сколько ж лет прошло между появлением нормальных деструкторов в С++ и дельфи...
                С++ появился в 1979, а уже 2011
                30 лет 3 года 3 месяца и 3 дня дельфи "терпел"...
                вот программисты и не вытерпели... ушли в C#
                Ответить
                • Дельфи медленно реагирует на требования, но реагирует.
                  На самом деле из всех этих модных фич мне в Дельфе-семёрке по-настоящему не хватает только одной - хорошего оптимизирующего компилятора.
                  Ответить
                  • > Дельфи медленно реагирует
                    > в Дельфе-семёрке
                    slowpoke.pcx
                    Ответить
                  • >не хватает только одной - хорошего оптимизирующего компилятора.
                    остальное ты сделаешь руками? например, напишешь нужные велосипеды или с имитируешь недостающие конструкции языка? :D
                    почемуж тогда не писать все приложения на встроенном ассемблере руками? никакой оптимизирующий компилятор не нужен :D
                    Ответить
                    • Для остального почти хватает того, что и так там есть.
                      На асме писать неудобно очень, не хочу.
                      Ответить
                      • >Мыши плакали, кололись, но продолжали есть свой кактус, потому что другой пищи не пробовали

                        это, помоему, в несколько измененом виде, цитата твоего любимого Луговского
                        не советую его здесь больше упоминать
                        всё, что он говорил, относится не только ко мне, но и к тебе в равной мере :-[
                        Ответить
                        • Просто семёрка, в отличие от более новых версий, почти безглючная (есть только незначительный глюк редактора, когда нельзя пробел вводить) и очень шустрая.
                          Быстрота и надёжность.
                          Ответить
                          • > почти безглючная
                            щаз, Delphi 7 даже в естественной среде Windows 2000 колбасило некисло.
                            Ответить
                            • показать все, что скрытоНичего у меня не колбасит, ни разу ничего не видел с ней такого.
                              Ответить
                              • я видимо как-то не так программировал, почти безглючную приходилось как минимум раз в сутки перезапускать :-Р
                                Ответить
                                • Не знаю, наверное пиратка. Или ты спутал с 6 или 8 версией. Или с 2007.
                                  (а как никинулись-то тупые минусоёбы, которые ваще не в теме)
                                  Ответить
                                  • > Не знаю, наверное пиратка.
                                    техпоцдержка детектед :-D

                                    внезапно, 6 была стабильнее, ~2 облома/ 3 дня
                                    Ответить
                  • >Дельфи медленно реагирует
                    для области ИТ технологий, где всё устаревает за месяцы, это невообразимо медлено
                    так тормозить - большая ошибка
                    они лишь теряют доверие пользователей
                    Ответить
                    • Самого бесит политика ботланда.
                      Ответить
                      • >бесит политика ботланда
                        Борланд уже давно развалился. Какая там политика...
                        Ответить
              • >ввели средства для автоудаляемых объектов
                разве там ввели не обычную сборку мусора?
                это совершенно другое, нежели "автовызываемые деструкторы"
                в условиях сборки мусора, работа с ресурсами значительно усложняется и обрастает костылями, нежели с нормальными деструкторами С++
                Ответить
                • Нет, боже упаси! Сборки мусора там, слава богу, нету.
                  Именно ввели шаблон для автоматической финализации.
                  Я тоже целиком и полностью не понимаю, нахуя нужна сборка мусора, если автоудаления хватит с головой для того, чтобы о памяти думать только там, где о ней действительно надо думать.
                  Ответить
                  • я, конечно, не гуглил, и тебе поверю, тк гуглить мне лень

                    >шаблон для автоматической финализации
                    но слово финализация - как раз намекает на сборку мусора

                    >Говорят, в Delphi 2010 таки ввели средства для автоудаляемых объектов
                    первое слово этого предложения говорит, что знания о 2010 дельфи не особо крепки
                    тебе точно можно доверять? может ошибаешься?

                    в новых дельфи можно использовать .Net Framework? почти уверен, что можно
                    тогда это однозначно говорит о наличии сборки мусора
                    Ответить
                    • хех, обычно насильники в спорах Pascal vs. C блещут знаниями десятилетней давности :-)
                      Ответить
                      • >Pascal vs. C
                        в Си никогда не было деструкторов, значит мы говорили не про Си
                        ваш КЭП
                        Ответить
                        • да похрену, в таких спорах всегда как минимум одна из сторон застряла в 1990ых
                          обычно сводится к C++ против Pascal, с бесконечными объяснениями про новшества Object Pascal
                          или наоборот
                          ни хрена разницы нет
                          Ответить
                          • Кто так активно минусует? Вроде верно всё сказал. о_О
                            Разве что 90тые тут не причём.
                            Ответить
                            • Лихие 90ые ... вот и минусуют :)
                              Ответить
                            • показать все, что скрытоЭто сионисты, их просто очень много, некоторые даже работу за еду не могут найти, вот и минусуют.
                              Ответить
                              • http://www.korova.ru/humor/pics/1400/606779-untitled2.jpg
                                Ответить
                                • Смотри как минусуют. Во дают! Точно сионисты! :D
                                  Ответить
                                  • а я достаю из широких штанин волшебную палочку букмарклет добра
                                    упс, промахнулся, это был букмарклет зла... :-/
                                    Ответить
                      • показать все, что скрытоСионисты минусуют!
                        Ох и много же их.
                        Да, школота любит си, ведь это язык ><4|<3|008.
                        Ответить
                        • Как раз школота по большей части его очень не любит, а особенно первокуры на ОП, после школьного паскаля.
                          Ответить
                          • показать все, что скрытоКак раз школота любит образ крутого хацкера, считает, что он связан с си, и любит кричать что паскаль сакс.
                            Ответить
                            • Образ любит, только мозгов и усидчивости для изучения Си у 99% не хватает, тем паче для асма. Поэтому маются по большей частью херней с батниками, ну иногда встречал таких, которые скачают Дельфи или Билдер, накидают на форму готовых объектов (немногие додумываются прочитать в хелпе как их можно "соединить") и хвастаются всем, что они написали свою программу. И конечно при этом они теперь эксперты по языку (даже не важно по какому).
                              Ответить
                              • >Образ любит, только мозгов и усидчивости для изучения Си у 99% не хватает, тем паче для асма.

                                Не нужно говорить, как будто Си это нереальный матан. Не так это. Прост как слеза младенца, жаль лишь, что не также прозрачен...
                                Ответить
                                • Да нет конечно, я это не хотел сказать ни в коем случае, просто для школьников объективно проще Паскаль (но не значит, что как язык он лучше!), по этому большинство пытается написать программу в стиле хелловорлд на паскале. Хотя я начинал именно с Си в школьные годы, причем по самучителю Шилда по Си++ (рассчитанный на то, что Си уже изучен), инета не было тогда (точнее был но крайне дорогой и медленный). Но мне было так интересно программировать, что я фактически путем экспериментов научился писать на Си++ , правда в силу специфики самоучителя долго не знал, что функции можно объявлять отдельно от класса. Еще раз повторю, что Си ничуть не сложнее других ЯВУ, просто объективно для первоначального ознакомления с языками паскаль больше подходит на мой взгляд.
                                  Ответить
                                  • Я начинал с Ассемблера x86.
                                    Забавное было время...
                                    Правда только на одном языке не сижу. Изучаю все потряд, даже если по профессии мне это и не нужно сейчас...
                                    Ответить
                                    • Это в любом случае мне это пригодится в будующем. Нужно уметь выбрать подходящий инструмент для данной конкретной задачи.
                                      Ответить
                                    • А мне тот человек который всунул мне самоучитель по Си++ (после того как я к нему изрядно пристал) тоже предлагал ассемблер, но я очканул тогда. Хотя через год все же отыскал его и взял еще и учебник по асму от Юрова итоже стал учить. А вообще я тоже для общего развития порой знакомлюсь с другими языками. Поэтому не надо думать, что я кроме Си и ассемблера ничего не знаю.
                                      Кстати кто изучил ассемблер очень легко при необходимости сможет изучить ЯВУ и писать очень качественный код, а вот обратное не верно.
                                      Ответить
                        • >Сионисты минусуют!
                          >Ох и много же их.

                          А что Вы хотели? В С++ раздел всёж зашли.

                          Ничего, сейчас кто-нибудь из любителей функциональной парадигмы придут и Вам помогут заминусовать. :)


                          Императивщиков С++ников же нужно заминусовать. Они ведь отбирают работу у функциональщиков. А дельфисты не отбирают, их минусовать не будем. :)

                          Я функциональную парадигму больше люблю, но работы с её применением пока не нашёл. Хоть в штаты уезжай... :(
                          Ответить
                          • Недавно в журнале читал про проводимую конференцию "Функциональная VS ООП парадигмы".
                            Парадовал один из доводов в пользу функциональной парадигмы: "Императивщики занимают наши рабочие места и мы не можем найти себе работу."

                            Забавный довод. :D
                            В прочем, это не так уж и смешно, как кажеться....
                            Ответить
                            • показать все, что скрытоЯ тоже не могу придумать применения функциональной парадигме.
                              Ответить
                              • Значит, тренеруйтесь и думайте.
                                Ответить
                                • показать все, что скрытоНадо пидумать свой функциональный язык. Я даже знаю, куда его применю. Для рендера 3Д-моделей в симуляторе.
                                  Ответить
                                  • Вот пример того, как парень применял идеи функциональной парадигмы в императивном С++:

                                    - Функции высшего порядка и замыкания (пусть даже эмулированные с помощью указателей на функцию + void *data) и, во всяком случае, саму идею combinator library - Ленивые вычисления в какой-либо форме - Будучи знакомым с понятием зависимых типов, гораздо легче понять и эффективно использовать шаблоны С++ - Будучи знакомым с классами типов (typeclasses), я смогу эмулировать их с помощью dictionary-passing style (тем более в С++) и пользоваться приемами, типичными для классов типов.
                                    Ответить
                                    • - Чисто функциональные структуры данных (на С/C++ - с подсчетом ссылок, за отсутствием GC) - Алгебраические типы - я смогу а) использовать их для моделирования предметной области и б) сэмулировать их с помощью абстракции конструкторов/селекторов/предикатов; разве что без pattern matching. - Будучи знакомым с prolog-style унификацией, я смогу (пусть и в редких случаях) сэмулировать ее и воспользоваться этим для упрощения какой-нибудь очень сложной условной логики. Я это уже один раз делал, после того как где-то час пытался написать логику красиво обычными if/else и понял, что без ошибок я ее не напишу - и, как обычно и бывает - написал минут за 15, и все сразу же заработало правильно. - Будучи знакомым с параметрическим полиморфизмом, я буду проектировать полиморфные функции по возможности параметрически полиморфными, что увеличит корректность моих программ и упростит рассуждения о них
                                      Ответить
                                      • - Имея опыт программирования на чистом языке, я буду знать, насколько сильно чистота увеличивает корректность, и буду минимизировать и изолировать в своих программах побочные эффекты, что положительно скажется на корректности - Будучи знакомым с системами эффектов, я буду иметь возможность рассуждать об эффектах, производимых теми или иными процедурами в моей программе, что также положительно скажется на корректности моей программы и уменьшит количество "сюрпризов" и неявных взаимодействий в ней - Будучи знакомым с монадами или хотя бы ФВП, я смогу придумать хороший способ организации асинхронных вычислений - Будучи знакомым с continuations, я смогу при необходимости частично сэмулировать их с помощью getcontext/setcontext и реализовать себе зеленые нити или корутины. И, соответственно, смогу разглядеть задачу, где это действительно будет уместно - Будучи знакомым с понятием структурной рекурсии и с ее приятными свойствами (гарантированная завершаемость, очень легко рассуждать о структурно-рекурсивных процедурах), я буду по возможности использовать ее вместо общей рекурсии, что положительно скажется на корректности моих каких-нибудь сложных процедур обработки данных - Будучи знакомым с понятием хвостового вызова и с процедурой его удаления, я смогу не задумываясь и не ошибаясь оптимизировать некоторые рекурсивные процедуры - ... Во всех случаях благодаря тому, что я знаком с какой-либо ФПшной концепцией, я могу разглядеть ее полезность в той или иной задаче (в то время как незнакомым с ней придется самим ее изобретать или искать обходные пути), и, будучи знаком со способами реализации этой концепции, сэмулировать ее или воспользоваться ее основными идеями в своей задаче на своем языке.
                                        Ответить
                                        • Тоесть, получается, программируя на императивном языке - можно продолжать использовать опыт функционального прогрммирования.
                                          Ответить
                                    • > Вот пример того, как парень применял идеи функциональной парадигмы в императивном С++:

                                      Да зачем примеры искать - шаблоны же в С++. Функциональный язык, исполняющийся во время компиляции.
                                      Ответить
                                      • >шаблоны же в С++
                                        Ну вот, наконец Вы это поняли. :)
                                        Ответить
                                  • >Надо пидумать свой функциональный язык.
                                    Их уж столько напридумано... Больше чем императивных...

                                    Так, что Вам без знаний туда лучше не влезать.))
                                    Ответить
                        • школота любит визуал бейсик
                          Ответить
                    • Нельзя.
                      Д2010 делает полноценные екзешники, не точканетовские.
                      Ответить
                      • и не позволяет делать точканетовские не прикаких условиях? только обычные?
                        Ответить
                        • Хз, может и есть такая версия.
                          Главное, что можно делать нормальные, с нормальным управлением указателями (без уборщика).
                          Ответить
                      • Delphi.NET выпилена 2 года назад
                        на замену есть ебланский компилятор со своим корявым диалектом
                        Ответить
                      • показать все, что скрытобайткод - говно. дельфи тоже
                        Ответить
                        • Чем Вам байткод неугодил?
                          Ответить
                          • Айяйяй. Согласитесь, минусовать, не приведя ни одного аргумента - это как-то по детски. :)
                            Ответить
      • >делал через просто указатели
        видимо, ты не внятно выразился
        можно взглянуть на пример?
        Ответить
        • Ну то есть узлы я бы не делал классами.
          Ответить
          • а чем бы ты их сделал?
            можно пример?
            Ответить
            • Указателями на структуры. Но все эти указатели я бы зашил в приватное поле некоего объекта-менеджера дерева (или односвязного списка или чего ещё), чтобы снаружи нельзя было непотребности делать.
              В СТЛ же так и сделано, не?
              Ответить
              • >узлы я бы не делал классами
                а там и не классами сделано, а указателями на экземпляры классов

                >Указателями на структуры
                указатели на структуры ничем особо не отличаются от указателей на классы, разве, что всё "непотребство" по умолчанию выставляют наружу
                Ответить
              • >объекта-менеджера дерева
                что? заводить дерво, ради однонаправленного списка?
                Ответить
                • Ты в скобках читай, да?
                  Ответить
                  • тебе лучше ник переименовать в мастер Ёда
                    подумай над этим на днях
                    Ответить
                    • Зачем думать об этом мне, если знают все меня и так здесь?
                      Ответить
              • не
                template<typename _type_>
                struct list_node {
                _type_ data;
                list_node<_type_> *prev;
                list_node<_type_> *next;
                };
                Ответить
      • >обёртку-объект
        КЭП предупреждает, что объект - это экземпляр класса, а не класс
        а экземпляр класса в контексте твоего предложения не уместен
        Ответить
    • Внимание! В треде сипипишник, аргументирующий фактами, а не криками, что цпп - эта крута!! :)
      Ответить
      • просто С++, в некоторой степени, говно, и я это знаю :)
        впрочем, у других языков тоже есть свои минусы. :-[
        Ответить
      • Надо такой стикер к каждому посту вешать, где здравая мысль преобладает над троллингом.
        Ответить

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