Re[7]: С - зло... :)
От: CreatorCray  
Дата: 13.01.11 13:49
Оценка:
Здравствуйте, Michael7, Вы писали:

TL>> Очевидно, товарищу начинающему программисту про дебаггеры и прочие излишества всякие нехорошие рассказать забыли.


M>Мне кажется, что для начинающего программиста дебаггеры — зло и им надо категорически запретить ими пользоваться. В том числе, чтобы учились подобные ошибки выявлять тестами и внимательным чтением кода.


Т.е. вместо того, чтоб быстро найти конкретное место в программе где выполнение пошло не так, как предполагалось новичку предлагается напрячь и так перегретые попыткой написать программу мозги и пройтись отладчиком "в уме"? Дык нету у него ещё столько ума то, он его только набирается.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: С - зло... :)
От: CreatorCray  
Дата: 13.01.11 13:49
Оценка:
Здравствуйте, blackhearted, Вы писали:

B>Но варнинги нужно читать, а не понижать их уровень, а потом искать тестами/чтением в чём же проблема.

Waning as error — наше всё!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[10]: С - зло... :)
От: CreatorCray  
Дата: 13.01.11 13:49
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Ну например в чистом финкциональном программировании нет разрушающего присваивания.

A>То есть например i++ написать нельзя.
А где тут присваивание? Это инкремент
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[11]: С - зло... :)
От: CreatorCray  
Дата: 13.01.11 13:49
Оценка: :)
Здравствуйте, Пацак, Вы писали:

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


Делаем вывод: писать на нескольких языках зло и ересь богомерзская.
Панеслаааась!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[11]: С - зло... :)
От: CreatorCray  
Дата: 13.01.11 13:49
Оценка:
Здравствуйте, Пацак, Вы писали:

П>Таки да, разница — опечататься и набить в коде HASH_OFFSET вместо MAX_REPEAT_COUNT несколько сложнее, чем 91 вместо 19.

Не ну мне тут совсем недавно вижуалко сошло с ума и стало автодополнять HRES... не как HRESULT, которого в коде туевы хучи а как HRESOURCE, который пару раз встретился.
Так шта...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[9]: С - зло... :)
От: blackhearted Украина  
Дата: 13.01.11 13:50
Оценка:
Здравствуйте, 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>Да, только в "простом Си" — присваивание внутри условия — довольно распространенная практика.


По мнению ТС — это всё должно быть запрещено самим дизайном языка.
Re[11]: С - зло... :)
От: igna Россия  
Дата: 13.01.11 13:54
Оценка:
Здравствуйте, Пацак, Вы писали:

П>Таки да, разница — опечататься и набить в коде HASH_OFFSET вместо MAX_REPEAT_COUNT несколько сложнее, чем 91 вместо 19.


Зато опечататься и набить 91 вместо 19 при определении HASH_OFFSET или MAX_REPEAT_COUNT несколько проще.
Re[10]: С - зло... :)
От: The Lex Украина  
Дата: 13.01.11 15:47
Оценка:
Здравствуйте, blackhearted, Вы писали:

TL>>Да, только в "простом Си" — присваивание внутри условия — довольно распространенная практика.


B>По мнению ТС — это всё должно быть запрещено самим дизайном языка.


Угу. И добавив сюда "сообщения об ошибках" вида "произошла ошибка в строке ххх" — мы получим невероятно "человеколюбимый" язык. Знаем, плавали.
Голь на выдумку хитра, однако...
Re[12]: С - зло... :)
От: Пацак Россия  
Дата: 14.01.11 01:04
Оценка:
Здравствуйте, igna, Вы писали:

I>Зато опечататься и набить 91 вместо 19 при определении HASH_OFFSET или MAX_REPEAT_COUNT несколько проще.


Вычитать и проверить компактный хедер с константами — тоже.
Ку...
Re[6]: С - зло... :)
От: blackhearted Украина  
Дата: 14.01.11 09:51
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>On 10.01.2011 23:34, Пацак wrote:


>> Java, например.


MZ>Ни в коем случае Java не должна быть первым языком.

MZ>Она чистый ООП, программировать надо начинать БЕЗ ООП.

разве Java является pure OOP?
Re[3]: С - зло... :)
От: blackhearted Украина  
Дата: 14.01.11 10:11
Оценка: 9 (1)
Здравствуйте, LaptevVV, Вы писали:

LVV>Здравствуйте, quwy, Вы писали:


Q>>Препод -- это диагноз. Я сам паскалист, сиподобные языки мне чисто визуально неприятны, но ваши взгляды и заявления заставляют плеваться.

LVV>А много знаете о моих взглядах?

Взгляды озвученные на форуме заставляют 100%.
Re[6]: С - зло... :)
От: blackhearted Украина  
Дата: 14.01.11 10:13
Оценка:
Здравствуйте, The Lex, Вы писали:

TL>Угу. Я, например, вот только сегодня нашел (в смыле: свежая статистика — опыт-то старый, не умеют давно... никогда не умели...), что "контейнерами и обертками" никак не умеют пользоваться "выросшие на контейнерах и обертках программисты" и хак — (char*)std_string_value.c_str() — для передачи строки в качестве буфера — "нормальное" дело.


вот это трындец... это в промышленном коде такое творится?
Re[8]: С - зло... :)
От: Michael7 Россия  
Дата: 14.01.11 11:06
Оценка: +2 :)
Здравствуйте, CreatorCray, Вы писали:

M>>Мне кажется, что для начинающего программиста дебаггеры — зло и им надо категорически запретить ими пользоваться. В том числе, чтобы учились подобные ошибки выявлять тестами и внимательным чтением кода.


CC>Т.е. вместо того, чтоб быстро найти конкретное место в программе где выполнение пошло не так, как предполагалось новичку предлагается напрячь и так перегретые попыткой написать программу мозги и пройтись отладчиком "в уме"? Дык нету у него ещё столько ума то, он его только набирается.


Без отладчика так пару раз помучается и станет аккуратнее. Отладчик начинающего программиста развращает умственно, он может его приучить к небрежности, привычке в случае проблем не головой думать, а F8 (или еще что-нибудь) тыкать. И все бы ничего, но далеко не всегда отладчик — панацея и самый быстрый путь найти ошибку. Иногда его, к тому же и не бывает.

Полезность отладчика в выявлении проблем вообще несколько преувеличена.

Есть случаи, когда он нужен: на мой взгляд, в первую очередь это отладка взаимодействия с операционной системой или другими программами. Исследование и разбор чужого кода или работы на низком уровне своего. Может быть полезен, если в каком-то сильно нетривиальном куске кода встретилось что-то не очень понятное.

Вместе с тем, например, отладчики плохо помогают в случае параллельных вычислений. Или бывает, что поведение программы под отладчиком и без него по разным причинам различается.
Re[9]: С - зло... :)
От: CreatorCray  
Дата: 14.01.11 11:22
Оценка: +1
Здравствуйте, Michael7, Вы писали:

M>Без отладчика так пару раз помучается и станет аккуратнее.

Если бы. Продолжительные мучения в поисках "гдеж это я накосячил" куда скорее приводят к воплям "Язык говно!!!" на форумах, что мы периодически тут от подобных ниасиливших видим.

M> Отладчик начинающего программиста развращает умственно, он может его приучить к небрежности, привычке в случае проблем не головой думать, а F8 (или еще что-нибудь) тыкать.

Какие высокие слова.
Инструментарий надо знать и уметь им пользоваться всем. А то это получается как "оператор += приводит к раку мозга, вшам и диарее блаблабла, надо только x = x + ...".

M> И все бы ничего, но далеко не всегда отладчик — панацея и самый быстрый путь найти ошибку.

Я где то говорил что это панацея?
Я про то, что отказываться от отладчика на ранних этапах, когда обучаемый ещё не накопил опыта совершения и осознания ошибок попросту неэффективно. Чем быстрее он найдёт ошибку, тем быстрее он в ней разберётся и поймёт.

M>Иногда его, к тому же и не бывает.

Это скорее минус environment-у. Ну, не бывает, значит там придётся мудохаться куда сильнее.

M> Есть случаи, когда он нужен: на мой взгляд, в первую очередь это отладка взаимодействия с операционной системой или другими программами. Исследование и разбор чужого кода или работы на низком уровне своего. Может быть полезен, если в каком-то сильно нетривиальном куске кода встретилось что-то не очень понятное.

Когда поведение кода зависит от кучи параметров ты в уме все эти параметры к конкретной точке ни в жизнь не просчитаешь. Посмотреть что именно творилось в переменных в данной точке программы отладчиком куда удобнее чем нашпиговывать в прогу debug output.

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

И? Про серебрянную пулю и так речи не шло.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[7]: С - зло... :)
От: CreatorCray  
Дата: 14.01.11 11:22
Оценка:
Здравствуйте, 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, значит пора закрыть эту страницу.
Всем пока
Re[10]: С - зло... :)
От: Michael7 Россия  
Дата: 15.01.11 00:46
Оценка:
Здравствуйте, CreatorCray, Вы писали:

M>>Без отладчика так пару раз помучается и станет аккуратнее.

CC>Если бы. Продолжительные мучения в поисках "гдеж это я накосячил" куда скорее приводят к воплям "Язык говно!!!" на форумах, что мы периодически тут от подобных ниасиливших видим.

Они это и с отладчиком вопят, потому что такие звуки от начинающих говорят скорее о психологических проблемах конкретного индивидуума. Будьте уверены: на отладчике они не заканчиваются.

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

Кстати, в данном вопросе: а что такого начинающему, кроме скачущей по экрану полоски с выделенной строчкой кода, покажет отладчик? Я говорю именно о вообще начинающем программисте, опытный человек, если ранее не знал C++, но имеет опыт с другими языками, вообще иначе будет обучаться.

Как это не тривиально, но надо еще додуматься в отладчике посмотреть на значение конкретной переменной, чтобы увидеть присваивание в if. Для нас это пустяк, но действительно начинающий, он же везде начинающий.

С другой стороны, по простейшим тестам тоже можно заметить, что где-то в районе if произошло нежелательное присваивание.
Также и warning-и, если их не отключать, дадут более точную информацию чем отладчик.


M>> Отладчик начинающего программиста развращает умственно, он может его приучить к небрежности, привычке в случае проблем не головой думать, а F8 (или еще что-нибудь) тыкать.

CC>Какие высокие слова.
CC>Инструментарий надо знать и уметь им пользоваться всем. А то это получается как "оператор += приводит к раку мозга, вшам и диарее блаблабла, надо только x = x + ...".

Так я разве против знания инструментария? Вот только должна быть и определенная последовательность в обучении. Прежде чем ездить на пятой передаче стоит научиться это делать на первой.

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

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

CC>Я про то, что отказываться от отладчика на ранних этапах, когда обучаемый ещё не накопил опыта совершения и осознания ошибок попросту неэффективно. Чем быстрее он найдёт ошибку, тем быстрее он в ней разберётся и поймёт.


Да даже, чтобы правильно искать ошибку уже надо иметь некоторый опыт. Даже в педагогических целях полезно помучиться при поиске ошибки — лучше запоминается тогда. Не чрезмерно, конечно.

CC>Когда поведение кода зависит от кучи параметров ты в уме все эти параметры к конкретной точке ни в жизнь не просчитаешь. Посмотреть что именно творилось в переменных в данной точке программы отладчиком куда удобнее чем нашпиговывать в прогу debug output.


В уме — нет, на бумажке можно и просчитать. Не повредит даже имеющим опыт И это не ретроградство, а реально иногда бумага — самое удобное средство для выражения мыслей. Например, когда я писал на ассемблере код для FPU, именно на бумаге тщательно выписывал состояние стека FPU. Потом в код в комментарии перенес.

CC>И? Про серебрянную пулю и так речи не шло.


Ну и я не про полный запрет отладчика. Просто это достаточно мощный и серьезный инструмент для эффективного обращения с которым нужна определенная культура и навык программирования.
Re[6]: С - зло... :)
От: V__G Россия  
Дата: 15.01.11 11:33
Оценка:
Здравствуйте, 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 страниц.
Re[11]: С - зло... :)
От: CreatorCray  
Дата: 15.01.11 14:58
Оценка:
Здравствуйте, 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, значит пора закрыть эту страницу.
Всем пока
Re[7]: С - зло... :)
От: FR  
Дата: 17.01.11 15:49
Оценка: -1
Здравствуйте, The Lex, Вы писали:

A>>С альтернативами пока плохо.

A>>Но это не отменяет того факта, что в программировании накопилось дохрена идей,
A>>(например функциональное программирование) которые в С++ уже не впихнешь.

TL>А нужно впихнуть?


Скорее да чем нет, хотя бы в том же объеме что впихнули в D чистые функции и
полноценные лямбды.
Re[8]: С - зло... :)
От: FR  
Дата: 17.01.11 15:55
Оценка:
Здравствуйте, alpha21264, Вы писали:

TL>>Придется таки попробовать: уже плешь проели этим своим питоном.


A>Не боись. Я тоже недавно начал. Я не ожидал, что мне понравится


Питон для многих сишников обладает наркотическим эффектом
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.