Re[2]: тестировать надо с помощью acm.mipt.ru/judge или им подобном
От: Tilir Россия http://tilir.livejournal.com
Дата: 21.10.15 07:52
Оценка:
Здравствуйте, Salih, Вы писали:

S>проверка знания теории, да ещё по тестам с вариантами ответов, это ничто,

S>по сравнению с решениями конкретных задач
S>http://acm.mipt.ru/judge/problems.pl?lang=ru&CGISESSID=504ef02531f1c6e7db5f27f76ce7bcaf

Для решения любой конкретной задачи такого уровня достаточно базового знания C. Проверить знание конкретных особенностей языка, причём особенностей нетривиальных ("как отличается вывод типа auto от decltype"), таким образом нельзя.

P.S. И зачем пользоваться этим самопальным ужасом, если есть, скажем, project euler, если уж хочется набрать задачек поинтересней.
Re[2]: Тест по базовому C++ -- интересно ваше мнение
От: Evgeny.Panasyuk Россия  
Дата: 21.10.15 08:01
Оценка: 2 (1)
Здравствуйте, sergz, Вы писали:

S>Если же это сродни абсрактному чтению Страуструпа (там тоже в конце каждой главы списочек занимательных вопросов), то это кошмар.


У Страуструпа есть книга для новичков — Programming -- Principles and Practice Using C++ — там никакого "C First". Например std::vector вводится на ~100 странице, а new/delete на ~500 — в середине книги.
Re: Тест по базовому C++ -- интересно ваше мнение
От: Лось Чтостряслось СССР  
Дата: 21.10.15 09:38
Оценка: +1
Здравствуйте, Tilir, Вы писали:

T>В связи с чем хочу выложить этот тест для местной общественности. Может будут какие-нибудь предложения, замечания, всё такое.


имена у студентов зачетные — такие флотские
социализм или варварство
Re: Тест по базовому C++ -- интересно ваше мнение
От: B0FEE664  
Дата: 21.10.15 09:56
Оценка:
Здравствуйте, Tilir, Вы писали:

T>В связи с чем хочу выложить этот тест для местной общественности. Может будут какие-нибудь предложения, замечания, всё такое.


Текст у вас какой-то не связный. Например: "Примечание: в принципе его можно заставить работать для всех этих типов серией промежуточных typedef. "
Пропущено 'с помощью'?

"заголовочник" — это официальный термин?

И, разумеется, вы понимаете, что в Q8 правильный ответ: "4) Даже не скомпилируется"?;


И вообще, примеры кода настолько ужасны, что их хочется не решать, а просто выкинуть.
И каждый день — без права на ошибку...
Re[2]: Тест по базовому C++ -- интересно ваше мнение
От: Tilir Россия http://tilir.livejournal.com
Дата: 21.10.15 13:40
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>И, разумеется, вы понимаете, что в Q8 правильный ответ: "4) Даже не скомпилируется"?;


Очень интересно. По какой же причине это может не скомпилироваться?
Re: Тест по базовому C++ -- интересно ваше мнение
От: Pavel Dvorkin Россия  
Дата: 21.10.15 14:24
Оценка: 5 (1) +1
Здравствуйте, Tilir, Вы писали:

Я когда-то сдавал тест по С на brainbench (когда он еще был tekmetriks, а тест был бесплатный). Давно это было, в прошлом веке. Опыт программирования на С на от момент — лет 5-7.

Весьма похоже. Та же попытка ловить на всяких buffer overrun, других видах UB , знании мельчайших подробностей синтаксиса, хитроумных конструкциях и т.п.

Основной вопрос — на кого это рассчитано ? Если на человека,который давно уже программирует на С, то этот тест имеет право на существование. Пусть он сам себя проверит, в состоянии ли он найти тут подвох. Он во все эти ситуации, несомненно, и сам не раз попадал, и из них выпутывался, ну вот пусть и оценит.

А вот дл обучения — ИМХО совершенно не годится. Так можно только всякий интерес отбить. Учить надо, как тут уже писали, тем средствам, которые в языке реально применяются.
With best regards
Pavel Dvorkin
Re[3]: Тест по базовому C++ -- интересно ваше мнение
От: B0FEE664  
Дата: 21.10.15 16:18
Оценка: 8 (1)
Здравствуйте, Tilir, Вы писали:

BFE>>И, разумеется, вы понимаете, что в Q8 правильный ответ: "4) Даже не скомпилируется"?;

T>Очень интересно. По какой же причине это может не скомпилироваться?

У функции int foo() отсутствует return
И каждый день — без права на ошибку...
Re[4]: Тест по базовому C++ -- интересно ваше мнение
От: Tilir Россия http://tilir.livejournal.com
Дата: 22.10.15 04:35
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>У функции int foo() отсутствует return


Отличное наблюдение, спасибо =) Исходно там была main, return не был нужен и я забыл поставить, когда переделал на foo. Поправлю.
Re[3]: Тест по базовому C++ -- интересно ваше мнение
От: VTT http://vtt.to
Дата: 22.10.15 06:54
Оценка:
Здравствуйте, Tilir, Вы писали:

T>Да, я имею обыкновение выкладывать свои материалы здесь. И что? Хороший форум, всегда можно услышать много интересного =))


Суть в том, что мой комментарий к вашему предыдущему тесту по большей части можно отнести и к этому. Снова "представьте, что вы — компилятор" и переменные из 1 буквы.

VTT>>Да, и почему вы выделяете ООП как фичу С++?


T>Не выделяю. Но им никто никогда не читал ООП. Вот я и начну. Но сначала заполировать то C-подмножество которое они уже знают, научить использовать enum и const, шаблоны и inline, отучить от препроцессора -- полезная грунтовка холста.


Мне кажется, что пописав на С в ООП стиле (и осознав пользу от этого) переход на С++ с его встроенной поддержкой ООП сразу даст почувствовать комфорт (относительный).
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Re[2]: Тест по базовому C++ -- интересно ваше мнение
От: Tilir Россия http://tilir.livejournal.com
Дата: 22.10.15 08:52
Оценка: +1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Основной вопрос — на кого это рассчитано ? Если на человека,который давно уже программирует на С, то этот тест имеет право на существование. Пусть он сам себя проверит, в состоянии ли он найти тут подвох. Он во все эти ситуации, несомненно, и сам не раз попадал, и из них выпутывался, ну вот пусть и оценит.


У меня был, кстати, вариант теста по языку C, который я передумал давать студентам, потому что получилось действительно на профессионала (с моей точки зрения). Поэтому я могу вам показать как я себе представляю тест для профессионала. Как-то так.

А исходный тестик в топике ни у кого интерес не отбивает. Как раз наоборот, студенты с энтузиазмом лезут в закоулки языка, ещё и оттаскивать приходится. И потом, когда начинаются действительно сложные вещи, связанные с ООП и шаблонами, где ловушек куда больше и они гораздо менее бесхитростны, у ребят уже накоплен опыт исследования, позволяющий разбираться в таких вещах и не бояться их.

Короче developers born brave, а тут на RSDN, как я погляжу, этот дух утерян.
Re[3]: Тест по базовому C++ -- интересно ваше мнение
От: Evgeny.Panasyuk Россия  
Дата: 22.10.15 10:07
Оценка: +1
Здравствуйте, Tilir, Вы писали:

T>А исходный тестик в топике ни у кого интерес не отбивает. Как раз наоборот, студенты с энтузиазмом лезут в закоулки языка, ещё и оттаскивать приходится. И потом, когда начинаются действительно сложные вещи, связанные с ООП и шаблонами, где ловушек куда больше и они гораздо менее бесхитростны, у ребят уже накоплен опыт исследования, позволяющий разбираться в таких вещах и не бояться их.


T>Короче developers born brave, а тут на RSDN, как я погляжу, этот дух утерян.


Основаная проблема в "C First" подходе (или подобных) не в том что изучаются какие-то тёмные закоулки, а в том что они изучаются с самого начла.
Re[4]: Тест по базовому C++ -- интересно ваше мнение
От: Tilir Россия http://tilir.livejournal.com
Дата: 22.10.15 10:37
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Основаная проблема в "C First" подходе (или подобных) не в том что изучаются какие-то тёмные закоулки, а в том что они изучаются с самого начла.


Язык C гораздо проще и студенты ему уже научены, написали на C много программ и вообще он им нравится. И, кстати, мне сишечка тоже очень нравится.

Первая (нетривиальная) проблема -- это убедить их, что C++ вообще нужен. Для этого переход должен быть as smooth as possible. Сразу ошарашивать их контейнерами и итераторами -- создастся впечатление вообще другого языка. А это не так. Язык тот же, только с бубенцами.
Re[3]: Тест по базовому C++ -- интересно ваше мнение
От: Pavel Dvorkin Россия  
Дата: 22.10.15 11:08
Оценка:
Здравствуйте, Tilir, Вы писали:

T>А исходный тестик в топике ни у кого интерес не отбивает. Как раз наоборот, студенты с энтузиазмом лезут в закоулки языка, ещё и оттаскивать приходится. И потом, когда начинаются действительно сложные вещи, связанные с ООП и шаблонами, где ловушек куда больше и они гораздо менее бесхитростны, у ребят уже накоплен опыт исследования, позволяющий разбираться в таких вещах и не бояться их.


Я с самой концепцией вполне согласен. С++ — не C# и не Ява, чтобы писать только с помощью STL, а от указателей шарахаться как черт от ладана. Писать без указателей, конечно, можно, и можно философствовать о том, что с голыми указателями сейчас не пишут, но если все же эти указатели не понимать, и не знать основ С, то эти указатели однажды все равно вылезут боком для этого С++ — программиста.

T>Короче developers born brave, а тут на RSDN, как я погляжу, этот дух утерян.


Не на RSDN. Гораздо шире.

Когда я читаю порой то, что пишут о безопасности средств языка — у меня складывается впечатление, что основной задачей является не написать программу, а , упаси бог, не сделать ошибку.
With best regards
Pavel Dvorkin
Re[3]: Тест по базовому C++ -- интересно ваше мнение
От: T4r4sB Россия  
Дата: 22.10.15 11:28
Оценка: +1
Здравствуйте, Tilir, Вы писали:

T>У меня был, кстати, вариант теста по языку C, который я передумал давать студентам, потому что получилось действительно на профессионала (с моей точки зрения). Поэтому я могу вам показать как я себе представляю тест для профессионала. Как-то так.


Блин, он проще
Re[5]: Тест по базовому C++ -- интересно ваше мнение
От: Ops Россия  
Дата: 22.10.15 11:45
Оценка: +7
Здравствуйте, Tilir, Вы писали:

T>Первая (нетривиальная) проблема -- это убедить их, что C++ вообще нужен. Для этого переход должен быть as smooth as possible. Сразу ошарашивать их контейнерами и итераторами -- создастся впечатление вообще другого языка. А это не так. Язык тот же, только с бубенцами.


Вообще-то язык другой, только с общими элементами и частично похожим синтаксисом. И убедить, что плюсы нужны, тренируя на кастах в С-стиле и макросах, это и правда сложная задача, уважаю.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[4]: Тест по базовому C++ -- интересно ваше мнение
От: Tilir Россия http://tilir.livejournal.com
Дата: 22.10.15 18:16
Оценка: :)
Здравствуйте, VTT, Вы писали:

VTT>Мне кажется, что пописав на С в ООП стиле (и осознав пользу от этого) переход на С++ с его встроенной поддержкой ООП сразу даст почувствовать комфорт (относительный).


Пописав на C в ООП-стиле (GTK и всё такое) можно только возненавидеть ООП, ничего больше. Я в лекциях (уже в разделе ООП) разбираю реализацию виртуальных функций на C, но в этом году я планирую выкинуть это место из лекций. Оно слишком ужасно даже на мой вкус.

C++ ради ООП (и я объясняю это своим студентам) приносит две жертвы, и это очень серьёзные жертвы.

Во-первых C++ жертвует гарантией сохранности имен в ассемблере целевой архитектуры. Это позволяет делать функции функциями-членами. А кроме того позволяет пространства имён, перегрузку, шаблоны функций и прочие вытребеньки.
Во-вторых C++ жертвует гарантиями по расположению полей структуры в памяти. Это позволяет вводить private и protected данные.

Обе эти жертвы можно не приносить, если ограничиваться extern "C" функциями и POD-типами.

Но если они принесены, мы должны осознавать что именно мы получаем взамен. Мы получаем полноценное ООП.

Именно поэтому, когда меня спрашивают что самое главное Строструп добавил в C, я всегда отвечаю: он не добавил. Он выкинул две важнейшие гарантии этого языка. Остальное после этого получилось само и ООП -- только частный случай того, что получилось.
Re[6]: Тест по базовому C++ -- интересно ваше мнение
От: Tilir Россия http://tilir.livejournal.com
Дата: 22.10.15 18:26
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Вообще-то язык другой, только с общими элементами и частично похожим синтаксисом. И убедить, что плюсы нужны, тренируя на кастах в С-стиле и макросах, это и правда сложная задача, уважаю.


Вообще-то C включен в C++ по нормативной ссылке. Увы для ваших фантазий, но это по определению ISO тот же язык, только с некоторыми дополнительными возможностями. И человеку, который до этого год писал на макросах, нужно внятно объяснить чем шаблоны лучше макросов -- для этого сравнив их с макросами. Также объяснить чем константы и перечисления лучше макросов, объяснить зачем нужны пространства имён (и убедить что они вообще нужны, помню самого себя мне пришлось в этом убеждать около года), etc.

Что до кастов, то тут работает моя привычка объяснять вещи цельными кусками, чтобы не сбиваться на мелочи. Я объясняю все касты сразу -- но только к тому моменту, когда студенты готовы понять что такое dynamic_cast (самый сложный из всех). Так что это в будущем. Недельки через три-четыре доползем, я полагаю. Аналогично new/delete вместо malloc/free/realloc я объясняю не раньше, чем студенты становятся способны осознать все десять отличий первого от второго.
Re[7]: Тест по базовому C++ -- интересно ваше мнение
От: T4r4sB Россия  
Дата: 22.10.15 18:46
Оценка:
Здравствуйте, Tilir, Вы писали:

T>Увы для ваших фантазий, но это по определению ISO тот же язык, только с некоторыми дополнительными возможностями.


Меня к фантазёрам добавь. Это разные языки. В топку определения, важно то, что на них пишется всё по-разному.
Re[7]: Тест по базовому C++ -- интересно ваше мнение
От: Ops Россия  
Дата: 22.10.15 20:19
Оценка:
Здравствуйте, Tilir, Вы писали:

T>Вообще-то C включен в C++ по нормативной ссылке.

Ага, только по общему подмножеству языков 20 страниц несовместимостей. Непосредственно включена только библиотека, и то, с другими именами заголовков.
T>Увы для ваших фантазий, но это по определению ISO тот же язык,
Можно пункт стандарта? А то

C ++ is a general purpose programming language based on the C programming language

совсем о другом говорит.
T>только с некоторыми дополнительными возможностями.
Этих "некоторых дополнительных возможностей" больше половины.
T>И человеку, который до этого год писал на макросах, нужно внятно объяснить чем шаблоны лучше макросов -- для этого сравнив их с макросами.
А шаблоны не лучше макросов, шаблоны просто другие.
T>Также объяснить чем константы и перечисления лучше макросов, объяснить зачем нужны пространства имён (и убедить что они вообще нужны, помню самого себя мне пришлось в этом убеждать около года), etc.
Плохо с принятием новых идей и проекция этого на студентов?

T>Что до кастов, то тут работает моя привычка объяснять вещи цельными кусками, чтобы не сбиваться на мелочи. Я объясняю все касты сразу -- но только к тому моменту, когда студенты готовы понять что такое dynamic_cast (самый сложный из всех).

Там помимо синтаксиса есть интересные моменты. В целом в плюсах касты нужны реже, но это если не подходить к ним как к С.
T>Так что это в будущем. Недельки через три-четыре доползем, я полагаю. Аналогично new/delete вместо malloc/free/realloc я объясняю не раньше, чем студенты становятся способны осознать все десять отличий первого от второго.
Какие еще 10 отличий, зачем они? Такое впечатление, что не язык учат, а гномиков переворачивать.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[8]: Тест по базовому C++ -- интересно ваше мнение
От: Ops Россия  
Дата: 22.10.15 20:24
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>Меня к фантазёрам добавь. Это разные языки. В топку определения, важно то, что на них пишется всё по-разному.


Там и в определениях такого нет, сказано лишь, что плюсы основаны на С — но это бесспорно, ведь изначально так и было.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.