3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
1 | |
С++ для начинающих. Мысли вслух04.01.2013, 14:11. Показов 2662. Ответов 40
Метки нет (Все метки)
Доброго времени суток.
В конце ноября регистрировался на форуме с простой целью: хотелось посмотреть какие вопросы и проблемы возникают у студентов при изучении языка С++. Не ради исследований, статистики и прочего. Просто хотелось оценить "на глаз" и, возможно, отметить для себя какие-то моменты, на которые следует обратить внимание, если самому придется работать со студентами. Форум известный, поток вопросов имеется. Предположил, что студенты ориентировочно первого курса в основном будут писать в разделе "С++ для начинающих", там и решил обосноваться. На данный момент я несколько разочарован и хочу поделиться своими мыслями и вопросами по поводу того, что бросается в глаза. Дисклеймер Пост вероятно получится относительно длинным, при этом в нем не будет ничего нового, только очевидные вещи, находящиеся на поверхности. Все высказывания субъективны. Ссылки с конкретными примерами не приводятся намеренно, чтобы не задеть чувства авторов. Орфография и пунктуация никогда не были моей сильной стороной. Не страшно? Поехали! Ctrl+C, Ctrl+V Очень много тем с банально скопированым текстом задания. Пожалуй, по этому пункту сказать решительно нечего. Такие студенты всегда были и еще будут. И дипломы защищали на "отл" люди, не способные написать ни строчки кода. Иногда накатывает и хочется послать их подальше со специальности (о профессии пока и речи нет), но потом становится все равно - они сами решили потратить время обучения впустую. cout, следовательно, C++ Часто приходится наблюдать откровенную кашу в голове студентов в виде неспособности отличить C от C++. Ребят, подскажите: почему так происходит и откуда у этой проблемы ноги растут? Не могу придумать на кого свалить, кроме как на преподавателей. Сам наблюдал, как в очень уважаемом ВУЗе нашего города студенты-математики писали в каком-то древнем билдере на языке Си, но при этом для вывода использовали cout, выделяли память для массивов с помощью new и очень удивлялись вызовам malloc. Зачем сознательно создавать путаницу в головах студентов? Слишком страшен синтаксис, используемый в printf? Слишком сложно использовать malloc? Лично я не считаю это вескими причинами. Вспоминая свой первый курс, у нас такой проблемы не было. Дали Linux, gcc. Что, какой g++? Забыли, пишем на Pure C. Да, проблемы были. Кто-то терялся в командной строке, кому-то было сложно поставить себе дистрибутив для работы, а когда программы стали состоять из нескольких файлов, пришлось еще учиться писать Makefile. Тем не менее, справились. Кто-то сам, кому-то помогли. Но работа в таком режиме помогла понять, что за IDE не стоит никакой магии. У меня возникает вопрос. Может, я ошибаюсь, и в других учебных заведениях сразу говорят, что будем изучать С++, но начнем с его сишной части, не углубляясь пока в классы? Но для простоты пока будем использовать некоторые возможности С++. Если кто-нибудь в курсе, проясните, пожалуйста, этот момент. Случается, что за помощью обращается человек с заданием явно академического плана, где стандартные вещи необходимо реализовать вручную. В итоге получает решение с использованием STL. Да, это лаконично и аккуратно. Да, я понимаю, что мы находимся в разделе С++ и хотим по максимуму использовать возможности языка и стандартной библиотеки для написания красивых решений. Но от нас ждали другого, и часто это можно понять по уровню сложности задания и формулировкам. Вопрос: можно и нужно ли бороться с проблемой смешения двух языков студентами? Горшочек, вари! Еще раз о каше, дамы и господа. В этот раз - об оформлении исходого кода. Случалось видеть и полное отсутствие какого-либо форматирования, и просто бессистемное оформление кода. Есть примеры, в которых я прослеживаю логику оформления, но читать такой код не становится проще. Да, какое-то выравнивание есть. Но я не привык к такому его виду. И все вокруг меня не привыкли. Я сейчас не говорю о том, где расставлять фигурные скобки и сколько пробелов использовать для отступов. Но оформление элементарно должно быть. Отделить операторы пробелами, расположить по одной инструкции на строку, добавить пустые строки для разбиения кода на логические блоки - это все не так сложно, но сэкономит время-нервы и тем, кто желает помочь, и самому автору (хотя, наверное, сам он может этого и не осознавать). Вопрос: как можно приучить к оформлению исходного кода? Вспоминая практику своих преподавателей, код, в котором отсутствует форматирование не принимается. Без вопросов. В учебной практике можно продолжать придерживаться этого правила, в этом проблем не вижу. Можно ли что-нибудь поделать в рамках форума? Игнорировать темы, авторы которых не постарались придать коду аккуратный вид, наверное, не стоит. В конце концов, на форум обращаются с другими вопросами. Конечно, можно скопировать себе код, отформатировать одной из доступных утилит, но вы же понимаете, что лень. Иногда не приходится компилировать и запускать код, чтобы найти в нем ошибки. Можно прикрепить тему со списком соответствующих утилит. Но очень сомневаюсь, что кто-то будет заглядывать в нее. Вместо заключения Были и еще какие-то мысли о наболевшем, но они либо забылись, либо показались несущественными. Спасибо всем, кто дочитал.
0
|
04.01.2013, 14:11 | |
Ответы с готовыми решениями:
40
Мысли вслух мысли вслух Аварийное питание (мысли вслух) Робот SWG - мысли вслух |
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
04.01.2013, 18:08 | 2 |
При чём здесь преподаватели, когда приходится учить языку "студентов" не знающих вообще ни одного языка, выключая русский? Виноваты здесь те, кто не определил их в психушку. Некоторые даже уверены в том, что в институте компы стоят для того, чтоб они на них играли. Обычно в контролстрайк.
Добавлено через 1 минуту И после этого сваливаешь на препов?! Однако! Или проблема первый курс вспоминает, а не ты? Так её же вроде не было? Добавлено через 4 минуты А теперь код уже вспоминает логику.
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
04.01.2013, 19:04 [ТС] | 3 |
Минимальное требование к студентам на первом курсе - желательно знать основы какого-нибудь языка программирования. Программа построена таким образом, чтобы быть понятной для студентов любого уровня. Никто не будет с первого же дня давать крутой материал, рассчитывая на предварительную подготовку, которой может и не быть. Таким образом, программа допускает наличие студентов без подготовки. И такие будут. А дальше - уж если преподаватель пишет ерунду, то студенты повторяют. Мне хочется узнать: имеет ли место такая ситуация? Или же просто студенты сами что-то упускают по невнимательности.
Пожалуй, я не настолько ненавижу людей. Поясню: у нас все было достаточно однозначно, но ручаться за другие заведения я не могу. Не понял смысла фразы.
0
|
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
04.01.2013, 23:21 | 4 |
Напрячь сервер форума прогонять все исходники в исходник-тегах через соответствующий pretty-printer?
Скорее всем пофиг. Работает — и ладно. Потому что курс языка надо вычитать за полгода-год с учётом того, что надо ещё подтягивать тех, кто совсем не бум-бум, и того, что ещё валом других дисциплин. И если я правильно понял выражение "сишная часть" — то это тупо синтаксис и "императивные языки программирования 101". Тут вообще нет принципиальной разницы, что за язык и каким заклинанием можно что-то считать из файла или выделить памяти.
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
05.01.2013, 07:21 [ТС] | 5 |
Была такая мысль. Но есть один минус: допустим, у меня используется самое-лучшее-оформление-кода-в-мире и я не хочу, чтобы оно менялось после вставки на форум. Т.е. нужна еще и галочка "Не форматировать код", которая по умолчанию будет выключена.
0
|
160 / 160 / 30
Регистрация: 09.11.2012
Сообщений: 1,008
|
|
05.01.2013, 07:55 | 6 |
МНОГО "сцудентов-погромистов" учатся для того, чтобы где-нибудь учиться. А погромист - это престижно. Вот и получаются такие. Те, кому это интересно пишут нормально.
0
|
387 / 214 / 102
Регистрация: 09.04.2012
Сообщений: 635
|
|
05.01.2013, 08:53 | 7 |
Новичок не знает, как вопрос сформулировать, так как нет знаний, которые позволят сформулировать вопросы. Большинство студентов таковы, так что не удивительно, что они приходят на форум, чтобы им помогли. Студенты обращаются на форум, совсем не потому что они ленивые, глупые или ничего не делают, а просто у них еще нет нужных знаний. Чтобы у студентов подобные знаний появились, нужно чтобы им кто-то в жизни или на форуме объяснял очень подробно и разжевывал, так как самостоятельно понять совершенно нереально. И желательно чтобы были примеры готового кода, на котором они смогли бы научиться, и форум им дает такую возможность, предоставляя решенные задачи. Самостоятельно разобраться и сделать задачи нереально.
НЕ умея формулировать вопрос, создать запрос в поисковую систему не получится, и в любом случае возникнет проблема с выделением из огромного потока, правильной страницы. Чтобы сформулировать запрос, нужно знать точные термины. Чтобы использовать правильное оформление кода, его нужно знать. А чтобы его знать, нужно чтобы объясняли самостоятельно на поставленные вопросы, а не отправляли не в гугл ( на одном из форумов (это был codenet) я за отправление в гугл отправил на три буквы за что и был забанен, а вопрос был следующим "как написать компилятор"). Проблема в том, что мало кто объясняет теорию. Иногда у меня складывается впечатление, что большинство не знают, а те кто знает, на подобных форумах не отвечают, так как у них нет времени ( они работают и получают большие деньги за свою работу, делая проекты AAA, которые издаются крупнейшими издательскими компаниями по всему миру) Недавно я тут в форуме "С для начинающих" встретил задачу, которая явно профессиональная и уровня кандидатской или монографии. И работа над которой должна продолжаться несколько месяцев. А студенту ее дали на 2 курсе. С ней и выпускник то не каждый справится.
0
|
160 / 160 / 30
Регистрация: 09.11.2012
Сообщений: 1,008
|
|
05.01.2013, 09:43 | 8 |
asidorchenko, я не зная, например, ЛИСПа могу нормально его написать. Красиво, в смысле. Отступы, все дела. Те, кто этого не делает - просто ленивы.
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
05.01.2013, 09:59 [ТС] | 9 |
Увы... Но ничего не могу тут сказать, т.к. никогда не понимал такой позиции. Всегда считал, что надо выбирать то, что нравится, а не то, что навязано со стороны.
asidorchenko, попробую резюмировать по поводу поиска информации. На что нужно обратить внимание во время выдачи материала студентам: 1. Указать возможные источники информации. Сюда относятся: - ссылки на книги, вплоть до главы и раздела с информацией; - man pages. Случалось наблюдать, когда на рекомендацию "почитать man man" отправлялись в гугл и по первой ссылке находили ссылку на страницу вики о музыкальной группе. 2. Отметить ключевые слова для поиска. 3. Объяснить принцип форматирования. Если не сложно, можно в личку ссылку на тему? Из интереса. Потому что Вы уже знаете основные принципы. Студенты, похоже, первое время не видят необходимости и им неочевидно, что может быть такая потребность.
0
|
387 / 214 / 102
Регистрация: 09.04.2012
Сообщений: 635
|
|
05.01.2013, 12:27 | 11 |
Нет. Примерный уровень задачи это практическая реализация B-дерева
http://en.wikipedia.org/wiki/B-tree
0
|
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
|
05.01.2013, 14:07 | 12 |
Дело в том, что не каждый кто создаёт такие темы учится на программиста. Сейчас программирование преподают, по-моему, всем кому не лень. Всё, что нужно таким ТС, это сдать зачёт, после чего о программировании благополучно забыть.
По поводу использование древних инструментов я как-то уже говорил: вся учебная программа(назовём это так) завязана на использовании именно этих инструментов. Для новых её необходимо перерабатывать, а преподавателей соответственно переучивать... Что касается смешивание языков, то тут думаю не стоит забывать, что тот достандартный C++, который в большинстве случаев и преподают, всё-таки намного больше похож на C, чем сегодняшний.
0
|
2719 / 1773 / 187
Регистрация: 05.06.2011
Сообщений: 5,132
|
|
05.01.2013, 15:38 | 13 |
Во-первых, таки реально. Таки смею тебя уверить, авторы многих учебников писали их не просто для получения бабла, а именно чтобы объяснить читателю нечто новое. И многим из них таки действительно это удалось. Во-вторых, как ты представляешь себе -- на форуме! -- подробное разъяснение теории функций комплексной переменной, например? Таки форум может помочь человеку, который процентов на 90 как минимум знает то, что ему надо.
Начал с того, что человек может не знать, как правильно сформулировать вопрос, а потом для примера приводишь вопрос, на который гугль на первой же странице явно даёт пару неглупых ссылок. Видимо, в ответ кто-то должен наколотить Ахо с Ульманом? Сужу по случаю исключительно по твоему описанию и, возможно, неправильно -- но таки надеюсь, с тех пор ты заметно поумнел. Иначе и тут скоро забанят. B-дерево? Разжёванное Кнутом до консистенции манной каши? Доступное в исходниках в десятке мест? Кандидатская? С которой не каждый выпускник справится? Хреновые ж у тебя выпускники, должен заметить.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
05.01.2013, 16:01 | 14 |
Они не знают даже языков общения. Ни одного, включая русский. Возможности же учить их на первом курсе с яслей до программирования нет. При этом есть образовательный стандарт, по которому они должны хоть как то знать программирование. Какой ещё возможен результат?
Добавлено через 4 минуты Ты уж определись, или уровня кандидатской, или всего на несколько месяцев. Их годами пишут, а несколько месяцев - это уровень курсовика, максимум выпускной квалификационной работы, называемой также дипломным проектом. Даже уровень гранта - это на год. Добавлено через 4 минуты Причём, и на кандидатской, и на гранте, и при написании монографии дело не в размере задачи, даже если это прога, а в том, что информации для её написания в полном объёме нет в принципе, надо проводить исследования. И не язык учить, а изучать реальный объект/систему, прогой моделируемый, разрабатывать новые методы в области комбинаторики и тому подобное.
0
|
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
|
|
05.01.2013, 17:10 | 15 |
я бы отвечал на вопросы новичков так, чтобы привить им интерес к программированию, показывая как применяются их задачки в реальных условиях(чтоб им реально это помогало в жизни). А форматирование кода, отличие C от C++ и прочее - это побочные знания, которые через 200 лет никому уже будут не нужны.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
09.01.2013, 09:37 | 16 |
А тебе не приходило в голову, что именно от лени и придуманы все хорошие стили? Лень в данном случае - двигатель прогресса, а не тормоз, а кривое форматирование, или отсутствие форматирования как такового - надёднейший признак не только патологической тяги к трудностям, но и желания помучаться. Бывает трудоголизм, а у них трудоголомазодебелизм.
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
09.01.2013, 15:20 | 17 |
Можно, нужно.
Мне почему-то ничего эффективнее физических методов воздействия в голову не приходит, но по понятным причинам их применение представляется затруднительным. Бред же. Если есть желание получить знания (а не оценку), то без проблем гуглятся книги, учебники, и все это изучается без всякого разжевывания со стороны. Если человек не научится самостоятельно находить ответы на вопросы, да и желания у него такого нет, то как специалист он ничего не стоит. А вопросы на этом форуме часто задают просто элементарные, для решения которых совсем не обязательно быть мастером Google-fu. Потому что вопрос неправильный (тебя ведь не удовлетворил бы ответ «Напиши лексический анализатор, потом к нему синтаксический анализатор, к ним прикрути кодогенератор, а затем, если остались силы, реализуй различные оптимизации», правда?). А правильный вопрос был бы таким — «Подскажите хорошую литературу по написанию компиляторов» И забанили тебя в принципе справедливо. Потому что теория обычно — это достаточно объемный и сложный для объяснения «на пальцах» материал. И если ты не хочешь сам попытаться его изучить (проясняя уже конкретные вопросы на форуме), то неудивительно, что мало кто хочет его за тебя разжевывать. И чтоб два раза не вставать: почитай вот это руководство. Ручаюсь, это тебе не раз пригодится в дальнейшем. /me пошел писать кандидатскую. Тут загвоздка в том, что и ты через 200 лет никому не будешь нужен, поэтому стоит заглядывать вперед на более скромные периоды времени. Скажем, лет на 20. А в ближайшие 20 лет ты, как программист на C/C++ (предположим), должен писать хороший код, который будет легко впоследствии читать и при необходимости изменять другим программистам. Так что все это имеет большое значение.
0
|
387 / 214 / 102
Регистрация: 09.04.2012
Сообщений: 635
|
|
10.01.2013, 10:07 | 18 |
Nameless One
Компьютерная литература является дефицитом. Дефицит в экономической теории это когда спрос превышает предложение. Таким образом, взять литературу законным способом либо неоткуда ( является библиографической редкостью), либо является незаконным и преследуется по закону. Выбор у человека только один - бросить обучение в данной сфере и идти работать на низкоквалифицированную работу. Таким образом, вместо того, чтобы писать "гугли", надо писать и говорить новичкам следующий правильный ответ "бросай занятие программированием, тебя никто тут не ждет и иди на три буквы". Список литературы по теме, я и сам способен найти без указки, что его нужно гуглить.
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
10.01.2013, 11:59 | 19 |
Т.е. я правильно понял, литература по теме «Разработка компиляторов» — это дефицит, ее затруднительно добыть законным путем, да?
К чему ты это сказал?
0
|
387 / 214 / 102
Регистрация: 09.04.2012
Сообщений: 635
|
|
10.01.2013, 12:28 | 20 |
В 2000х старые книжные магазины исчезли. Бывает, я захожу в книжные магазины. обычно я пролистываю полки и внутри составляю "интуитивный" приблизительный "список" того, что есть. Книгу Ахо, Ульмана по разработке компиляторов я не видел, с чего книгу 1970х годов вдруг будут заново издавать, коммерчески это совершенно невыгодно, так как затраты не окупятся. А тиражи обычно исчисляются парой тысяч, и эта пара тысяч на всю страну, естественно это ситуация дефицита. Выбор книг в книжных очень маленький. Я знал о ней, когда спрашивал, и я даже ей пользовался и читал в то время, когда спрашивал.
Книги в магазины попадают на непродолжительное время. Отмечу, что они не переиздаются: например серия книг по WinAPI Windows от Microsoft Press - Petzold, Pietrek, Richter, Kruglinsky, Solomon, Russinovich как были изданы в конце 1990х-начале 2000х так с тех пор и не переиздавались в России, то есть их уже не купить, несмотря на то, что в них есть потребность. Аналогичное относится и к книгам по алгоритмам, изданным в начале 2000х. Книги становятся библиографической редкостью. Скачивание является незаконным, нарушением авторского права. Права у издательства. Та же самая ситуация и с программным обеспечением: его просто изымают из оборота. Авторское право вечно, так как распространяется на перевод и на переиздание.
0
|
10.01.2013, 12:28 | |
10.01.2013, 12:28 | |
Помогаю со студенческими работами здесь
20
Как правильно говорить вслух команды типа du -sh Букмарклет читалки вслух Google Translate. Кириллица неадекватна Мысли материальны? Мысли о установщике 10.8 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |