Кресты / Говнокод #9289 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
class Worker
{
    private:
        char name[15];
        double salary;
        ...
        
    public:
    
        Worker(char* n, double s)
        {
            ...
            
            if (s < 0)
                salary = verSal(s);
            else
                salary = s;
            
            ...
        }
    
        char* getName()
        {
            char* t = new char[15];
            strcpy(t, name);
            return t;
        }
        
    private:
        double verSal(double s)
        {
            do
            {
                cout << "Ошибка при вводе зарплаты. Введите зарплату: ";
                cin >> s;
            }
            while (s < 0);
            return s;
        }
}

Вот ещё один пример из конспекта (это уже от другого преподавателя). Он, заявил, что в getName() о t "позаботится сборщик мусора". Просто он Java тоже читает...

Запостил: vovams vovams, (Updated )

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

  • Язык можно выучить лишь прочитав не одну полезную книгу, потратив на практику не один трудомесяц, и решая крупные реальные задачи под надзором более опытных коллег.
    А посещая лекции одну пару в неделю и решая говнозадачи "проинвертируйте массив из 10 элементов" можно лишь получить отдаленное представление о теме - да и вообще нереально, что в качестве преподавателя попадется программист с реальным опытом, зачастую это бывший неинициативный выпускник-хорошист, который пошел в аспирантуру, потому что мама настояла, защитил кандидатскую по теме "методы усовершенствования методики преподавания технологии собирания огурцов в условиях крайнего севера" и в итоге оставшийся при кафедре 5-10-20 лет, потому что было лениво работать на нормальной работе с 9 до 18 (а программисту зачастую так еще и с переработками).
    Расценивай обучение в институте только как "мне тут дают отдаленное представление о <название каждого предмета>", и насколько это представление будет качественным/фундаментальным и пригодится в жизни - зависит только от твоего дополнительного самообразования в процессе обучения.
    Что за ВУЗ, кстати?
    Ответить
    • Да, согласен. Примерно так я к этому и отношусь.

      У меня были некоторые знания на момент поступления, поэтому, когда преподаватель пишет такое, я понимаю что оно неправильно / не работает / не скомпилируется. А другие? А потом ко мне подходят и просят помочь с лабораторной, и в коде одногрупников я вижу все ошибки преподавателя и его "стиль кодирования". Возможно, пройдёт время и уже их код попадёт на сайт вроде этого. Мне порой тяжело смотреть, как такой преподаватель учит других.

      Что касается самообучения, я не знаю что делать. Что учить? Как учить? Как практиковаться? Уже давно хотел спросить у кого-то, кто прошел через всё это.
      Ответить
      • я учился так: была довольно большая практическая задача, интересная мне. Из материала - хелпы и примеры. Интернет даже диалапный был тогда редкостью. В результате тонны говнокода и индусятины, но свою задачу выполняет. Со временем появляется понимание того, что наговнокодил и... так несколько раз 🙂
        Ответить
      • 1) С чего начать: Г.Шилд, С.Прата.
        2) Метода: скачал информацию → прочитал и осмыслил тему → пробуешь самостоятельно → осмысляешь всё содеянное → повторяешь с начала до полного просветления.
        3) >>Как практиковаться?
        Тянешь с github, койнить проект и форкаешь его под свои нужды. Когда решишь что всё зашибцом, отдашь своим тестерам(вот для чего программистам нужны знакомые, приятели и т. п.). Узнаёшь о себе и своём детище много нового и интересного, получаешь пожелания, фиксишь баги, добавляешь фичи и выпускаешь 0.0.1 версию. Принимаешь поздравления от коллег по цеху и чувствуешь себя немного программистом. При необходимости повторяешь.
        Ответить
      • > что учить?
        - если конкретно С++, и намерения серьезные, то читаешь Страуструпа как первую фундаментальную книгу по языку (по желанию там даже задания есть к каждой главе) - получаешь представления о возможностях языка как он был задуман автором, ну и о стандартной библиотеке
        - если нужно отшлифовать понимание ООП с использованием С++ - есть книжка Гради Буч
        - нужно отшлифовать тонкие моменты - Мейерс
        - сломать себе мозг шаблонами (точнее приведенным в книге стилем метапрограммирования) - Александреску

        > как практиковаться?
        Практиковаться можно и нужно на работе - и опыта получишь на порядок больше, и спросить есть у кого, и денюшку заплатят. Оценивай свою загруженность ВУЗом и смотри сможешь ли ты потратить 20+ трудочасов в неделю на работу. Зная стандарт С++ и STL, уже можно найти работу, честно рассказав на собеседовании, что опыта нет - будут оценивать адекватность в целом.
        Затем уже на работе будет ближе к делу понятно, куда конкретно копать дальше - например, boost для универсальных и консольно-серверных приложений, Qt/MFC/другое для UI, может OpenGL/DX для игростроя и т.д.
        Качать какие-либо проекты с гитхаба, 95% которых писали такие же начинающие, но очень амбициозные "программисты", не самый лучший путь, как мне кажется.
        Ответить
          • если нет возможности работать, тогда какой смысл делать из себя специалиста-программиста
            надо делать из себя специалиста, который найдет работу и возможность работать
            Ответить
              • строительные специальности (инженеры, архитекторы) найдут работу при любом правительстве, кризисе и общественном строе
                добейся пробуй
                Ответить
              • да, этот тредик катится в манагерский семёнар как преуспеть у бузинессе
                Ответить
          • Найти работу легко - приходишь в понравившуюся фирму и говоришь - можно я практикантом за чай и печеньки? Я в свое время со своим художественным образованием пошла работать за копейки и ничего, вполне себе вуз заменило)
            Вообще на работе намного быстрее обучение идет за счет волшебных пиздюлей.
            defecate-plusplus - хороший список, ушла читать Александреску)
            Ответить
        • >>то читаешь Страуструпа
          Его книгу читать после 5-6 месяцев работа с конкретными реализациями стандартов С++. Работать будешь с конкретным компилятором, а не с абстрактным стандартом.
          >> как практиковаться?
          Наверно очень даже не плохо, когда во время собеседования, на вопрос «А что вы собственно умеете на С++?», претендент на должность, вместо «Да в общем то, пока что ни хера...», предъявит хотя бы свои джастфорфановские РАБОЧИЕ подделки, блеать.
          Иначе с тем же успехом, «с нуля за печеньки с кофем» можно начинать в общаге/на квартире/дома.

          Со всем остальным согласен.
          Ответить
          • > Его книгу читать после 5-6 месяцев работа с конкретными реализациями стандартов С++
            Вот уж с этим не согласен, т.к. на С++ одновременно работаю, пожалуй, в двух самых распространенных компиляторах (студия и гцц), которые на двоих имеют явно 70+% рынка.
            Да, есть нюансы которые их отличают, но эти нюансы слишком мелки, и ни в коей мере не отменяют необходимость знания стандарта, идеологии языка и уверенности, что в С++ в любом случае можно сделать те или иные действия - я сейчас говорю о стандарте 2003 года. Стандарт 2011 года полностью сейчас вообще ни один продукт не поддерживает и ничего нельзя считать стабильным.
            > очень даже неплохо, когда во время собеседования... - претендент различает std::vector, std::list и std::map, может на бумажке проинвертировать порядок бит в аргументе типа Т, знает чем отличается класс от структуры, про передачу аргументов по значению, указателю и ссылке, знает про наследование и хорошо если про множественное наследование и еще лучше если про виртуальное, приходит на собеседование помытый, в нормальной одежде и расчесанный.
            Покажется смешным, но собеседоваться приходили люди с претензией к оплате труда 70-80к, которые не могли ответить на эти простые вопросы, зато в резюме была описано все что можно, и опыт работы ага. А в итоге взяли зеленого выпускника, который до этого работал при своей кафедре и рассказывал, что STL им применять не разрешали, т.к. это недостаточно хардкорно, и оказался очень даже ничего, испытательный срок думаю пройдет.
            Ответить
            • Стандарт конечно да, знать нужно, но пользоваться будешь документацией к конкретному компилятору.
              >>может на бумажке, может и устно, может и в воображении
              Беседа беседой, это обязательно для любого собеседования, с другой стороны «Болтовня ничего не стоит. Покажите мне код.» (Linus Torvalds).
              Ответить
              • для "покажите мне код" после первого собеседования, если с кандидатом всё еще есть обоюдный интерес, ему присылается небольшое задание, объемом где-то на вечер кодинга, с расчетом, что через неделю-две он соизволит прислать решение, как раз нормальное время, чтобы посмотреть и других канидатов, и код оценить
                "покажите мне код, который вы делали на прошлой работе" - не очень осмысленная просьба

                тебе уже, думаю, бессмысленно об этом всем рассказывать, а вот молодёжь пусть почитает
                если есть в голове адекватность + готовность учиться, быстро и качественно - то работу можно найти и без опыта работы, адекватность - это как минимум твердое знание базовых вещей, незнание которых и тем более неспособность догадаться о них после N подсказок - это уже печально
                Ответить
                • Кстати адекватность для собеседующего это в первую очередь умение вести связный разговор.
                  Ответить
                • Бывает так,что помимо основной работы, программисты пишут ещё что-то для себя или других(общее пользование). Очень предполагаю, что все осиливавшие работу сокетов писали свой, если не огнестен то портощуп. Вот это и можно продемонстрировать.
                  На одном из собеседований так и гоняли: показывай что да как, почему это так реализовал, а это этак, поясните мысль(с). Вот тогда и понял: «Иногда код программиста, говорит куда больше о программисте чем он сам о себе».
                  И да, согласен, скорее всего, мои требования уже не к джунику.
                  Ответить
          • Хмм, а у меня в уме не укладывается что может быть начинающий программист без хучь каких нить программок.
            Ту же жизнь я думаю писал каждый второй...
            Ответить
            • Хелловердятины намолотить можно много — в сухом остатке низкий КПД.
              Сделать свой форк, ну к примеру той же дс++, распространить среди знакомых и сопровождать — реальный опыт.
              Ответить
              • А можно спустится с небес и понять что джунику никто сложной работы не даст. И делать ему прийдеться именно хелловордятину.
                Ответить
              • А начинающим прогерам с реально большой головой эта дисскуссия вообще не нужна.
                Ответить
      • Когда я учился в ВУЗе, то поступал так:
        Все возможные задания сводил к программированию (так были решены все задачи по мат.анализу, дискретке, выч. мату, инф. безопасности, и многим другим). Где-то с разрешения преподавателей, где-то самостоятельно. Очень много было индивидуальных заданий от преподавателей программированием не занимающихся, но желающих получить что-нибудь эдакое. Все делал на С++. Постепенно преподы меня заметили и сами стали просить что-то сделать. А потом и работу на кафедре предложили. Это был очень серьезный ресурс опыта, который не появился бы, если бы я просто следовал общепринятой программе обучения. Потом это все реально пригодилось при устройстве на нормальную работу. А программирование у нас давали даже хуже чем у вас, судя по коду 🙂
        Ответить
          • Почему усложнять? Например благодаря скиллу в программировании на 5м курсе было написано 12 небольших программ к каждо лабе по криптографии, которые остальным предлагалось считать вручную (в тетрадке) в течении нескольких месяцев. Я сделал семестровый набор за пару часов. Я не усложнять предлагаю, а не искать себе заданий искуственно, а использовать готовую почву, которой полно в любом вузе.
            Ответить
              • В чем? Задачи ставятся вузом так или иначе, я предлагал их решать таким путем, чтобы еще параллельно практику программирования нарабатывать. В случае, когда ты сам себе поставил задачу от и до, возможны проблемы с мотивацией и легко все забросить.
                Ответить
    • надо понимать, что задача любого технического ВУЗа, а уж тем более по IT, состоит в выпуске специалистов, которые самостоятельно могут научиться новым технологиям. И именно поэтому так много времени уделяется теории и лишь малая часть - языкам.
      Во время моей учебы наиболее предпочтительным языком был delphi. И где он сейчас?
      Ответить
      • > предпочтительным языком был delphi. И где он сейчас?
        Oh, shi~
        скоро в треде появится Тарас и покажет, где delphi
        Ответить
        • Недавно в одном комментарии говорили про человека с высшим образованием, пользующимся ПХП, и пишущим на Дельфи7 до сих пор.
          Ответить
          • это не про меня.
            но я Дельфи 7 тоже пользуюсь - для системы, которая написана давно, перепродаем и хотелки делаем - смысла нет куда-то переходить (как технически - 90% уже оттестировано и работает, так и экономически - тут и так все ясно).
            но это все крайности - нетипичный случай.
            Ответить
      • Ну, нас так и учат. Дают базу и учат учиться) Знакомят с Pascal, Object Pascal, C++, PHP, JS, Prolog
        Ответить
  • Говнопреподаватель.
    "Ложное знание опаснее невежества" (Шоу Джордж Бернард).
    Лучше уж самому осиливать, чем такое переосмыслять...
    Ответить
  • while (s < 0);

    А если опять ввели отрицательное значение, то уходим в бесконечный цикл. Ибо нефиг... Ой, нет, там же do. Я просто привык к
    } while (s < 0);
    Ответить
      • std::shared_ptr<char> getName()
        {
            char* t = new char[15];
            try
            {
                strcpy(t, name);
            }
            catch(std::exception const&)
            {
                delete t;
                t = nullptr;
            }
            return t;
        }


        починил
        Ответить
        • А если он бросит не потомка std::exception, а что-то ещё?

          Олсо, шаред птр позовёт delete вместо delete []...
          Ответить
          • Окей, босс

            std::shared_ptr<char> getName()
            {
                char* t = new char[strlen(name) + 1];
                try
                {
                    strcpy(t, name);
                }
                catch(std::exception const&)
                {
                    delete[] t;
                    t = nullptr;
                }
                catch(...)
                {
                    delete[] t;
                    t = nullptr;
                    std::cout << "Something happened!" << std::cout;
                }
                return t;
            }
            Ответить
  • > Он, заявил, что в getName() о t "позаботится сборщик мусора".
    Говорят PChar в Delphi перед строкой число ссылок хранил на него и на уровне языка поддерживалась актуальность этого счетчика. Это правда?
    Ответить
  • пT?Q H$J WH!Y$H"U B!D(U:E$H W,C(V!G"NOP"I$B:X,H(P,Z?V$C.X.PL?T,BUGB,WT(A?Q.Z(I?Y?G$G(P(QO,S:P?W?Z"Y:H L$JE.NO M$MM$XY!C P"T:S.S"O)P$C?Q!EHR$E$KJ:E)N?J(W!I:G"B(R)C$X!E?T"E?C)D)I"ER$W(M!Y!L:B(W$Z:K.G(Z)U$Z.N"M?D$T)K J!J H.G:E"M,N!YF?Y?T"O,U,CQ"IA:J OV(N"E V?K"PE)Y!I S U?U R N!O?K?W)W S,O"Z!FA)N?JE!U:B!N!D:I)L:X,O!J?H!C!W,L:R(L"T I YY)S)S!R,K(G(H:X$EE"Y)X!F(U(F?H(X(Q.W)Y,P$Z!Z)XW)M:X.O:C R(H?H?Y B,O AK,K(F:I"B.K$U?R)I(I?Q)U.LK.JПTEGKMCGMCEYZGIXSWEUMXMKTPDJUMVWEFFHKUDRXEELAQOGOCRLQYZQYVGZSGMPOWEHQZLUOSFDVHDTITWNOJGWRWVGZBFEIMMMOJPOEBKDRUPFWJGJUEYDURJDIUXWDIEPEH
    Ответить

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

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8