OberonCore https://forum.oberoncore.ru/ |
|
Техника программирования - техника декомпозиции? https://forum.oberoncore.ru/viewtopic.php?f=27&t=2550 |
Страница 1 из 3 |
Автор: | Валерий Лаптев [ Вторник, 13 Апрель, 2010 07:56 ] |
Заголовок сообщения: | Техника программирования - техника декомпозиции? |
Пришла в голову мысль. Вот мы говорим о необходимости постановки техники в программировании. Согласились с тем, что должны быть шаблоны-образцы использования языковых конструкций, которые надо "вбивать" в мозги программистов. Но ИМХО гораздо важнее научить декомпозиции - без этого никакие шаблоны использования не помогут. А вот научить декомпозиции бывает значительно сложнее. Во всяком случае я постоянно сталкиваюсь с тем, что начинающие программеры не в состоянии разложить большое действие на ряд простых и поставить их в нужном порядке. Как учить ТЕХНИКЕ ДЕКОМПОЗИЦИИ? На черепашках? У меня такие вопросы возникают потому, что у самого почему-то проблем не возникает, и мне часто не понятно, а что может быть студиозу непонятно? |
Автор: | Евгений Темиргалеев [ Вторник, 13 Апрель, 2010 09:22 ] |
Заголовок сообщения: | Re: Техника программирования - техника декомпозиции? |
Валерий Лаптев писал(а): Как учить ТЕХНИКЕ ДЕКОМПОЗИЦИИ? http://www.inr.ac.ru/~info21/troitsklic ... jetap6.htmНа черепашках? http://www.inr.ac.ru/~info21/ Цитата: Проект Информатика-21 ставит целью пропаганду и внедрение в систему образования Оберона/Компонентного Паскаля как практически идеальной единой платформы для обучения программированию и информатике.
На такой платформе учащихся можно провести от самых первых шагов (5й класс; см. репортаж) .... |
Автор: | Валерий Лаптев [ Вторник, 13 Апрель, 2010 09:36 ] |
Заголовок сообщения: | Re: Техника программирования - техника декомпозиции? |
У меня одна большая сложность по сравнению с ФВ. У него - школьники-пятиклашки. А у меня - студенты 1-го курса. И в учебном плане просто нет места для черепашек. Если только менять программу одной-двух дисциплин. И еще преподов научить этому подходу. Но действительно, получается неплохо. Правда нас учили в кодах Минска-22 писать вычисление формул. Тоже сильно помогает понимать декомпозицию. |
Автор: | Info21 [ Вторник, 13 Апрель, 2010 09:45 ] |
Заголовок сообщения: | Re: Техника программирования - техника декомпозиции? |
Валерий Лаптев писал(а): У меня одна большая сложность по сравнению с ФВ. У него - школьники-пятиклашки. А у меня - студенты 1-го курса. Во-первых, 5-клашек учить гораздо труднее. Во-вторых, у меня есть весь спектр по аспирантов включительно.
|
Автор: | Info21 [ Вторник, 13 Апрель, 2010 09:47 ] |
Заголовок сообщения: | Re: Техника программирования - техника декомпозиции? |
Валерий Лаптев писал(а): Как учить ТЕХНИКЕ ДЕКОМПОЗИЦИИ? Чтобы начинать говорить о декомпозиции, нужно иметь К ЧЕМУ декомпоновать.
|
Автор: | Валерий Лаптев [ Вторник, 13 Апрель, 2010 10:24 ] |
Заголовок сообщения: | Re: Техника программирования - техника декомпозиции? |
Info21 писал(а): Валерий Лаптев писал(а): Как учить ТЕХНИКЕ ДЕКОМПОЗИЦИИ? Чтобы начинать говорить о декомпозиции, нужно иметь К ЧЕМУ декомпоновать.Ну правильно! Формула - к последовательности команд Минска-22... Но аспирантов вы же не на черепашках учите? Я так понимаю, что их декомпозиции вообще учить не требуется... Кстати, а чем вы сайт пополняете? С помощью какого инструмента? Или ручками в html? |
Автор: | ==== [ Вторник, 13 Апрель, 2010 20:08 ] |
Заголовок сообщения: | Re: Техника программирования - техника декомпозиции? |
Info21 писал(а): Во-первых, 5-клашек учить гораздо труднее. Info21, Каждый год слышим о 5-клашках, куда они деваются, чем они заняты перейдя в 6, 7, 8, 9 класс? |
Автор: | ==== [ Вторник, 13 Апрель, 2010 20:44 ] |
Заголовок сообщения: | Re: Техника программирования - техника декомпозиции? |
Валерий Лаптев писал(а): Как учить ТЕХНИКЕ ДЕКОМПОЗИЦИИ? Учить ТЕХНИКЕ ДЕКОМПОЗИЦИИ не надо, это ведь одна из операций алгоритмизации задачи. Следовательно надо научить алгоритмизации.Алгоритмизация нужна не только перед программированием, но и при организации любой деятельности. В теме: Культурология языка Дракон 02 Июнь, 2008 http://forum.oberoncore.ru/viewtopic.php?p=15870#p15870 Владимир Паронджанов писал(а): НЕДОСТАТОК ПОЗИЦИИ АКАДЕМИКА ЕРШОВА Ершов смотрел на проблему по-крупному, порою не различая деталей (в ту пору это было вполне извинительно). Однако есть деталь, которую следует признать важной. Это различие между ПРОГРАММИРОВАНИЕМ И АЛГОРИТМИЗАЦИЕЙ. Моя мысль состоит в следующем. 1. Обучение программированию является важной задачей. Но эта задача касается сравнительно небольшого числа людей. Обучение программированию не может и не должно быть массовым. 2. Что касается алгоритмизации (понимаемой, в частности, как формализация собственных процедурных знаний), то эта задача может и должна быть предметом массового обучения. АЛГОРИТМИЗАЦИЯ — ВТОРАЯ ГРАМОТНОСТЬ? Развивая идеи академика Ершова, учитывая его ошибки и реалии сегодняшнего дня, можно сделать следующие замечания:
• Массовое обучение алгоритмизации, наоборот, полезно и необходимо. • В обществе знаний во многих случаях возникает острая необходимость формализовать собственные процедурные профессиональные знания специалистов. Такое умение должно стать частью их профессиональной культуры. • Алгоритмы пригодны для описания человеческой деятельности (работы), которая состоит из действий. АЛГОРИТМИЗАЦИЯ ТРУДНА. МОЖНО ЛИ СДЕЛАТЬ ЕЕ ЛЕГКОЙ? Использование дружелюбного алгоритмического языка Дракон кардинальным образом облегчает труд алгоритмизации и повышает его производительность. Следовательно, язык Дракон пригоден для эффективной автоформализации процедурных знаний. Обучению программированию обязательно должно предшествовать обучение алгоритмизации. |
Автор: | Илья Ермаков [ Вторник, 13 Апрель, 2010 21:14 ] |
Заголовок сообщения: | Re: Техника программирования - техника декомпозиции? |
У меня в этом году в курсе несколько начальных занятий посвящено чисто алгоритмам, рисуемым на доске (ДРАКОН-схемой и рядом на КП), по разным жизненным примерам. Впечатления - удачно. Сразу надо вводить понятие вспомогательного алгоритма - процедуры. Житейские примеры имеют то преимущество, что там можно показать эту "бесконечную декомпозицию": т.е. что любое действие можно рассматривать или как элементарное, или как реализованное процедурой, состоящее из поддействий. Удалось даже понятие инварианта цикла понятно проиллюстрировать уже на этом этапе. |
Автор: | Валерий Лаптев [ Среда, 14 Апрель, 2010 07:01 ] |
Заголовок сообщения: | Re: Техника программирования - техника декомпозиции? |
Илья Ермаков писал(а): У меня в этом году в курсе несколько начальных занятий посвящено чисто алгоритмам, рисуемым на доске (ДРАКОН-схемой и рядом на КП), по разным жизненным примерам. Впечатления - удачно. Сразу надо вводить понятие вспомогательного алгоритма - процедуры. Житейские примеры имеют то преимущество, что там можно показать эту "бесконечную декомпозицию": т.е. что любое действие можно рассматривать или как элементарное, или как реализованное процедурой, состоящее из поддействий. Удалось даже понятие инварианта цикла понятно проиллюстрировать уже на этом этапе. Ценно! Совпадает с практикой ФВ у пятиклашек - там тоже получилось, что процедуры надо вводить раньше циклов. |
Автор: | Valery Solovey [ Среда, 14 Апрель, 2010 10:50 ] |
Заголовок сообщения: | Re: Техника программирования - техника декомпозиции? |
Валерий Лаптев писал(а): ... нас учили в кодах Минска-22 писать вычисление формул. Тоже сильно помогает понимать декомпозицию. Не помогает, а стимулирует в желании понять, что это такое. Потому что Вы своим примером можете показать скорость разработки и уменьшение количества ошибок по сравнению с аналогичной программой у студентов. А затем сказать, что причина тому - правильная декомпозиция. Поскольку на практических занятиях времени мало, то большинству очень захочется уметь правильно выполнять декомпозицию уже только по этой причине.
|
Автор: | Info21 [ Среда, 14 Апрель, 2010 10:59 ] |
Заголовок сообщения: | Re: Техника программирования - техника декомпозиции? |
Геннадий Тышов писал(а): Info21 писал(а): Во-первых, 5-клашек учить гораздо труднее. Info21, Каждый год слышим о 5-клашках, куда они деваются, чем они заняты перейдя в 6, 7, 8, 9 класс? |
Автор: | Valery Solovey [ Среда, 14 Апрель, 2010 11:42 ] |
Заголовок сообщения: | Re: Техника программирования - техника декомпозиции? |
Валерий Лаптев писал(а): А вот научить декомпозиции бывает значительно сложнее. Во всяком случае я постоянно сталкиваюсь с тем, что начинающие программеры не в состоянии разложить большое действие на ряд простых и поставить их в нужном порядке. Черепашки тут не помогут. Лучше всего тут поможет опыт. Но опыт не в программировании.Как учить ТЕХНИКЕ ДЕКОМПОЗИЦИИ? На черепашках? Или лучше пойду с другого конца. Одним из важных компонентов правильного выполнения декомпозиции является знание формальной логики как минимум в пределах, необходимых для чёткого понимания того, какое понятие - широкое, а какое - узкое. Это знание важно само по себе, но для целей декомпозиции важнее сами механизмы, позволяющие определить область понятия. Например, анализ определения понятия. Другой компонент - наличие определения каждого объекта программы, подвергаемого декомпозиции. И вот здесь появляется принципиальная трудность. Зачастую, программист сам должен давать определения вновь появляющимся элементам (например, после очередного этапа декомпозиции). Помочь здесь может только жизненный опыт (накопленные понятия и их определения) и та часть формальной логики, про которую я говорил. Во-первых практика анализа определений помогает видеть ошибки уже на этапе составления определения, а во-вторых, после составления определения его можно уже целиком проанализировать и оценить, не является ли оно слишком узким. Процесс декомпозиции заключается в нахождении определения понятия. Определение понятия - это другие понятия и отношения между ними. Процесс декомпозиции заканчивается, когда понятия текущего уровня декомпозиции выражаются в понятиях исполнителя. Исполнителем может быть процессор, видеокарта, принтер, другая периферия. Грубо говоря - так. Таким образом, для старших классов и выше предлагаю писать определения (на доске, в тетради) без написания собственно программы. По началу. Скажем, одно практическое занятие в начале полугодия и одно в середине. А черепашка здесь не поможет. Вот такой макет. Пусть педагоги его рассмотрят и подкорректируют. |
Автор: | Евгений Темиргалеев [ Среда, 14 Апрель, 2010 12:11 ] |
Заголовок сообщения: | Re: Техника программирования - техника декомпозиции? |
Valery Solovey писал(а): Процесс декомпозиции заключается в нахождении определения понятия. Погрешу, сдеру определение из википедии:... А черепашка здесь не поможет. Цитата: Декомпози́ция — научный метод, использующий структуру задачи и позволяющий заменить решение одной большой задачи решением серии меньших задач. Задача рисования черепашкой дома спокойно делится на рисование стен, окон, двери и т.п.
|
Автор: | Евгений Темиргалеев [ Среда, 14 Апрель, 2010 12:19 ] |
Заголовок сообщения: | Re: Техника программирования - техника декомпозиции? |
Гм... а если ввести возможность установить ограничения на уровень вложенности для составных операторов и длину последовательности операторов? Под курс/набор задач можно подобрать величину опытным путём, и... пусть компилятор принуждает к декомпозиции... |
Автор: | Valery Solovey [ Среда, 14 Апрель, 2010 12:23 ] |
Заголовок сообщения: | Re: Техника программирования - техника декомпозиции? |
Я дал более узкое понятие, соответствующее контексту. А к определению из википедии у меня претензии. Почему научный метод? Им не учёные не пользуются? Что значит "серия задач"? Может, ситема для них - это набор элементов? Подозреваю, там тоже дано частное определение. |
Автор: | Valery Solovey [ Среда, 14 Апрель, 2010 12:25 ] |
Заголовок сообщения: | Re: Техника программирования - техника декомпозиции? |
Евгений Темиргалеев писал(а): Гм... а если ввести возможность установить ограничения на уровень вложенности для составных операторов и длину последовательности операторов? Но компилятор отвечает за синтаксическую составляющую. А декомпозиция лежит на семантическом уровне.
Под курс/набор задач можно подобрать величину опытным путём, и... пусть компилятор принуждает к декомпозиции... |
Автор: | Info21 [ Среда, 14 Апрель, 2010 12:32 ] |
Заголовок сообщения: | Re: Техника программирования - техника декомпозиции? |
Valery Solovey писал(а): А к определению из википедии у меня претензии. Да, недодуманное определение.А про тетрадь вместо клавы -- это тонко подмечено. Одна проблема: комп их прям как магнит притягивает. Очень трудно приучать к карандашу и бумаге. |
Автор: | Евгений Темиргалеев [ Среда, 14 Апрель, 2010 17:20 ] |
Заголовок сообщения: | Re: Техника программирования - техника декомпозиции? |
Valery Solovey писал(а): Евгений Темиргалеев писал(а): Гм... а если ввести возможность установить ограничения на уровень вложенности для составных операторов и длину последовательности операторов? Но компилятор отвечает за синтаксическую составляющую. А декомпозиция лежит на семантическом уровне.Под курс/набор задач можно подобрать величину опытным путём, и... пусть компилятор принуждает к декомпозиции... Вроде этого: одну-две-три доски забора можно нарисовать одной процедурой, а для длинного забора (длинный) набор команд черепашка "запомнить не может". Поэтому придётся выделять команду рисования доски в отдельную процедуру. |
Автор: | igor [ Среда, 14 Апрель, 2010 17:35 ] |
Заголовок сообщения: | Re: Техника программирования - техника декомпозиции? |
Предлагаю не зацикливаться на декомпозиции, есть ещё абстрагирование (тоже успешно борется с излишней сложностью). Для юного программиста не менее важная "вестчь". |
Страница 1 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |