О том чему учить
Nov. 10th, 2006 01:40 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Вчера одна 15-летняя девушка, дочь моих хороших знакомых, с гордостью опубликовала в своём ЖЖ описание своих первых заработавших программ со школьных уроков по программированию.
Среди них была программа для подсчета суммы всех четных чисел меньших заданного.
Даже ежу (но не нашим школьным преподавателям информатики) понятно, что эта задача вообще-то решается по замкнутой формуле. Без всяких циклов. Гаусс, помнится, аналогичную задачу в третьем классе в уме решал, выведя указанную формулу самостоятельно. Современным школьникам, насколько я помню школьный курс алгебры, самостоятельно выводить формулу даже не надо. Надо только сообразить что эта задача решается по той формуле.
Соответственно, я запостил данной девушке коммент с подковыркой "Надеюсь эта программа не содержит циклов и скорость её не зависит от введенного числа?".
Совершенно неожиданно для меня отец и отчим этой девушки, взрослые люди, профессиональные программисты, один из которых имеет опыт руководства крупным проектом, а другой весьма уверенно растет в неплохого software architect в один голос стали высказываться на тему того, что я не по делу вмешиваюсь в учебный процесс, и вообще не рановато ли таким сложным вещам девочку учить (девочка на вид выглядит совершенно взрослой дамой, и на ролевых играх успешно играет весьма непростых взрослых персонажей, чья роль требует решения нетривиальных задач).
А ведь по хорошему счету, тот навык на который я намекнул в своей подковырке, существенно важнее, чем знание конкретного языка программирования, и даже императивного программирования вообще. И учить в школе надо именно ему, а не конкретике, используя конкретику только для иллюстрации применения метода.
Возможно, девушке никогда в жизни не придется писать программы. Но почти наверняка ей придется работать на компьютере с текстами, или с табличными данными. Нынче это даже для ведения личных финансов необходимо.
Поэтому понимание того, что привлечение знаний из соседней предметной области может превратить длинную и нудную работу (не важно выполняешь ты её руками и мышью, или у тебя программа по циклу бегает) в одномоментную операцию, в жизни пригодится всегда. Кстати, аналогия между длительной ручной работой, и программой считающей что-либо в лоб - тоже не бессмысленное знание.
Удивительно не то, что этого не понимают замученные учениками и методистами школьные учителя. Удивительно то, что родители, которые вообще-то сами эти принципы знают и умеют ими пользоваться, не считают что в 15 лет им пора учить. Или не считают что им стоит учить на примере школьных заданий.
Среди них была программа для подсчета суммы всех четных чисел меньших заданного.
Даже ежу (но не нашим школьным преподавателям информатики) понятно, что эта задача вообще-то решается по замкнутой формуле. Без всяких циклов. Гаусс, помнится, аналогичную задачу в третьем классе в уме решал, выведя указанную формулу самостоятельно. Современным школьникам, насколько я помню школьный курс алгебры, самостоятельно выводить формулу даже не надо. Надо только сообразить что эта задача решается по той формуле.
Соответственно, я запостил данной девушке коммент с подковыркой "Надеюсь эта программа не содержит циклов и скорость её не зависит от введенного числа?".
Совершенно неожиданно для меня отец и отчим этой девушки, взрослые люди, профессиональные программисты, один из которых имеет опыт руководства крупным проектом, а другой весьма уверенно растет в неплохого software architect в один голос стали высказываться на тему того, что я не по делу вмешиваюсь в учебный процесс, и вообще не рановато ли таким сложным вещам девочку учить (девочка на вид выглядит совершенно взрослой дамой, и на ролевых играх успешно играет весьма непростых взрослых персонажей, чья роль требует решения нетривиальных задач).
А ведь по хорошему счету, тот навык на который я намекнул в своей подковырке, существенно важнее, чем знание конкретного языка программирования, и даже императивного программирования вообще. И учить в школе надо именно ему, а не конкретике, используя конкретику только для иллюстрации применения метода.
Возможно, девушке никогда в жизни не придется писать программы. Но почти наверняка ей придется работать на компьютере с текстами, или с табличными данными. Нынче это даже для ведения личных финансов необходимо.
Поэтому понимание того, что привлечение знаний из соседней предметной области может превратить длинную и нудную работу (не важно выполняешь ты её руками и мышью, или у тебя программа по циклу бегает) в одномоментную операцию, в жизни пригодится всегда. Кстати, аналогия между длительной ручной работой, и программой считающей что-либо в лоб - тоже не бессмысленное знание.
Удивительно не то, что этого не понимают замученные учениками и методистами школьные учителя. Удивительно то, что родители, которые вообще-то сами эти принципы знают и умеют ими пользоваться, не считают что в 15 лет им пора учить. Или не считают что им стоит учить на примере школьных заданий.
no subject
Date: 2006-11-10 01:45 pm (UTC)Не зря у наз на физфаке на лабораторках запрещали пользоваться калькуляторами, по крайней мере на младших курсах :)
no subject
Date: 2006-11-13 11:33 am (UTC)no subject
Date: 2006-11-10 01:47 pm (UTC)no subject
Date: 2006-11-10 01:49 pm (UTC)no subject
Date: 2006-11-10 02:13 pm (UTC)По следующим пунктам:
1. Работа в текстовом процессоре это в первую очередь не писание текста, а его оформление. Основы верстки. Верстка, особенно стилевая - это именно что работа с информацией, и место ей не в курсе русского языка, а в курсе информатики. Эта область деятельности с распространением компьютеров превратилась из узкопрофессиональной в массовую, и учить ей в школе надо.
2. Кроме текстовых процессоров и математических пакетов бывают электронные таблицы. Учить пользоваться ими, причем не только как инструментом для оформления, но и инструментом для организации данных и инструментом для вычислений - тоже надо. Сейчас люди этого в массе своей не умеют, в результате непроизводительно расходуют многие часы и дни. С математическими пакетами 90% учеников дела иметь не будут никогда, а вот с личными финансами - придется всем.
3. Нужно давать представление о том, чем отличается организация табличных данных для восприятия человеком, от организации для машинной обработки. Представление о том, что дублирование - источник трудноуловимых ошибок. Здесь уже спредшитом не обойдешься, нужно давать десктопные БД вроде MS Access или OpenOffice base.
4. Необходимо давать представление о работе с графикой, аудио- и видеоинформацией. Отличия векторной графики от растровой - фундаментальны. Это не техническая особенность реализации, это разные способы моделирования реальных и абстрактных объектов в компьютере. Понимание что такое сжатие с потерями, а что такое - без потерь - тоже достаточно фундаментальная концепция. Причем имеющая практический выход ещё до окончания школы - при возне с любимой музыкой и фотографиями любимой кошки. В школьной программе сейчас не предусмотрено курса, куда бы вписывалась фотография и видеосъемка как практическая деятельность. Да и аудиозапись к урокам музыки имеет весьма опосредованное отношение.
5. Что касается программирования, то та база которую я изложил в данном посте, необходима вообще в жизни.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:Re: Reply to your comment...
From:Re: Reply to your comment...
From:Re: Reply to your comment...
From:Re: Reply to your comment...
From:Re: Reply to your comment...
From:чему учить
Date: 2006-11-10 02:06 pm (UTC)Re: чему учить
Date: 2006-11-10 02:15 pm (UTC)я вот в шутку обьяснял что программистам лень набивать большие программы и поэтому они стараются писать программы проще
В каждой шутке, конечно, есть доля шутки. Но в этой - доля шутки практически незаметна. С учетом того, что программу мало набить, её надо отладить, а потом кто-то будет её читать и понимать как она работает, писать программы проще и компактнее нужно именно из-за того, чтобы сэкономить время и силы на их последующее сопровождение.
Re: чему учить
From:Re: чему учить
From:Re: чему учить
From:Re: чему учить
From:(no subject)
From:(no subject)
From:Re: чему учить
From:Re: чему учить
From:Re: чему учить
Date: 2006-11-13 06:10 am (UTC)ну долго пытался рисовать класску жанра не доступную детям в простых ощущениях.
потом я вмешался и объяснил детям что цикл это когда варишь картошку - простейший циклический процесс.
Препод был в шоке некоторое время, детям тоже понравилось.
Re: чему учить
From:no subject
Date: 2006-11-10 02:17 pm (UTC)В результате институт я так и не кончил...
"Нужно что-то среднее, да где ж его взять" (с)
no subject
Date: 2006-11-11 11:54 am (UTC)no subject
Date: 2006-11-10 04:20 pm (UTC)Зато читал "текст" по Ruby, где говорится о важности хороших названий для функций, а потом приводится такой код:
def simple?(number)
return false if number == 1
for i in (2..number/2)
return false if number % i == 0
end
return true
end
Простое число по английски prime number, а simple number это "однозначное число" (не знаю что такое, но думаю, что число из одной цифры).
А особенно меня умиляет вот это number/2. Сэкономил, называется...
no subject
Date: 2006-11-10 05:47 pm (UTC)Мультипроцессорность на десктопе (http://www.ferra.ru/online/processors/25556/), Лев Дымченко, ferra.ru.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:лучший коммент!
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2006-11-10 08:13 pm (UTC)А код не оптимальный, так не об этом же речь в примере идёт.
(no subject)
From:(no subject)
From:no subject
Date: 2006-11-10 04:21 pm (UTC)"Французского школьника спросили,сколько будет 3+2 ?
"2+3 тут же ответил школьник,ведь сложение коммутативно"
В сущности речь идет о склейке разных пластов знания.Пока это получается плохо или вообще не получается.Скажем пошло программирование,значит забываем о формулах и прочих вещах не относящихся к делу и линейно подходим к вопросу.Пошла к примеру аксиоматика,значит только о коммутативности и можно говорить.Нельзя просто сказать что 2+3=5.
Сейчас мне кажется эта проблема гораздо глубже чем лет пять назад.Мне кажется проблема в том что образование не может выходить на склейки в массовом масштабе.
no subject
Date: 2006-11-10 11:02 pm (UTC)no subject
Date: 2006-11-10 05:21 pm (UTC)Адекватный преподаватель, который принял бы такую программу, не стал бы давать такое задание.
no subject
Date: 2006-11-12 05:07 pm (UTC)А может быть и больше чем два варианта. Например, еще имеет смысл написать вариант где числа с плавающей точкой. Там результат будет зависеть от порядка суммирования.
(no subject)
From:Об образовании
Date: 2006-11-10 07:47 pm (UTC)Достаточно отойти от математической темы и взглянуть на все остальное.
К примеру, детей учат в школе складывать цифры на денежных банкнотах, но не учат использовать свою финансовую смекалку. Каждый 3 ребенок большого города имеет кредитную карту... В школе не говорят, что с ней делать... об этом дети узнают на практическом опыте. Мировое образование создает огромную пропасть между людьми... Порождает богатство и бедность и пропасть между этими классами просто ужасает.
Re: Об образовании
Date: 2006-11-10 08:14 pm (UTC)Настолько не учили, что даже утверждалось, что в СССР этого нет. Все приходилось узнавать на практическом опыте :)
Re: Об образовании
From:no subject
Date: 2006-11-10 09:54 pm (UTC)То, что существует элементарная замкнутая формула для суммы последовательных четных чисел -- в определенном смысле -- математическая случайность. Формула эта простая и школьникам ее полагается знать. Но я не уверен, что они знают формулу суммы квадратов последовательных натуральных чисел, хотя, наверное, кое-кто знает. И уж совсем не обязательно им знать формулу для суммы кубов последовательных натуральных чисел, хотя самые сильные ее наверняка смогут получить. Но и большинству из них, скорее всего, будет не по силам получить формулу для суммы синусов последовательных натуральных чисел, в школе этому не учат. Ну, я не имею в виду олимпиадников, учеников физмат школ и прочий подготовленный народ. Просто такие знания выходят за рамки требований от обычного школьника.
Однако грамотно составленное решение каждой из этих задач на компьютере требует модификации лишь одной строчки в цикле. Разве учить правильной структуризации не полезно?
Для обучения этому я бы даже начал с задания написать программу для вычисления суммы n первых членов последовательности, состоящей из единиц, постепенно усложняя характер зависимости членов последовательности от ее номера, пока не станет ясно, что вместо того, чтобы каждый раз догадываться, как именно просуммировать данную последовательность с помощью точной формуле, выгоднее написать универсальную программа, суммирующую всякую функцию. Особо продвинутые школьники могут догадаться, что саму функцию можно передавать в качестве параметра. У остальных будет шаблон, в котором нужно будет изменить лишь одну строчку. По-моему, неплохой результат при обучении информатике.
Одна задача, вырванная из контекста, слишком уязвима для критики в силу своей чрезмерной простоты, но встройте ее в цикл все более усложняющихся заданий, и она станет лишь первым шагом учащегося ходить младенца. А срезать углы он сам начнет, когда бегать будет. К примеру, приведенный выше цикл заданий вполне может натолкнуть и на вопрос -- а нет ли общей формулы для ответа, и нельзя ли ее угадать для сумм разных степеней...
И еще, несмотря на весь идиотизм ситуации, цикл, суммирующий последовательные четные числа, сам рассказывает, что он делает, а формула для суммы арифметической прогресии дает лишь ответ, происхождение которого скрыто от того, кто изучает (и, возможно, отлаживает) написанный код. Семантически первый вариант предпочтительнее второго, хотя математически они эквивалентны. Так же, как семантически предпочтительнее использовать в вычислениях константу PI, а не ее приближенное значение, принятое по соглашению в данном языке за отношение длины окружности к диаметру.
no subject
Date: 2006-11-10 09:56 pm (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2006-11-10 10:27 pm (UTC)no subject
Date: 2006-11-11 12:50 am (UTC)a, b, c, … x, y, z
где abc это 2 4 6, а xyz — последние чётные числа нашего ряда перед заданым числом:
a+z = b+y = c+x
и так далее. Число подобных пар, каждая из которых одинакова по сумме, равна
«исходное число» — 1 делить на 4 (нацело, доли не потребуются)
и получается, что надо просто посчитать что либо причём мгновенно и от величины введённого числа скорость получения результата меняться не будет по формуле:
2+z * "исходное число"-1 / 4
и всё
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From: (Anonymous) - Date: 2006-11-14 06:10 am (UTC) - Expand(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2006-11-11 07:26 pm (UTC)тока я думаю что родители не очень то сами понимают математику и честно лоханулись а потом пытались оправдаться.
(знаем мы этих типа крутых архитектов из очень крутых контор - пользовались мы программами очень крутых контор... было дело)
no subject
Date: 2006-11-12 07:41 pm (UTC)no subject
Date: 2006-11-13 09:58 am (UTC)А сворачивание в формулу это дзен и не-деяние (:
no subject
Date: 2006-11-13 04:18 pm (UTC)