Здравствуйте, Michael7, Вы писали:
TL>> Очевидно, товарищу начинающему программисту про дебаггеры и прочие излишества всякие нехорошие рассказать забыли.
M>Мне кажется, что для начинающего программиста дебаггеры — зло и им надо категорически запретить ими пользоваться. В том числе, чтобы учились подобные ошибки выявлять тестами и внимательным чтением кода.
Т.е. вместо того, чтоб быстро найти конкретное место в программе где выполнение пошло не так, как предполагалось новичку предлагается напрячь и так перегретые попыткой написать программу мозги и пройтись отладчиком "в уме"? Дык нету у него ещё столько ума то, он его только набирается.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, blackhearted, Вы писали:
B>Но варнинги нужно читать, а не понижать их уровень, а потом искать тестами/чтением в чём же проблема.
Waning as error — наше всё!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, alpha21264, Вы писали:
A>Ну например в чистом финкциональном программировании нет разрушающего присваивания. A>То есть например i++ написать нельзя.
А где тут присваивание? Это инкремент
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Пацак, Вы писали:
П>Конкретный пример — да, но вообще присваивание и сравнение перепутать имхо довольно несложно. Особенно если программист не чистый сишник, а пишет параллельно на нескольких языках.
Делаем вывод: писать на нескольких языках зло и ересь богомерзская.
Панеслаааась!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Пацак, Вы писали:
П>Таки да, разница — опечататься и набить в коде HASH_OFFSET вместо MAX_REPEAT_COUNT несколько сложнее, чем 91 вместо 19.
Не ну мне тут совсем недавно вижуалко сошло с ума и стало автодополнять HRES... не как HRESULT, которого в коде туевы хучи а как HRESOURCE, который пару раз встретился.
Так шта...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, The Lex, Вы писали:
TL>Здравствуйте, blackhearted, Вы писали:
B>>[ccode] B>>Compile as C Code (/TC) + Level 4 (/W4) B>>
B>>warning C4706: assignment within conditional expression
B>>Повторюсь, если игнорить варнинги — то ССЗБ и язык тут не при чём.
TL>Да, только в "простом Си" — присваивание внутри условия — довольно распространенная практика.
По мнению ТС — это всё должно быть запрещено самим дизайном языка.
Здравствуйте, Пацак, Вы писали:
П>Таки да, разница — опечататься и набить в коде HASH_OFFSET вместо MAX_REPEAT_COUNT несколько сложнее, чем 91 вместо 19.
Зато опечататься и набить 91 вместо 19 при определении HASH_OFFSET или MAX_REPEAT_COUNT несколько проще.
Здравствуйте, blackhearted, Вы писали:
TL>>Да, только в "простом Си" — присваивание внутри условия — довольно распространенная практика.
B>По мнению ТС — это всё должно быть запрещено самим дизайном языка.
Угу. И добавив сюда "сообщения об ошибках" вида "произошла ошибка в строке ххх" — мы получим невероятно "человеколюбимый" язык. Знаем, плавали.
Здравствуйте, MasterZiv, Вы писали:
MZ>On 10.01.2011 23:34, Пацак wrote:
>> Java, например.
MZ>Ни в коем случае Java не должна быть первым языком. MZ>Она чистый ООП, программировать надо начинать БЕЗ ООП.
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, quwy, Вы писали:
Q>>Препод -- это диагноз. Я сам паскалист, сиподобные языки мне чисто визуально неприятны, но ваши взгляды и заявления заставляют плеваться. LVV>А много знаете о моих взглядах?
Здравствуйте, The Lex, Вы писали:
TL>Угу. Я, например, вот только сегодня нашел (в смыле: свежая статистика — опыт-то старый, не умеют давно... никогда не умели...), что "контейнерами и обертками" никак не умеют пользоваться "выросшие на контейнерах и обертках программисты" и хак — (char*)std_string_value.c_str() — для передачи строки в качестве буфера — "нормальное" дело.
вот это трындец... это в промышленном коде такое творится?
Здравствуйте, CreatorCray, Вы писали:
M>>Мне кажется, что для начинающего программиста дебаггеры — зло и им надо категорически запретить ими пользоваться. В том числе, чтобы учились подобные ошибки выявлять тестами и внимательным чтением кода.
CC>Т.е. вместо того, чтоб быстро найти конкретное место в программе где выполнение пошло не так, как предполагалось новичку предлагается напрячь и так перегретые попыткой написать программу мозги и пройтись отладчиком "в уме"? Дык нету у него ещё столько ума то, он его только набирается.
Без отладчика так пару раз помучается и станет аккуратнее. Отладчик начинающего программиста развращает умственно, он может его приучить к небрежности, привычке в случае проблем не головой думать, а F8 (или еще что-нибудь) тыкать. И все бы ничего, но далеко не всегда отладчик — панацея и самый быстрый путь найти ошибку. Иногда его, к тому же и не бывает.
Полезность отладчика в выявлении проблем вообще несколько преувеличена.
Есть случаи, когда он нужен: на мой взгляд, в первую очередь это отладка взаимодействия с операционной системой или другими программами. Исследование и разбор чужого кода или работы на низком уровне своего. Может быть полезен, если в каком-то сильно нетривиальном куске кода встретилось что-то не очень понятное.
Вместе с тем, например, отладчики плохо помогают в случае параллельных вычислений. Или бывает, что поведение программы под отладчиком и без него по разным причинам различается.
Здравствуйте, Michael7, Вы писали:
M>Без отладчика так пару раз помучается и станет аккуратнее.
Если бы. Продолжительные мучения в поисках "гдеж это я накосячил" куда скорее приводят к воплям "Язык говно!!!" на форумах, что мы периодически тут от подобных ниасиливших видим.
M> Отладчик начинающего программиста развращает умственно, он может его приучить к небрежности, привычке в случае проблем не головой думать, а F8 (или еще что-нибудь) тыкать.
Какие высокие слова.
Инструментарий надо знать и уметь им пользоваться всем. А то это получается как "оператор += приводит к раку мозга, вшам и диарее блаблабла, надо только x = x + ...".
M> И все бы ничего, но далеко не всегда отладчик — панацея и самый быстрый путь найти ошибку.
Я где то говорил что это панацея?
Я про то, что отказываться от отладчика на ранних этапах, когда обучаемый ещё не накопил опыта совершения и осознания ошибок попросту неэффективно. Чем быстрее он найдёт ошибку, тем быстрее он в ней разберётся и поймёт.
M>Иногда его, к тому же и не бывает.
Это скорее минус environment-у. Ну, не бывает, значит там придётся мудохаться куда сильнее.
M> Есть случаи, когда он нужен: на мой взгляд, в первую очередь это отладка взаимодействия с операционной системой или другими программами. Исследование и разбор чужого кода или работы на низком уровне своего. Может быть полезен, если в каком-то сильно нетривиальном куске кода встретилось что-то не очень понятное.
Когда поведение кода зависит от кучи параметров ты в уме все эти параметры к конкретной точке ни в жизнь не просчитаешь. Посмотреть что именно творилось в переменных в данной точке программы отладчиком куда удобнее чем нашпиговывать в прогу debug output.
M>Вместе с тем, например, отладчики плохо помогают в случае параллельных вычислений. Или бывает, что поведение программы под отладчиком и без него по разным причинам различается.
И? Про серебрянную пулю и так речи не шло.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, blackhearted, Вы писали:
B>Здравствуйте, The Lex, Вы писали:
TL>>Угу. Я, например, вот только сегодня нашел (в смыле: свежая статистика — опыт-то старый, не умеют давно... никогда не умели...), что "контейнерами и обертками" никак не умеют пользоваться "выросшие на контейнерах и обертках программисты" и хак — (char*)std_string_value.c_str() — для передачи строки в качестве буфера — "нормальное" дело.
B>вот это трындец... это в промышленном коде такое творится?
А всё потому, что кто то когда то не подумал как бы std::basic_string удобно заюзать для получения строк из сишных функций.
Вот народ и выкручивается чтоб не делать лишние буфера с копированием.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
M>>Без отладчика так пару раз помучается и станет аккуратнее. CC>Если бы. Продолжительные мучения в поисках "гдеж это я накосячил" куда скорее приводят к воплям "Язык говно!!!" на форумах, что мы периодически тут от подобных ниасиливших видим.
Они это и с отладчиком вопят, потому что такие звуки от начинающих говорят скорее о психологических проблемах конкретного индивидуума. Будьте уверены: на отладчике они не заканчиваются.
С другой стороны, именно для разбора тупых вопросов начинающих и нужен преподаватель, а при его отсутствии, благодаря интернету, есть форумы, где можно поспрашивать. Собственно, на винграде как раз пример вопроса и получился. Все нормально.
Кстати, в данном вопросе: а что такого начинающему, кроме скачущей по экрану полоски с выделенной строчкой кода, покажет отладчик? Я говорю именно о вообще начинающем программисте, опытный человек, если ранее не знал C++, но имеет опыт с другими языками, вообще иначе будет обучаться.
Как это не тривиально, но надо еще додуматься в отладчике посмотреть на значение конкретной переменной, чтобы увидеть присваивание в if. Для нас это пустяк, но действительно начинающий, он же везде начинающий.
С другой стороны, по простейшим тестам тоже можно заметить, что где-то в районе if произошло нежелательное присваивание.
Также и warning-и, если их не отключать, дадут более точную информацию чем отладчик.
M>> Отладчик начинающего программиста развращает умственно, он может его приучить к небрежности, привычке в случае проблем не головой думать, а F8 (или еще что-нибудь) тыкать. CC>Какие высокие слова. CC>Инструментарий надо знать и уметь им пользоваться всем. А то это получается как "оператор += приводит к раку мозга, вшам и диарее блаблабла, надо только x = x + ...".
Так я разве против знания инструментария? Вот только должна быть и определенная последовательность в обучении. Прежде чем ездить на пятой передаче стоит научиться это делать на первой.
Так что моё мнение прежнее: прежде чем обучающийся не освоит элементарные вещи из языка, не набьет немного шишек на своих первых программах — нечего ему показывать отладчик, он им все-равно толком пользоваться не сможет, а дурные привычки приобретет.
Пусть для начала научится писать на Си простые программы без проблем с памятью, многие из которых, кстати, весьма плохо выявляются отладчиком. Вот после этого этапа можно и отладчик давать.
CC>Я про то, что отказываться от отладчика на ранних этапах, когда обучаемый ещё не накопил опыта совершения и осознания ошибок попросту неэффективно. Чем быстрее он найдёт ошибку, тем быстрее он в ней разберётся и поймёт.
Да даже, чтобы правильно искать ошибку уже надо иметь некоторый опыт. Даже в педагогических целях полезно помучиться при поиске ошибки — лучше запоминается тогда. Не чрезмерно, конечно.
CC>Когда поведение кода зависит от кучи параметров ты в уме все эти параметры к конкретной точке ни в жизнь не просчитаешь. Посмотреть что именно творилось в переменных в данной точке программы отладчиком куда удобнее чем нашпиговывать в прогу debug output.
В уме — нет, на бумажке можно и просчитать. Не повредит даже имеющим опыт И это не ретроградство, а реально иногда бумага — самое удобное средство для выражения мыслей. Например, когда я писал на ассемблере код для FPU, именно на бумаге тщательно выписывал состояние стека FPU. Потом в код в комментарии перенес.
CC>И? Про серебрянную пулю и так речи не шло.
Ну и я не про полный запрет отладчика. Просто это достаточно мощный и серьезный инструмент для эффективного обращения с которым нужна определенная культура и навык программирования.
Здравствуйте, blackhearted, Вы писали:
B>Здравствуйте, LaptevVV, Вы писали:
LVV>>Здравствуйте, blackhearted, Вы писали:
LVV>>>>>>
LVV>>>>>> if (counter =! 0 ) {
LVV>>>>>>
Pzz>>>>>Ну ваше-то, любой нормальный компилятор в этом месте предупреждение напишет, если их (предупреждения) не отключать. LVV>>>>Начинающие на этом этапе Debug от Release отличить не могут, не то, что предупреждения отключить... B>>>Кто-то кроме студентоты таким страдает? А учеников нужно учить. LVV>>Никлаус Вирт при создании паскаля написал: Одним из главных побуждающих мотивов создания нового языка стало то, что ему надоело учить студентов не программированию, а особенностям языка (и транслятора) фортрана. B>Фортран — это, конечно, вещь. С ним можно всё что угодно сравнивать, всё равно никто не сможет аргументировано доказать.
LVV>>Язык НЕ ДОЛЖЕН позволять писать ошибочные конструкции, которые пропускаются компилятором. B>Treat warnings as errors и никаких гвоздей. Получишь палки в колёса от компилятора. B>Или нужно полагаться полностью на дизайн языка и голову вообще не включать? B>Так мы докатимся до того, что в языке вообще не может быть никаких side-effects и всё иммутабельно — есть такой подход в обучении, начинать с подобных языков. Только вот Виртовский Паскаль под это описание ну не подходит никак.
LVV>>Знаменитая ошибка в программе на фортране: вместо запятой была поставлена точка и оператор цикла превратился в оператор присваивания. B>И опять он — великий и ужасный. Где сейчас начитают учить с фортрана, в ПТУ? В моё время учили как раз с Паскаля. И ошибки делали на Виртовском творении еще покруче, чем на в будущем на Сях.
B>Можно еще Аду вспомнить — вот она, безопасность. Но это уже оффтоп.
Ну тогда уж не Аду, а Оберон — там вообще никакого синтаксического сахара. Описание языка — смешные 16 страниц.
Здравствуйте, Michael7, Вы писали:
M>Кстати, в данном вопросе: а что такого начинающему, кроме скачущей по экрану полоски с выделенной строчкой кода, покажет отладчик? Я говорю именно о вообще начинающем программисте, опытный человек, если ранее не знал C++, но имеет опыт с другими языками, вообще иначе будет обучаться.
Ну, я не знаю насколько я был опытный ( ) в школьные годы, но когда у меня появился отладчик Zeus для Z80 то он мне очень многое говорил.
M>>> Отладчик начинающего программиста развращает умственно, он может его приучить к небрежности, привычке в случае проблем не головой думать, а F8 (или еще что-нибудь) тыкать. CC>>Какие высокие слова. CC>>Инструментарий надо знать и уметь им пользоваться всем. А то это получается как "оператор += приводит к раку мозга, вшам и диарее блаблабла, надо только x = x + ...".
M>Так я разве против знания инструментария? Вот только должна быть и определенная последовательность в обучении. Прежде чем ездить на пятой передаче стоит научиться это делать на первой.
Искать ошибку только по исходнику это совсем не 1я передача. Для этого уже надо багаж знаний иметь.
M>Пусть для начала научится писать на Си простые программы без проблем с памятью, многие из которых, кстати, весьма плохо выявляются отладчиком. Вот после этого этапа можно и отладчик давать.
Зато некоторые — прекрасно. Например пошагово идём и смотрим в каком месте в определённой памяти оказывается нагажено. Локализовываем ошибку а дальше смотрим что там уже в коде понакручено.
А там и Refactor Find Reference может понадобится и callstack и прочее и прочее.
CC>>Я про то, что отказываться от отладчика на ранних этапах, когда обучаемый ещё не накопил опыта совершения и осознания ошибок попросту неэффективно. Чем быстрее он найдёт ошибку, тем быстрее он в ней разберётся и поймёт. M>Да даже, чтобы правильно искать ошибку уже надо иметь некоторый опыт. Даже в педагогических целях полезно помучиться при поиске ошибки — лучше запоминается тогда. Не чрезмерно, конечно.
И потом получаются оригиналы, которые вместо того, чтоб один раз пройти отладчиком и найти ошибку начинают воскуривать километры кода. А масштаб то уже не учебный нифига.
CC>>Когда поведение кода зависит от кучи параметров ты в уме все эти параметры к конкретной точке ни в жизнь не просчитаешь. Посмотреть что именно творилось в переменных в данной точке программы отладчиком куда удобнее чем нашпиговывать в прогу debug output. M>В уме — нет, на бумажке можно и просчитать.
Отладчик лучше бумажки (т.е. человека) в том, что он не ошибается. Т.е. он показывает то, что в реале произошло, тогда как код на глаз должен был сделать совсем другое. Такие ошибки на бумажке можно дооолго ловить.
Или например есть у нас ошибка, которая проявляется после нетривиальной обработки пары десятков метров данных. Сколько коробок бумаги и человеколет надо чтобы методом "бумажки" найти где баг?
M> Не повредит даже имеющим опыт И это не ретроградство, а реально иногда бумага — самое удобное средство для выражения мыслей.
Строго субъективно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, The Lex, Вы писали:
A>>С альтернативами пока плохо. A>>Но это не отменяет того факта, что в программировании накопилось дохрена идей, A>>(например функциональное программирование) которые в С++ уже не впихнешь.
TL>А нужно впихнуть?
Скорее да чем нет, хотя бы в том же объеме что впихнули в D чистые функции и
полноценные лямбды.
Здравствуйте, alpha21264, Вы писали:
TL>>Придется таки попробовать: уже плешь проели этим своим питоном.
A>Не боись. Я тоже недавно начал. Я не ожидал, что мне понравится
Питон для многих сишников обладает наркотическим эффектом