Программистские ошибки для чайников
От: SE Украина  
Дата: 15.10.08 20:21
Оценка:
Cтатья "Программистские ошибки для чайников" обращена прежде всего к начинающим программистам. И, разумеется, содержит множество банальностей. Тем не менее прочесть было интересно
Re: Программистские ошибки для чайников
От: mishaa Россия http://kmmbvnr.livejournal.com
Дата: 16.10.08 04:44
Оценка: -1
Здравствуйте, SE, Вы писали:

SE>Cтатья "Программистские ошибки для чайников" обращена прежде всего к начинающим программистам. И, разумеется, содержит множество банальностей. Тем не менее прочесть было интересно


Мелко, как-то, не глубоко.

На ad-hoc решения — ad-hoc перечисления ошибок. Багофикс поверх готовых студентов .

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

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

Правда такой подход похоже характерен не только для обучения программированию. Даже в школькой математике едва обучив счету, рассказывая об отрицательных числах, предлагают зазубрить правило — "минус на минус дает плюс", не обсуждая почему оно так.
-- Главное про деструктор копирования не забыть --
Re[2]: Программистские ошибки для чайников
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 16.10.08 05:16
Оценка:
Здравствуйте, mishaa, Вы писали:

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


Хм, аксиоматика там довольно сложна. Предлагаешь её давать детям?
Re[3]: Программистские ошибки для чайников
От: mishaa Россия http://kmmbvnr.livejournal.com
Дата: 16.10.08 05:33
Оценка:
Здравствуйте, Nuzhny, Вы писали:


N>Хм, аксиоматика там довольно сложна. Предлагаешь её давать детям?


Ничего нового, после того как им расказали по сложение и умножение натуральных, для того чтобы объяснить почему при введении отрицательных чисел мы хотим чтобы -1*-1 = 1 не надо.
-- Главное про деструктор копирования не забыть --
Re[4]: Программистские ошибки для чайников
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 16.10.08 06:38
Оценка:
Здравствуйте, mishaa, Вы писали:

M>Ничего нового, после того как им расказали по сложение и умножение натуральных, для того чтобы объяснить почему при введении отрицательных чисел мы хотим чтобы -1*-1 = 1 не надо.


Видимо моё воображение, ограничивают знания аксиом. Как на пальцах это рассказать?

Например, при рассмотрении отрицательных чисел в качестве долга, можно рассказать про умножение отрицательного числа (долга) на положительное (во сколько раз долг увеличился). А отрицательное на отрицательное
Re[5]: Программистские ошибки для чайников
От: fmiracle  
Дата: 16.10.08 07:18
Оценка: +1
Здравствуйте, Nuzhny, Вы писали:

N>Видимо моё воображение, ограничивают знания аксиом. Как на пальцах это рассказать?

N>Например, при рассмотрении отрицательных чисел в качестве долга, можно рассказать про умножение отрицательного числа (долга) на положительное (во сколько раз долг увеличился). А отрицательное на отрицательное

Я не помню как нам давали в школе, но мне с детства казалось очевидным графическое объяснение.
Есть числовая ось. В право положительные числа, влево симметрично им отрицетельные. Вот 5 — симметрично ей (-5). (-5) это -1*5.
Полностью аналогично -(-5) будет симметрично к -5, т.е. 5.
С рисунком выглядит (на мой взгляд) вполне наглядно.

ну а -5 * -2 — это по сочетательному закону -1 * (-5) * 2. Сводим к предыдущему и умножению на положительное.
Re[6]: Программистские ошибки для чайников
От: mishaa Россия http://kmmbvnr.livejournal.com
Дата: 16.10.08 07:33
Оценка: -2 :)
Здравствуйте, fmiracle, Вы писали:

F>Я не помню как нам давали в школе, но мне с детства казалось очевидным графическое объяснение.

F>Есть числовая ось. В право положительные числа, влево симметрично им отрицетельные. Вот 5 — симметрично ей (-5). (-5) это -1*5.
F>Полностью аналогично -(-5) будет симметрично к -5, т.е. 5.
F>С рисунком выглядит (на мой взгляд) вполне наглядно.

F>ну а -5 * -2 — это по сочетательному закону -1 * (-5) * 2. Сводим к предыдущему и умножению на положительное.


Я бы объяснял примерно так:

Отрицательный числа появляются из-за желания всегда иметь решения для уравний a+x=b, ну или чтобы операция минус была всегда определена.

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

Что мы знаем о связи сложения и умножения для натуральных чисел? Только дистрибутивный закон: a(b+c) = a*b+a*c.

Было бы неплохо если бы этот закон сохранялся и в случае появления отрицательных.

Но если мы предположим что -1*-1 = -1, и возьмем a=-1, b=1, c=-1- мы с одной стороны получим -1*(1-1) = 0(по определению нуля о котором рассказано ранее), а с другой -1*1-1*(-1) = -2. Итак правило минус на минус — плюс, просто необходимо если мы пытаемся сохранить нашу систему числе компактной и красивой.
-- Главное про деструктор копирования не забыть --
Re[7]: Программистские ошибки для чайников
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 16.10.08 08:17
Оценка:
Здравствуйте, mishaa, Вы писали:

M>Я бы объяснял примерно так:


M>Отрицательный числа появляются из-за желания всегда иметь решения для уравний a+x=b, ну или чтобы операция минус была всегда определена.


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


M>Что мы знаем о связи сложения и умножения для натуральных чисел? Только дистрибутивный закон: a(b+c) = a*b+a*c.


M>Было бы неплохо если бы этот закон сохранялся и в случае появления отрицательных.


M>Но если мы предположим что -1*-1 = -1, и возьмем a=-1, b=1, c=-1- мы с одной стороны получим -1*(1-1) = 0(по определению нуля о котором рассказано ранее), а с другой -1*1-1*(-1) = -2. Итак правило минус на минус — плюс, просто необходимо если мы пытаемся сохранить нашу систему числе компактной и красивой.


Бедные дети.
Re[8]: Программистские ошибки для чайников
От: mishaa Россия http://kmmbvnr.livejournal.com
Дата: 16.10.08 08:35
Оценка:
Здравствуйте, Nuzhny, Вы писали:


M>>Но если мы предположим что -1*-1 = -1, и возьмем a=-1, b=1, c=-1- мы с одной стороны получим -1*(1-1) = 0(по определению нуля о котором рассказано ранее), а с другой -1*1-1*(-1) = -2. Итак правило минус на минус — плюс, просто необходимо если мы пытаемся сохранить нашу систему числе компактной и красивой.


N> Бедные дети.


Честно говоря, не понимаю сарказма. Четыре строчки объяснения vs "Зубрите, дети, зубрите"
-- Главное про деструктор копирования не забыть --
Re[9]: Программистские ошибки для чайников
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 16.10.08 08:52
Оценка:
Здравствуйте, mishaa, Вы писали:

M>Честно говоря, не понимаю сарказма. Четыре строчки объяснения vs "Зубрите, дети, зубрите"


Посмотри на вариант fmiracle, поищи примеры уроков, попробуй сравнить сложность твоего объяснения. Это же маленькие дети, им даже про доказательства ещё никто не говорил.
Re[7]: Программистские ошибки для чайников
От: fmiracle  
Дата: 16.10.08 09:31
Оценка: +1
Здравствуйте, mishaa, Вы писали:

M>Я бы объяснял примерно так:

M>Отрицательный числа появляются из-за желания всегда иметь решения для уравний a+x=b, ну или чтобы операция минус была всегда определена.

Я не помню школьную программу, но мне казалось, что отрицательные числа и умножение на минус единицу преподаются еще до введения самой идеи уравнения и, соответственно, правил их решения. Собственно, сложно решать уравнения если не владеешь идеей отрицательных чисел и операций над ними.
Re[10]: Программистские ошибки для чайников
От: mishaa Россия http://kmmbvnr.livejournal.com
Дата: 16.10.08 09:40
Оценка:
Здравствуйте, Nuzhny, Вы писали:


N>Это же маленькие дети, им даже про доказательства ещё никто не

говорил.

А где в вышеприведенных рассуждениях доказательство? Просто кубики с которыми мы играем не сложились как надо.

У fmiracle, как и у многих обучающих материалов — отстутсвует главное — цель рассуждений. Зачем нужны отрицательные числа, зачем они симметричны, зачем мы это делаем??

А потом люди удивляются почему вчерашние студенты пишут кучу кода в onClick. Они же не привыкли задумываться о цели действий, пишем как пишется, нажали туда, нажали сюда — задание выполненно.
-- Главное про деструктор копирования не забыть --
Re[8]: Программистские ошибки для чайников
От: mishaa Россия http://kmmbvnr.livejournal.com
Дата: 16.10.08 09:51
Оценка:
Здравствуйте, fmiracle, Вы писали:


F>Я не помню школьную программу, но мне казалось, что отрицательные числа и умножение на минус единицу преподаются еще до введения самой идеи уравнения


Порядок обучения я сейчас не рассматриваю.

F>что отрицательные числа и умножение на минус единицу преподаются еще до введения самой идеи уравнения и, соответственно


А зачем они вводятся? Просто так, чтобы детям было скушно?

Самое сложное в обучении это не рассказать о чем-то, а донести мысль как и почему до этого чего-то додумались. Рассказать о самом ходе мыслительного процесса.

Это отчетливо видно на примере обучения программированию, когда после стандартного обучения готовым языкам и фреймворкам, студентов перед выпуском приходится "патчить" вот такими лекциями как указанная выше.
-- Главное про деструктор копирования не забыть --
Re[3]: Программистские ошибки для чайников
От: Firecat Германия http://fireboltthrower.mybrute.com
Дата: 16.10.08 10:01
Оценка:
Здравствуйте, Nuzhny, Вы писали:

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


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


N>Хм, аксиоматика там довольно сложна. Предлагаешь её давать детям?


ничего сложного, сначала доказывется, что умножение на -1 является инверсией знака:



после этого очевидно, что



а все остальные умножения отрицательных сводятся к вышеуказаному.

домашнее задание: доказать, что



... << RSDN@Home 1.2.0 alpha 4 rev. 1102>>
"Computer Science is no more about computers than astronomy is about telescopes."

Edsger Wybe Dijkstra
Re[11]: Программистские ошибки для чайников
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 16.10.08 10:33
Оценка:
Здравствуйте, mishaa, Вы писали:

M>А где в вышеприведенных рассуждениях доказательство? Просто кубики с которыми мы играем не сложились как надо.


M>У fmiracle, как и у многих обучающих материалов — отстутсвует главное — цель рассуждений. Зачем нужны отрицательные числа, зачем они симметричны, зачем мы это делаем??


Вот здесь. 4-й класс. Все твои рассуждения им будут просто не-по-нят-ны.

M>А потом люди удивляются почему вчерашние студенты пишут кучу кода в onClick. Они же не привыкли задумываться о цели действий, пишем как пишется, нажали туда, нажали сюда — задание выполненно.


Не о том. В обсуждаемом предмете развитие детей просто не достигло уровня, на котором они могут понять твоё объяснение. Попробуй найти ребёнка и провести эксперимент. Или поговори с учительницей на эту тему.
Re: Программистские ошибки для чайников
От: GarryIV  
Дата: 16.10.08 12:49
Оценка:
Здравствуйте, SE, Вы писали:

SE>Cтатья "Программистские ошибки для чайников" обращена прежде всего к начинающим программистам. И, разумеется, содержит множество банальностей. Тем не менее прочесть было интересно


Использование статических методов, для решения бизнес-задачи. Если у вашего класса есть только поведение (методы), но нет свойств (полей), значит, вы неправильно провели анализ предметной области (не всегда, но чаще всего).


Спорно, ой как спорно. Про статику еще соглашусь но наличие\отсутсвие полей определенно ни на что не влияет.
WBR, Igor Evgrafov
Re[9]: Программистские ошибки для чайников
От: GarryIV  
Дата: 16.10.08 12:55
Оценка:
Здравствуйте, mishaa, Вы писали:

M>>>Но если мы предположим что -1*-1 = -1, и возьмем a=-1, b=1, c=-1- мы с одной стороны получим -1*(1-1) = 0(по определению нуля о котором рассказано ранее), а с другой -1*1-1*(-1) = -2. Итак правило минус на минус — плюс, просто необходимо если мы пытаемся сохранить нашу систему числе компактной и красивой.


N>> Бедные дети.


M>Честно говоря, не понимаю сарказма. Четыре строчки объяснения vs "Зубрите, дети, зубрите"


А я понимаю. Если кто из этих малышей поймет твои выкладки — будущий Ломоносов не иначе...
WBR, Igor Evgrafov
Re[9]: Программистские ошибки для чайников
От: fmiracle  
Дата: 16.10.08 13:09
Оценка:
Здравствуйте, mishaa, Вы писали:

M>А где в вышеприведенных рассуждениях доказательство? Просто кубики с которыми мы играем не сложились как надо.


Главное чтобы кубики не оказались прибиты к потолку, а то они точно не сложатся.

Ты когда-нибудь сам пробовал объяснять таким методом детям о числах? Смог ли ребенок потом осознанно воспроизвести ту же логику построений через 3 дня?

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

M>У fmiracle, как и у многих обучающих материалов — отстутсвует главное — цель рассуждений. Зачем нужны отрицательные числа, зачем они симметричны, зачем мы это делаем??


А зачем мы это делаем?
В математике нет понятия "зачем". Математика — это чисто абстрактная наука. Введено несколько правил и после этого из них постепенно выводится все остальное. Зачем 1+1 равно 2?

Числовая ось — это просто данность. Она необязательно должна быть на бумаге. Появляется она еще на счетных палочках (конструкторе, яблоках, чем угодно). Выкладывая палочки в ряд ребенок строит положительную полуось. Затем можно ее и рисовать для ускорения и повышения абстракции (это важно — для понимаиня математики нужно легко владеть абстракциями, а это далеко не всем детям, да и взрослым, дается легко. Поэтому надо аккуратно учить). На примере числовой оси наглядно демонстрируются базовые операции арифметики. Также можно легко продемонстрировать закономерности и показать сочетательный/распрелительный законы умножения.
Освоившись с положительными числами можно по аналогии переходить к отрицательным числам. Отрицательный числа — это чистая абстракция и вводить ее нужно осторожно. Как и 0, кстати.
Потом уже можно вводить переменные — это опять же абстракция.

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

Решать уравнения, когда еще нет уверенного манипулирования числами — можно, но напоминает постройку дома без фундамента.
Re: Программистские ошибки для чайников
От: FDSC Россия consp11.github.io блог
Дата: 16.10.08 13:10
Оценка:
Здравствуйте, SE, Вы писали:

SE>Cтатья "Программистские ошибки для чайников" обращена прежде всего к начинающим программистам. И, разумеется, содержит множество банальностей. Тем не менее прочесть было интересно


Ерунда полная. Хотя бы потому, что те самые "чайники" нефига не поймут
Re[2]: Программистские ошибки для чайников
От: SE Украина  
Дата: 16.10.08 13:26
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Ерунда полная. Хотя бы потому, что те самые "чайники" нефига не поймут


Да, по второму прочтению статья показалась более сумбурной чем в начале — автор очень скомкал "конспект". Я так понял из комментариев автора, что вся лекция на полтора часа с кучей примеров.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.