Как стать автором
Обновить

Комментарии 13

Написано хорошо, спасибо.


Материал данной статьи во многом опирается на 1-ый том «Программирование: введение в профессию» А. В. Столярова

Знаю такого, уважение Андрею Викторовичу за эту серию книг на самом деле.

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

Зачем? Просто нужно в учебнике правильно обозначить проблему. А если у кого-то из учеников возникнет интерес, и если учитель информатики адекватен, то можно организовать спецкурс с добровольным посещением. И вот там-то подробненько и не торопясь разобрать вопрос. Тема-то любопытная.

IMHO, в школе многие концепции даются в упрощенном, огрубленном виде. Для которых потом, через N лет, вводятся границы применимости.
И что параллельные прямые не пересекаются (введение в геометрию Лобачевского никто ведь сразу не дает?), и пресловутое на ноль делить нельзя (на кафедре матанализа расскажут когда можно и как это делать), и даже что cos может быть больше единицы (слышал, про это рассказывают на военных кафедрах).


Также и в этом случае. Сначала придется сформулировать определение. Потом если у кого-то из учеников возникнет интерес — упомянуть про ограничения определения, возникающие проблемы. Далее добавляется ваше и если учитель информатики адекватен, а интерес остался, организовать спецкурс.
Это близко к тому, что вы предлагаете: правильно обозначить проблему. Но


  1. Для обозначения проблемы нам нужно определение
  2. Рассказывать вообще всем ученика про счетные и континуум множества (вроде эти определения уже выход за программу) излишне. Потому что не всем это надо и не всем интересно. На мой взгляд.
  3. Те, кому надо — узнают после школы, на одном из курсов по алгоритмам и/или изучая разделы математики.

Я не спорю с утверждением в целом, лишь немного уточню.


И что параллельные прямые не пересекаются (введение в геометрию Лобачевского никто ведь сразу не дает?),

Параллельными называют непересекающиеся прямые, так что они действительно не пересекаются. Вы, наверное, имели в виду, 5-й постулат, который сейчас обычно формулируют так: «На плоскости через точку, не лежащую на прямой, можно провести одну и только одну прямую, параллельную данной».


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


и пресловутое на ноль делить нельзя (на кафедре матанализа расскажут когда можно и как это делать),

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


и даже что cos может быть больше единицы (слышал, про это рассказывают на военных кафедрах).

Часто комплексные числа изучают ещё до военной кафедры. :)


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


В целом же я согласен. Школа не может вместить абсолютно всё. Теория алгоритмов (глубокая теория, конечно, а не основы, о которых пишет автор статьи) — это, скорее, тема для кружка, а не для урока.


Главное, как мне кажется:


  • упрощать, но не говорить неправду, то есть не искажать факты, чтобы последующее знание не входило в противоречие со старым;
  • отмечать, что это упрощённый взгляд и подробности можно найти там-то и там-то;
  • обязательно давать подробности тем, кому они интересны;
  • не требовать бездумного заучивания упрощённых определений, а сосредоточиться на понимании.
В школе вообще нужно в корне изменить подход к информатике. Потому что то, как она там сейчас проходит, только вредит! Все эти мастдайки-ворды-ëксели до добра не доведут!!! По-хорошему, надо сначала детей алгоритмам обучить, потом с командной строкой баша или zsh познакомить. А как научатся оперировать sed/grep/awk и т.п. (и из vim'а выходить ), можно про иксы рассказать. Ну и must have — курсы латеха. А то так и останутся тупыми обезьянами, которые в либреофисе «верстку» делают пробелами…
P.S. Студентов с курсовыми в «ворде» и презенташками в «поверпойнте» шлю далеким лесом. Исключительно латех!

Мне учительница информатики в школе как-то показала Emacs, и моя жизнь уже не была прежней. :)

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

www.niisi.ru/kumir/books/1.pdf

Хорошее дополнение к нему — лекции Кушниренко для преподавателей информатики:

www.niisi.ru/kumir/books/12.pdf

В принципе, всю эту запись можно сократить до одного абзаца из этих лекций:

В одном из пособий по информатике всерьез изучались такие надуманные «свойства» информации, как ее «своевременность» или «ясность». Эти придуманные (точнее, «бытовые») понятия легко объяснять, о них массу всего можно сочинить, о них легко говорить. Но ничего подобного в «настоящем» курсе информатики быть не должно. «Настоящий» означает, что следует взять науку под названием «Информатика» (англ.
«Computer science») и выбрать из нее то, что можно и нужно адаптировать для школьников. В школьном курсе можно ограничиться небольшим набором понятий, но нельзя их подменять легкими для изучения, но «ненастоящими» понятиями, не существующими ни в теоретической, ни в практической информатике.

В учебнике Полякова для 11 класса, кстати, неплохо про алгоритмы написано. Вот фрагмент про алгоритмы, ссылка на него есть на сайте автора. Тут нет страшных определений с перечислением свойств, но в то же время даётся понятие алгоритма, рассказывается про машины Тьюринга и Поста, про тезис Чёрча — Тьюринга.

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

Не разделяю Вашего пессимизма.


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

Определение существует. На Хабр есть серия статей "Что такое алгоритм?!", в которой есть ссылки на это определение.


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

Нет, представленное там определение алгоритма не перечёркивает обозначенную Вами математическую теорию, а расширяет и дополняет её.


Ваше нападение на существующие свойства алгоритма поддерживаю. Эти свойства действительно необходимо пересмотреть и систематизировать.


С уважением

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории