Комментарии 13
Написано хорошо, спасибо.
Материал данной статьи во многом опирается на 1-ый том «Программирование: введение в профессию» А. В. Столярова
Знаю такого, уважение Андрею Викторовичу за эту серию книг на самом деле.
А не слишком ли много будет это для школьного учебника. Вы хотите посвятить целое полугодие формальному определению алгоритма?
IMHO, в школе многие концепции даются в упрощенном, огрубленном виде. Для которых потом, через N лет, вводятся границы применимости.
И что параллельные прямые не пересекаются (введение в геометрию Лобачевского никто ведь сразу не дает?), и пресловутое на ноль делить нельзя (на кафедре матанализа расскажут когда можно и как это делать), и даже что cos может быть больше единицы (слышал, про это рассказывают на военных кафедрах).
Также и в этом случае. Сначала придется сформулировать определение. Потом если у кого-то из учеников возникнет интерес — упомянуть про ограничения определения, возникающие проблемы. Далее добавляется ваше и если учитель информатики адекватен, а интерес остался, организовать спецкурс.
Это близко к тому, что вы предлагаете: правильно обозначить проблему. Но
- Для обозначения проблемы нам нужно определение
- Рассказывать вообще всем ученика про счетные и континуум множества (вроде эти определения уже выход за программу) излишне. Потому что не всем это надо и не всем интересно. На мой взгляд.
- Те, кому надо — узнают после школы, на одном из курсов по алгоритмам и/или изучая разделы математики.
Я не спорю с утверждением в целом, лишь немного уточню.
И что параллельные прямые не пересекаются (введение в геометрию Лобачевского никто ведь сразу не дает?),
Параллельными называют непересекающиеся прямые, так что они действительно не пересекаются. Вы, наверное, имели в виду, 5-й постулат, который сейчас обычно формулируют так: «На плоскости через точку, не лежащую на прямой, можно провести одну и только одну прямую, параллельную данной».
Кстати, нам в школе, когда мы изучали геометрию, немного рассказывали про другие геометрии. Но я изучал математику углублённо, возможно, что в школах в самом деле про это не говорят.
и пресловутое на ноль делить нельзя (на кафедре матанализа расскажут когда можно и как это делать),
Если мы говорим про действительные числа (или вообще про поля или кольца), то на ноль и правда делить нельзя. На кафедре матанализа расскажут про пределы, а не про деление на ноль. А вот на кафедре алгебры могут рассказать про алгебраические структуры, в которых деление на ноль определено.
и даже что cos может быть больше единицы (слышал, про это рассказывают на военных кафедрах).
Часто комплексные числа изучают ещё до военной кафедры. :)
Вы слишком глубоко копнули, есть пример и попроще. В младшей школе, например, всегда вычитают меньшее из большего, так как дети ещё не знают отрицательных чисел.
В целом же я согласен. Школа не может вместить абсолютно всё. Теория алгоритмов (глубокая теория, конечно, а не основы, о которых пишет автор статьи) — это, скорее, тема для кружка, а не для урока.
Главное, как мне кажется:
- упрощать, но не говорить неправду, то есть не искажать факты, чтобы последующее знание не входило в противоречие со старым;
- отмечать, что это упрощённый взгляд и подробности можно найти там-то и там-то;
- обязательно давать подробности тем, кому они интересны;
- не требовать бездумного заучивания упрощённых определений, а сосредоточиться на понимании.
P.S. Студентов с курсовыми в «ворде» и презенташками в «поверпойнте» шлю далеким лесом. Исключительно латех!
www.niisi.ru/kumir/books/1.pdf
Хорошее дополнение к нему — лекции Кушниренко для преподавателей информатики:
www.niisi.ru/kumir/books/12.pdf
В принципе, всю эту запись можно сократить до одного абзаца из этих лекций:
В одном из пособий по информатике всерьез изучались такие надуманные «свойства» информации, как ее «своевременность» или «ясность». Эти придуманные (точнее, «бытовые») понятия легко объяснять, о них массу всего можно сочинить, о них легко говорить. Но ничего подобного в «настоящем» курсе информатики быть не должно. «Настоящий» означает, что следует взять науку под названием «Информатика» (англ.
«Computer science») и выбрать из нее то, что можно и нужно адаптировать для школьников. В школьном курсе можно ограничиться небольшим набором понятий, но нельзя их подменять легкими для изучения, но «ненастоящими» понятиями, не существующими ни в теоретической, ни в практической информатике.
В учебнике Полякова для 11 класса, кстати, неплохо про алгоритмы написано. Вот фрагмент про алгоритмы, ссылка на него есть на сайте автора. Тут нет страшных определений с перечислением свойств, но в то же время даётся понятие алгоритма, рассказывается про машины Тьюринга и Поста, про тезис Чёрча — Тьюринга.
хотя, скорее всего, нам так и не удастся ответить на вопрос, что такое алгоритмы...
Не разделяю Вашего пессимизма.
Дело в том, что определения алгоритма не существует, и кроме того, существовать не может, иначе пришлось бы выбросить на свалку целый раздел математики — теорию вычислимости...
Определение существует. На Хабр есть серия статей "Что такое алгоритм?!", в которой есть ссылки на это определение.
Таким образом, определив понятие алгоритма, мы будем вынуждены забыть о тезисе Черча-Тьюринга, и отказаться от целой математической теории, богатой содержанием и подарившую нам множество практических результатов.
Нет, представленное там определение алгоритма не перечёркивает обозначенную Вами математическую теорию, а расширяет и дополняет её.
Ваше нападение на существующие свойства алгоритма поддерживаю. Эти свойства действительно необходимо пересмотреть и систематизировать.
С уважением
Кто же ты такой, алгоритм?