Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
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 тоже читает...
Язык можно выучить лишь прочитав не одну полезную книгу, потратив на практику не один трудомесяц, и решая крупные реальные задачи под надзором более опытных коллег.
А посещая лекции одну пару в неделю и решая говнозадачи "проинвертируйте массив из 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. И где он сейчас?
это не про меня.
но я Дельфи 7 тоже пользуюсь - для системы, которая написана давно, перепродаем и хотелки делаем - смысла нет куда-то переходить (как технически - 90% уже оттестировано и работает, так и экономически - тут и так все ясно).
но это все крайности - нетипичный случай.
> Он, заявил, что в getName() о t "позаботится сборщик мусора".
Говорят PChar в Delphi перед строкой число ссылок хранил на него и на уровне языка поддерживалась актуальность этого счетчика. Это правда?
А посещая лекции одну пару в неделю и решая говнозадачи "проинвертируйте массив из 10 элементов" можно лишь получить отдаленное представление о теме - да и вообще нереально, что в качестве преподавателя попадется программист с реальным опытом, зачастую это бывший неинициативный выпускник-хорошист, который пошел в аспирантуру, потому что мама настояла, защитил кандидатскую по теме "методы усовершенствования методики преподавания технологии собирания огурцов в условиях крайнего севера" и в итоге оставшийся при кафедре 5-10-20 лет, потому что было лениво работать на нормальной работе с 9 до 18 (а программисту зачастую так еще и с переработками).
Расценивай обучение в институте только как "мне тут дают отдаленное представление о <название каждого предмета>", и насколько это представление будет качественным/фундаментальным и пригодится в жизни - зависит только от твоего дополнительного самообразования в процессе обучения.
Что за ВУЗ, кстати?
У меня были некоторые знания на момент поступления, поэтому, когда преподаватель пишет такое, я понимаю что оно неправильно / не работает / не скомпилируется. А другие? А потом ко мне подходят и просят помочь с лабораторной, и в коде одногрупников я вижу все ошибки преподавателя и его "стиль кодирования". Возможно, пройдёт время и уже их код попадёт на сайт вроде этого. Мне порой тяжело смотреть, как такой преподаватель учит других.
Что касается самообучения, я не знаю что делать. Что учить? Как учить? Как практиковаться? Уже давно хотел спросить у кого-то, кто прошел через всё это.
2) Метода: скачал информацию → прочитал и осмыслил тему → пробуешь самостоятельно → осмысляешь всё содеянное → повторяешь с начала до полного просветления.
3) >>Как практиковаться?
Тянешь с github, койнить проект и форкаешь его под свои нужды. Когда решишь что всё зашибцом, отдашь своим тестерам(вот для чего программистам нужны знакомые, приятели и т. п.). Узнаёшь о себе и своём детище много нового и интересного, получаешь пожелания, фиксишь баги, добавляешь фичи и выпускаешь 0.0.1 версию. Принимаешь поздравления от коллег по цеху и чувствуешь себя немного программистом. При необходимости повторяешь.
- если конкретно С++, и намерения серьезные, то читаешь Страуструпа как первую фундаментальную книгу по языку (по желанию там даже задания есть к каждой главе) - получаешь представления о возможностях языка как он был задуман автором, ну и о стандартной библиотеке
- если нужно отшлифовать понимание ООП с использованием С++ - есть книжка Гради Буч
- нужно отшлифовать тонкие моменты - Мейерс
- сломать себе мозг шаблонами (точнее приведенным в книге стилем метапрограммирования) - Александреску
> как практиковаться?
Практиковаться можно и нужно на работе - и опыта получишь на порядок больше, и спросить есть у кого, и денюшку заплатят. Оценивай свою загруженность ВУЗом и смотри сможешь ли ты потратить 20+ трудочасов в неделю на работу. Зная стандарт С++ и STL, уже можно найти работу, честно рассказав на собеседовании, что опыта нет - будут оценивать адекватность в целом.
Затем уже на работе будет ближе к делу понятно, куда конкретно копать дальше - например, boost для универсальных и консольно-серверных приложений, Qt/MFC/другое для UI, может OpenGL/DX для игростроя и т.д.
Качать какие-либо проекты с гитхаба, 95% которых писали такие же начинающие, но очень амбициозные "программисты", не самый лучший путь, как мне кажется.
надо делать из себя специалиста, который найдет работу и возможность работать
добейся пробуй
Вообще на работе намного быстрее обучение идет за счет волшебных пиздюлей.
defecate-plusplus - хороший список, ушла читать Александреску)
Его книгу читать после 5-6 месяцев работа с конкретными реализациями стандартов С++. Работать будешь с конкретным компилятором, а не с абстрактным стандартом.
>> как практиковаться?
Наверно очень даже не плохо, когда во время собеседования, на вопрос «А что вы собственно умеете на С++?», претендент на должность, вместо «Да в общем то, пока что ни хера...», предъявит хотя бы свои джастфорфановские РАБОЧИЕ подделки, блеать.
Иначе с тем же успехом, «с нуля за печеньки с кофем» можно начинать в общаге/на квартире/дома.
Со всем остальным согласен.
Вот уж с этим не согласен, т.к. на С++ одновременно работаю, пожалуй, в двух самых распространенных компиляторах (студия и гцц), которые на двоих имеют явно 70+% рынка.
Да, есть нюансы которые их отличают, но эти нюансы слишком мелки, и ни в коей мере не отменяют необходимость знания стандарта, идеологии языка и уверенности, что в С++ в любом случае можно сделать те или иные действия - я сейчас говорю о стандарте 2003 года. Стандарт 2011 года полностью сейчас вообще ни один продукт не поддерживает и ничего нельзя считать стабильным.
> очень даже неплохо, когда во время собеседования... - претендент различает std::vector, std::list и std::map, может на бумажке проинвертировать порядок бит в аргументе типа Т, знает чем отличается класс от структуры, про передачу аргументов по значению, указателю и ссылке, знает про наследование и хорошо если про множественное наследование и еще лучше если про виртуальное, приходит на собеседование помытый, в нормальной одежде и расчесанный.
Покажется смешным, но собеседоваться приходили люди с претензией к оплате труда 70-80к, которые не могли ответить на эти простые вопросы, зато в резюме была описано все что можно, и опыт работы ага. А в итоге взяли зеленого выпускника, который до этого работал при своей кафедре и рассказывал, что STL им применять не разрешали, т.к. это недостаточно хардкорно, и оказался очень даже ничего, испытательный срок думаю пройдет.
>>может на бумажке, может и устно, может и в воображении
Беседа беседой, это обязательно для любого собеседования, с другой стороны «Болтовня ничего не стоит. Покажите мне код.» (Linus Torvalds).
"покажите мне код, который вы делали на прошлой работе" - не очень осмысленная просьба
тебе уже, думаю, бессмысленно об этом всем рассказывать, а вот молодёжь пусть почитает
если есть в голове адекватность + готовность учиться, быстро и качественно - то работу можно найти и без опыта работы, адекватность - это как минимум твердое знание базовых вещей, незнание которых и тем более неспособность догадаться о них после N подсказок - это уже печально
На одном из собеседований так и гоняли: показывай что да как, почему это так реализовал, а это этак, поясните мысль(с). Вот тогда и понял: «Иногда код программиста, говорит куда больше о программисте чем он сам о себе».
И да, согласен, скорее всего, мои требования уже не к джунику.
Ту же жизнь я думаю писал каждый второй...
Сделать свой форк, ну к примеру той же дс++, распространить среди знакомых и сопровождать — реальный опыт.
Все возможные задания сводил к программированию (так были решены все задачи по мат.анализу, дискретке, выч. мату, инф. безопасности, и многим другим). Где-то с разрешения преподавателей, где-то самостоятельно. Очень много было индивидуальных заданий от преподавателей программированием не занимающихся, но желающих получить что-нибудь эдакое. Все делал на С++. Постепенно преподы меня заметили и сами стали просить что-то сделать. А потом и работу на кафедре предложили. Это был очень серьезный ресурс опыта, который не появился бы, если бы я просто следовал общепринятой программе обучения. Потом это все реально пригодилось при устройстве на нормальную работу. А программирование у нас давали даже хуже чем у вас, судя по коду 🙂
нескладуха
Во время моей учебы наиболее предпочтительным языком был delphi. И где он сейчас?
Oh, shi~
скоро в треде появится Тарас и покажет, где delphi
но я Дельфи 7 тоже пользуюсь - для системы, которая написана давно, перепродаем и хотелки делаем - смысла нет куда-то переходить (как технически - 90% уже оттестировано и работает, так и экономически - тут и так все ясно).
но это все крайности - нетипичный случай.
"Ложное знание опаснее невежества" (Шоу Джордж Бернард).
Лучше уж самому осиливать, чем такое переосмыслять...
А если опять ввели отрицательное значение, то уходим в бесконечный цикл. Ибо нефиг... Ой, нет, там же do. Я просто привык к
починил
Олсо, шаред птр позовёт delete вместо delete []...
obvious fix
Говорят PChar в Delphi перед строкой число ссылок хранил на него и на уровне языка поддерживалась актуальность этого счетчика. Это правда?