vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
Вчера одна 15-летняя девушка, дочь моих хороших знакомых, с гордостью опубликовала в своём ЖЖ описание своих первых заработавших программ со школьных уроков по программированию.

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

Даже ежу (но не нашим школьным преподавателям информатики) понятно, что эта задача вообще-то решается по замкнутой формуле. Без всяких циклов. Гаусс, помнится, аналогичную задачу в третьем классе в уме решал, выведя указанную формулу самостоятельно. Современным школьникам, насколько я помню школьный курс алгебры, самостоятельно выводить формулу даже не надо. Надо только сообразить что эта задача решается по той формуле.

Соответственно, я запостил данной девушке коммент с подковыркой "Надеюсь эта программа не содержит циклов и скорость её не зависит от введенного числа?".

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

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

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

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

Удивительно не то, что этого не понимают замученные учениками и методистами школьные учителя. Удивительно то, что родители, которые вообще-то сами эти принципы знают и умеют ими пользоваться, не считают что в 15 лет им пора учить. Или не считают что им стоит учить на примере школьных заданий.
Page 1 of 4 << [1] [2] [3] [4] >>

Date: 2006-11-10 01:45 pm (UTC)
From: [identity profile] ashalynd.livejournal.com
Я когда-то читала подобную байку в "Науке и жизни". Только там уже была реальная задача, на обсчет которой требовались сотни ЭВМ-часов. Потом пришел какой-то профессор математики и упростил расчетные формулы до одного-единственного интеграла, и, кажется, для его взятия то ли вообще не нужна была машина, то ли это делалось совершенно тривиально.

Не зря у наз на физфаке на лабораторках запрещали пользоваться калькуляторами, по крайней мере на младших курсах :)

Date: 2006-11-10 01:47 pm (UTC)
From: [identity profile] orangerat.livejournal.com
Ничего удивительно. =) Всё в порядке вещей.

Date: 2006-11-10 01:49 pm (UTC)
From: [identity profile] illyn.livejournal.com
illyn: «Граниты» науки информатика (http://illyn.livejournal.com/3725.html) из старенького. Странно, но Гаусс тоже всплыл там в комментах…

чему учить

Date: 2006-11-10 02:06 pm (UTC)
From: [identity profile] blogrov.livejournal.com
удивительно - только что обьяснял сыну что такое циклы и вот читаю этот пост. Вы абсолютно правы. Надо в первую очередь учить думать. этот пример кстати очень удачный, когда можно показать решение в лоб и решение лучшее, показать чем оно лучше (я вот в шутку обьяснял что программистам лень набивать большие программы и поэтому они стараются писать программы проще).

Date: 2006-11-10 02:17 pm (UTC)
lodin: A bearded hacker in a hat (Default)
From: [personal profile] lodin
Вот у меня обратная ситуация: я буду искать нерутинное решение, даже если это займет больше времени, чем решение рутинное.

В результате институт я так и не кончил...

"Нужно что-то среднее, да где ж его взять" (с)

Re: чему учить

Date: 2006-11-10 02:23 pm (UTC)
From: [identity profile] blogrov.livejournal.com
Да. и еще вероятность ошибки у меньшей программы меньше .плохо только тем кто получает вознаграждение за строчки кода :)

Date: 2006-11-10 02:37 pm (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
"Работа в текстовом процессоре это в первую очередь не писание текста, а его оформление. Основы верстки. Верстка, особенно стилевая - это именно что работа с информацией, и место ей не в курсе русского языка, а в курсе информатики. Эта область деятельности с распространением компьютеров превратилась из узкопрофессиональной в массовую, и учить ей в школе надо."

здрасте приехали. на уроке русского языка тебя не учили красным строкам, абзацам, ценрированию заголовков, оформлению цитат и эпиграфов?

Date: 2006-11-10 02:52 pm (UTC)
From: [identity profile] grundik.livejournal.com
> ценрированию заголовков

При рукописной работе отцентрировать заголовок НЕВОЗМОЖНО.

Date: 2006-11-10 03:56 pm (UTC)
From: [identity profile] fenikso.livejournal.com
можно, этому учат в 1-2 классах, называется - аппликация :)

Date: 2006-11-10 04:20 pm (UTC)
From: [identity profile] os80.livejournal.com
По-моему, бывает, что проще тупо написать, чем вспоминать формулу. Вычисленное значение и понадобится то один раз. Что фундаментально - так умение разбивать программу на функции, которые можно потом независимо менять. Я год бился, пока стало более-менее получаться.
Зато читал "текст" по 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. Сэкономил, называется...

Date: 2006-11-10 04:21 pm (UTC)
From: [identity profile] slava-askeri.livejournal.com
Похоже на любимый пример Арнольда
"Французского школьника спросили,сколько будет 3+2 ?
"2+3 тут же ответил школьник,ведь сложение коммутативно"
В сущности речь идет о склейке разных пластов знания.Пока это получается плохо или вообще не получается.Скажем пошло программирование,значит забываем о формулах и прочих вещах не относящихся к делу и линейно подходим к вопросу.Пошла к примеру аксиоматика,значит только о коммутативности и можно говорить.Нельзя просто сказать что 2+3=5.
Сейчас мне кажется эта проблема гораздо глубже чем лет пять назад.Мне кажется проблема в том что образование не может выходить на склейки в массовом масштабе.

Date: 2006-11-10 05:21 pm (UTC)
From: (Anonymous)
По моему, совершенно очевидно, что за "оптимальную" программу (т.е. вычисляющую ответ просто по формуле) девушка бы просто получила неуд за невыполненное задание.
Адекватный преподаватель, который принял бы такую программу, не стал бы давать такое задание.

Date: 2006-11-10 05:32 pm (UTC)
From: [identity profile] jojoza.livejournal.com
http://infostore.org/info/2050422/stili.JPG (300 КБ)
это к вопросу о грамотном использовании стилей

Date: 2006-11-10 05:47 pm (UTC)
From: [identity profile] salas.livejournal.com
Проверка на простоту - вообще хорошая тема для интересных текстов:

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


Мультипроцессорность на десктопе (http://www.ferra.ru/online/processors/25556/), Лев Дымченко, ferra.ru.

Date: 2006-11-10 06:52 pm (UTC)
From: [identity profile] quappa.livejournal.com
:))))
Супер.

Re: чему учить

Date: 2006-11-10 07:01 pm (UTC)
From: [identity profile] breqwas.livejournal.com
Вот только не надо про компактность. Я сейчас перл учу, параллельно с чтением/написанием кода на нём...

Date: 2006-11-10 07:03 pm (UTC)
From: [identity profile] breqwas.livejournal.com
Блестяще :))))

Об образовании

Date: 2006-11-10 07:47 pm (UTC)
From: [identity profile] mrdim.livejournal.com
С образованием в мире и России в частности уже давно не все впорядке...
Достаточно отойти от математической темы и взглянуть на все остальное.
К примеру, детей учат в школе складывать цифры на денежных банкнотах, но не учат использовать свою финансовую смекалку. Каждый 3 ребенок большого города имеет кредитную карту... В школе не говорят, что с ней делать... об этом дети узнают на практическом опыте. Мировое образование создает огромную пропасть между людьми... Порождает богатство и бедность и пропасть между этими классами просто ужасает.

Date: 2006-11-10 08:09 pm (UTC)
From: [identity profile] zhuk-s.livejournal.com
отлично отлично :)
а про 6n +- 1 товарищ Дымченко, наверное, не слышал :)

Date: 2006-11-10 08:13 pm (UTC)
From: [identity profile] jek-hor.livejournal.com
Нормальный пример названия функции. Ну не знает человек английский достаточно хорошо.

А код не оптимальный, так не об этом же речь в примере идёт.

Re: Об образовании

Date: 2006-11-10 08:14 pm (UTC)
From: [identity profile] zhuk-s.livejournal.com
А еще у нас в школе знаете чему никогда не учили (может уже учат ? хм..)...
Настолько не учили, что даже утверждалось, что в СССР этого нет. Все приходилось узнавать на практическом опыте :)

Date: 2006-11-10 09:54 pm (UTC)
From: [identity profile] kdv2005.livejournal.com
Смешно, что я, будучи полностью согласным с Вами по существу (чему нужно учить в школе), все же не могу не возразить на Вашу критику именно этой задачи. Мне кажется, что в правильном контексте она полезна, и именно с таких задач и нужно начинать.

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

Однако грамотно составленное решение каждой из этих задач на компьютере требует модификации лишь одной строчки в цикле. Разве учить правильной структуризации не полезно?

Для обучения этому я бы даже начал с задания написать программу для вычисления суммы n первых членов последовательности, состоящей из единиц, постепенно усложняя характер зависимости членов последовательности от ее номера, пока не станет ясно, что вместо того, чтобы каждый раз догадываться, как именно просуммировать данную последовательность с помощью точной формуле, выгоднее написать универсальную программа, суммирующую всякую функцию. Особо продвинутые школьники могут догадаться, что саму функцию можно передавать в качестве параметра. У остальных будет шаблон, в котором нужно будет изменить лишь одну строчку. По-моему, неплохой результат при обучении информатике.

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

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

Date: 2006-11-10 09:56 pm (UTC)
From: [identity profile] kdv2005.livejournal.com
PS А вообще, думать, конечно, тоже нужно учить.
Page 1 of 4 << [1] [2] [3] [4] >>

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

June 2025

S M T W T F S
1 23 4567
891011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 4th, 2025 08:46 am
Powered by Dreamwidth Studios