OberonCore https://forum.oberoncore.ru/ |
|
проблемы коррекционного обучения https://forum.oberoncore.ru/viewtopic.php?f=8&t=4082 |
Страница 1 из 1 |
Автор: | Info21 [ Среда, 12 Сентябрь, 2012 11:00 ] |
Заголовок сообщения: | проблемы коррекционного обучения |
Вчера в процессе жизни имел беседу с дежурным участковым, которая оказалась коррекционным психологом по образованию. Отсюда название темы. А суть темы -- в следующем вопросе, который его автор (viewtopic.php?p=74639#p74639) не отрефлексировал как тему отдельной ветки, приходится, вот, за него это делать (не знаю, как поставить хмурый смайлик): Валерий Лаптев писал(а): Отметил у 2 курса (бывший 1-й) типичную программистскую установку: изучаем язык как некую интересную сущность, а не как средство решения возникающих задач. Есть подозрение, что самый лучший способ -- еще в школе разделить алгоритмику и изучение ошибок дизайна конкретных языков.Должен сказать, достаточна типичная установка - у самого такие были. Как исправлять? Начать с алгоритмики, растолковать базовые понятия, а потом -- где-то ближе к подготовке к ЕГЭ -- специально пройтись по старому паскалю, по Це -- трактуя их именно как наглядное пособие по ошибкам дизайна. Только надо объяснять, почему это ошибки. Возможно, и в университете это сработало бы. И еще объяснять, что фокусы на уровне нотации ведут к брейнфаку и никуда больше. Тут, правда, полезно, чтобы аудитория уже понимала, что на уровне железа всё устроено по сути примитивно. Иначе правильно про брейнфак не поймут. |
Автор: | Info21 [ Среда, 12 Сентябрь, 2012 11:06 ] |
Заголовок сообщения: | проблемы коррекционного обучения -- отучение от FOR |
Где-то упоминал, но надо собрать сюда (тему не стоит ограничивать одним узким вопросом). Один крендель в продвинутой группе в Байтике 8 месяцев отучался начинать любоый цикл с FOR'а. Решение было найдено на уровне кнопки F5 (можно сделать и на уронве трансляции русских-английских слов): попытка набрать FOR завершается появлением на экране цитаты из Некрасова: "Мужик -- что бык, втемяшится в башку какая блажь, колом ее оттудова не выбьешь." В том случае это сработало. |
Автор: | Валерий Лаптев [ Среда, 12 Сентябрь, 2012 11:53 ] |
Заголовок сообщения: | Re: проблемы коррекционного обучения |
Info21 писал(а): Валерий Лаптев писал(а): Отметил у 2 курса (бывший 1-й) типичную программистскую установку: изучаем язык как некую интересную сущность, а не как средство решения возникающих задач. Есть подозрение, что самый лучший способ -- еще в школе разделить алгоритмику и изучение ошибок дизайна конкретных языков.Должен сказать, достаточна типичная установка - у самого такие были. Как исправлять? Только надо объяснять, почему это ошибки. Возможно, и в университете это сработало бы. И еще объяснять, что фокусы на уровне нотации ведут к брейнфаку и никуда больше. Тут, правда, полезно, чтобы аудитория уже понимала, что на уровне железа всё устроено по сути примитивно. Иначе правильно про брейнфак не поймут. Я ровно именно это пытаюсь делать на лекциях по ООП, поскольку более простой уровень (структурное программирование) имеет меньше разнообразия в дизайне. Вот как раз сегодня буду рассказывать о конкретных конструкциях класса и буду приводить примеры из С++нутых языков и из Оберона-КП. |
Автор: | Валерий Лаптев [ Среда, 12 Сентябрь, 2012 11:55 ] |
Заголовок сообщения: | Re: проблемы коррекционного обучения -- отучение от FOR |
Info21 писал(а): Где-то упоминал, но надо собрать сюда (тему не стоит ограничивать одним узким вопросом). Один крендель в продвинутой группе в Байтике 8 месяцев отучался начинать любоый цикл с FOR'а. Решение было найдено на уровне кнопки F5 (можно сделать и на уронве трансляции русских-английских слов): попытка набрать FOR завершается появлением на экране цитаты из Некрасова: "Мужик -- что бык, втемяшится в башку какая блажь, колом ее оттудова не выбьешь." В том случае это сработало. О!!!! Спасибо! В среде сделать подобный текст - нефиг делать... Еще один момент: студни очень часто дают бессмысленные имена переменным-константам-функциям. Как боретесь? |
Автор: | Владислав Жаринов [ Среда, 12 Сентябрь, 2012 13:41 ] |
Заголовок сообщения: | Обучение осмысленному именованию в исходниках :) |
Вообще такой путь - сначала человек ставит задачу. В постановке заодно даёт имена разным сущностям (предметам, операциям, исполнителям). Вроде как здесь. Затем в программе и прочем (тех же утверждениях) проверяется наличие этих имён (как полных, так и сокращённых). Так примерно... Очевидно, в среде это реализовать - тоже нефиг делать... При некоторых условиях. Прежде всего д.б. каноническая структура проекта - чтобы встроенный тестер знал, где искать предметное описание и математические формализации (откуда берёт образцы, полагаемые осмысленными). Допустим, что-то вроде данного реферата задачи (но в перспективе - реферата системы с учётом сказанного здесь: viewtopic.php?p=74644#p74644). Некий канон неформальных рассуждений о задаче устанавливает Виталий Валерьевич в "Решении сложных задач". Ещё надо задать правила перебора сокращений (со слитностью/без, на какую глубину от длины слова)...
Фактически при наличии такой таблицы он только в её именных столбцах и шарит (перебирая все языки). Ну и результат понятен - выдаётся процент полных/частичных совпадений имён в постановке и последующих формализациях. Ну, там можно придумать списки диффов в той или иной форме... Этот механизм наиболее очевиден. И его можно вполне очевидно же обмануть - если уже в допрограммных описаниях выбирать бессмысленные имена. Однако предполагается, что постановку в проекте формирует предметник - который в реале к алгоритмизации/кодингу отношения не имеет. Вот ещё один аргумент за разделение ролей (рабочих мест) в каждом проекте... В учебке, конечно, все они студенты - но у каждого свои права доступа к проекту, так что придётся договариваться... вот и ещё момент игры (а правила препод заранее объявляет)... |
Автор: | Info21 [ Среда, 12 Сентябрь, 2012 14:35 ] |
Заголовок сообщения: | Re: проблемы коррекционного обучения -- отучение от FOR |
Валерий Лаптев писал(а): студни очень часто дают бессмысленные имена переменным-константам-функциям. Незачетом задачи.
Как боретесь? |
Автор: | Info21 [ Среда, 12 Сентябрь, 2012 14:37 ] |
Заголовок сообщения: | Re: проблемы коррекционного обучения |
Вообще это тоже пунктик важный: Трудно втемяшивать, что программа, проходящая тесты, это еще не всё. Нужно с самого начала объявлять про evolvability и, соответственно, качество текста как обязательный фактор зачетности программы. |
Автор: | Рыжий [ Среда, 27 Февраль, 2013 16:42 ] |
Заголовок сообщения: | Re: проблемы коррекционного обучения |
Info21 писал(а): И еще объяснять, что фокусы на уровне нотации ведут к брейнфаку и никуда больше. Тут, правда, полезно, чтобы аудитория уже понимала, что на уровне железа всё устроено по сути примитивно. Иначе правильно про брейнфак не поймут. Это? Цитата: TabName:"tblt"
FldNum:6 RowCnt:100000 / fncreate создает таблицу формата: ([]id:`int$();f0:`int$();f1:`int$()....fN:`int$()) fncreate:{[tn;fn] .(tn,(-1_,/((,":([]id"),"f",'$!fn),\:":`int$();"),")")} fncreate[TabName;FldNum] TstData:(,!RowCnt),(FldNum,RowCnt)#(FldNum*RowCnt) ? 100 .("`",TabName," insert (TstData) ") |
Автор: | Валерий Лаптев [ Среда, 27 Февраль, 2013 18:34 ] |
Заголовок сообщения: | Re: проблемы коррекционного обучения |
Вот сегодня только возвращались с коллегами к обсуждению проблем обучения программированию... Человек обучается всегда от частного к общему. Беда в том, что многие (да что там - большинство!) не стремятся к общему. И застревают на частном. В программировании это означает, что начинают изучать язык программирования и "застревают" в нем. В конкретных технологиях, в конкретных средах... Вот даже наш семантический редактор делался по принципу: давайте сделаем что-нибудь, посмотрим, что получится. И сегодня я второму курсу объяснял, что у программеров никогда не находится времени подумать, зато всегда находится время на переделку... Всего, что накосячили, не размышляя предварительно ни о пользователях, ни об архитектуре. |
Автор: | Валерий Лаптев [ Среда, 06 Март, 2013 10:23 ] |
Заголовок сообщения: | Re: проблемы коррекционного обучения |
Еще один момент. После нашей среды преподы отметили. что как-то уж очень быстро начали продвигаться в студии и основах Си. Буквально на 2-3 лабе уже делали циклы, чего в прежние годы не наблюдалось. Возможно, мы их сильно напугали, и они просто стали делать . Но преподы отмечают и такой эффект: некоторые студенты, почуяв "ветер свободы", стали в Студии писать выкрутасные конструкции... Чего в нашей среде нельзя было в принципе. И второе: замечены копипастные лабы - этого тоже было невозможно в нашей среде. Текстовый редактор в IDE - при обучении однозначно зло. |
Автор: | Рыжий [ Вторник, 10 Март, 2015 20:26 ] |
Заголовок сообщения: | Re: проблемы коррекционного обучения -- отучение от FOR |
Info21 писал(а): Где-то упоминал, но надо собрать сюда (тему не стоит ограничивать одним узким вопросом). Один крендель в продвинутой группе в Байтике 8 месяцев отучался начинать любоый цикл с FOR'а. Решение было найдено на уровне кнопки F5 (можно сделать и на уронве трансляции русских-английских слов): попытка набрать FOR завершается появлением на экране цитаты из Некрасова: "Мужик -- что бык, втемяшится в башку какая блажь, колом ее оттудова не выбьешь." В том случае это сработало. Это все Дейкстра виноват. Это он не дал людям доизучить Бейсик. Набрехал чего-то там про макароны, а сам бревно в глазу и не заметил. Поднял сам себя за уши. В то время иначе было невозможно - не надуешь не взлетишь. Даже цикл собственного имени в Бейсике проворонил: 10... 20 P1:S1: GOTO 10 30 P2:S2: GOTO 10 40 P3:S3: GOTO 10 50 ... |
Автор: | Рыжий [ Вторник, 10 Март, 2015 21:12 ] |
Заголовок сообщения: | Re: проблемы коррекционного обучения |
Вот два эквивалентных отрывка кода. 1) input type, amount if type="вклад" then balance=balance+amount print "принят вклад в размере: ", amount print "благодарим вас за пользование услугами нашего банка!" else if type="снятие" then if amount<= balance then balance=balance-amount print "сумма снятия: ", amount else print "недостаточная сумма на счете" end if else print "неопознанная операция" end if end if 2) 100 DEFSTR T 110 INPUT TYPE, AMOUNT 120 IF TYPE<>"ВКЛАД" THEN GOTO 170 130 BALANCE=BALANCE+AMOUNT 140 PRINT "ПРИНЯТ ВКЛАД В РАЗМЕРЕ: ", AMOUNT 150 PRINT "БЛАГОДАРИМ ВАС ЗА ПОЛЬЗОВАНИЕ УСЛУГАМИ НАШЕГО БАНКА!" 160 GOTO 250 170 IF TYPE<>"СНЯТИЕ" THEN GOTO 220 180 IF AMOUNT<=BALANCE THEN BALANCE=BALANCE-AMOUNT : PRINT "СУММА СНЯТИЯ: ",AMOUNT ELSE PRINT "НЕДОСТАТОЧНАЯ СУММА НА СЧЕТЕ" 210 GOTO 240 220 ' 230 PRINT "НЕОПОЗНАННАЯ ОПЕРАЦИЯ" 240 ' 250 ' 260 ' 260 END Каждому, кто хоть немного знаком с Бейсиком, ясно, что строки 120 и 170 образуют ветвление, а строка 160 - обход. Этому учат в учебниках по Бейсику. И знающие язык люди сразу же обнаруживают такие конструкции в контексте. Научиться этому намного проще, чем выучить премудрости Паскаля. Ежу понятно, что второй вариант дает фору запутанной макаронине с тремя вложенными циклами из первого. При глубокой вложенности условий в Паскале только и остается, что корпеть над тем какой именно end if к какому именно if относится. Это можно делать до тех пор, пока рак на горе свистнет. Не так в Бейсике. Тут все просто - увидел GOTO в конце IF - значит все, что до этой метки - true, а после нее false (в старых версиях можно было вообще опустить GOTO и просто указать метку). Конец уровня вложенности прослеживается буквально. Увидал переход назад значит ищи LOOP или WHILE... А в Паскале решили, что и так сойдет. Очень интересное решение имеется в Фокале, там метка может быть сложной, например: 10.1, 10.2 или вовсе 33.44.11... В Бейсике очень просто отличить хороший код от плохого. Если типические конструкции не дают ключа к пониманию смысла - значит код хренов. Все что понаписал Дейкстра относительно GOTO и Бейсика относится именно к хреновому коду. В Паскале же хороший код зачастую неотличим от хренового. Поэтому Дейкстра не создал условий для написания хорошего кода, он просто окончательно запутал вопрос, предоставив теоретикам разбираться в том, какая из его сомнительных идей более правильная. Кроме того, использование GOTO гораздо более провокативно в хорошем смысле - оно заставляет нормального программиста оставлять между переходами не слишком много места и все повторяющиеся простыни выносить под GOSUB, а значит - по факту подталкивает к использованию идей структурного программирования. А вообще, Эсперанто учить нужно. Говорят, на нем можно любую мысль в два счета выразить. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |