об абстрактном
Feb. 1st, 2007 03:20 pm(эта запись - примерный перевод моей же записи в англоязычном блоге)
В новом и довольно интересном блоге математика Джона Армстронга (The Unapologetic Mathematician) появилась запись, объясняющая начала теории групп для широкой публики.
Конечно, подавляющее большинство читателей, не знакомых с математикой на университетском уровне, не смогут понять это введение. Это само по себе довольно очевидно; что менее очевидно - почему Джон Армстронг искренне считает, что написал что-то простое и понятное любому нематематическому читателю (и тут я не пытаюсь как-то его выделить или обидеть: со мной тоже такое случалось в прошлом, да и у множества других людей я наблюдал такое отношение). Желание автора блога объяснить начала "настоящей" математики широкой публике понятно и похвально, но вместе с тем затея обречена на неудачу.
Есть что-то в устройстве нашего разума, что мешает нам понять, насколько другим людям тяжело справиться с какой-то абстракцией, которую мы как следует усвоили, привыкли к ней и пользуемся ей не задумываясь. Вообще говоря, мы постоянно строим у себя в голове модели, "картинки" мыслительного процесса других людей. Это происходит по самым разным поводам постоянно, сотни раз каждый день; без этого процесса невозможно никакое понимание и реальное общение. Но почему-то именно когда речь идет о какой-то сложной абстрактной идее, которую мы сами хорошо понимаем, наша способность построить у себя в голове адекватную картинку того, как другие люди ее не понимают, буксует. Это не невозможно сделать, но заметно тяжелее, чем другие виды моделирования чужих мыслей и размышлений.
Почему? Понятия не имею.
Раз у меня нет понятия, попробую обойтись несколькими ассоциациями и примерами. Запись про теорию групп напомнила мне два похожих по сути запомнившихся примера, оба из области программирования.
Вчера я прочитал интереснейшую запись в блоге Coding Horrors, в которой обсуждается недавняя научная статья, авторы которой изучали студентов-первокурсников на компьютерном факультете. Авторы статьи утверждают, что они смогли сформулировать очень простой тест, который позволяет отделить тех студентов, которые научатся программировать, от тех, которые не научатся, еще до того, как они начали учиться. Пример вопроса из этого теста, который приводится в записи, настолько абсурдно простой, что в комментариях к записи многие протестуют и не доверяют утверждению, что вообще хоть кто-нибудь мог не ответить на него правильно через три недели после начала учебы (а в статье описывается в том числе и такая проверка). Программистам кажется странным, нелепым, невозможным, чтобы разумный, неглупый человек не смог на него ответить - порому что мы до такой степени усвоили определенные основные понятия - переменные, значения, присваивание - что не представляем, как можно пытаться их усвоить и не смочь.
Второй пример приведу из блога Джоэля Спольского, запись "The Perils of JavaSchools" годичной давности (есть также русский перевод), которая тогда вызвала жаркие дебаты (в целом я, кстати, совершенно согласен с высказанными в ней мыслями). Многим показалось странным, что Джоэль привел указатели (pointers) в качестве жизненно важного понятия для любой академической программы изучения Computer Science. Конечно, верно то, что во многих областях и на многих языках сегодня можно писать вполне "настоящие", сложные программы, которые никак не пользуются указателями. Но тем не менее, говорит Джоэль,
"Но даже вдали от задач, где важность указателей и рекурсии очевидна, их реальная значимость в том, что создание больших систем требует той гибкости мозга, которую вы получаете при их изучении, и тех способностей мозга, которые были вам необходимы для того, чтобы не вылететь с курса во время обучения. Указатели и рекурсия требуют от человека определённых способностей: рассуждать, абстрактно мыслить, и, что особенно важно, видеть проблему на нескольких уровнях абстракции одновременно. Поэтому способность понимать указатели и рекурсию напрямую связана со способностью быть настоящим программистом."
Однако тем из нас, кто знает и понимает указатели, не так уж легко понять, в чем, собственно, проблема, как кто-то может не просто, скажем, ошибаться в их применении, но вообще не понять саму идею, даже после многих попыток объяснить. Указатели - абстрактная идея, которую мы усвоили, переварили, сделали частью своего ментального аппарата. Так и математик, усвоивший алгебраические структуры, не понимает, что сам язык, которым он пытается "просто" и "не требуя предварительных знаний" объяснить их широкой публике все равно полон определенных допущений, способов рассуждать, понимания того, что такое множества и алгебраические операции, способности достаточно уверенно манипулировать в уме этими понятиями - итд. итп. - и всего этого у представителя широкой публики просто нет. Я лично считаю очень полезным для себя опыт преподавания начал программирования (языка C) студентам-первокурсникам на компьютерном факультете много лет назад - именно тогда мне пришлось как следует понять и осознать тот факт, что нелегко приобрести понимание того, как другие не понимают, но без него не может быть качественного преподавания.
Не стоит забывать и тот факт (гм, это уже третий пример), что в университетских математических программах обычно изучают абстрактную алгебру (группы, кольца итд.) после линейной алгебры. Каким бы простым не казалось нам определенее группы, даже первокурсники на математическом факультет обычно не готовы к тому, чтобы его усвоить и свободно им пользоваться. У них нет достаточной тренировки в математическом мышлении. Им нужно пройти через линейную алгебру с ее матрицами и векторами и полями и векторными пространстами - более конкретными, более близкими к непосредственному опыту объектами. Им нужно пройти через анализ, и картинку с производной функции, и определение предела через дельта-эпсилон. И только после этого им обычно преподают концептуально более простые начала теории групп.
... В конечном итоге, мне кажется невозможным объяснить начала теории групп читателю, у которого нет достаточно опыта математического мышления, нет того, что в предисловиях к учебникам называют математической зрелостью (mathematical maturity). Почему без этого - невозможно? Не думаю, что у кого-либо есть ответ на этот вопрос.
no subject
Date: 2007-02-01 01:29 pm (UTC)int b = 20;
a = b;
очевидно что результат void, так как после a = b стоит ;
если убрать ; после a = b, то получится что результат true, там почему-то таких нету,
если предположить что = - это присваивание, то тогда a = 20, b = 20;
помоему совсем неочевидный тест,
логичнее было бы
set a 10
set b 20
set a b
тут я думаю двучтений намного меньше, в комментариях в статье пишут так же.
no subject
Date: 2007-02-01 01:30 pm (UTC)no subject
Date: 2007-02-01 01:34 pm (UTC)Сам я разобрался с понятием группы (по журналу "Квант") за долго до того, как с матрицами. Последнее мне далось значительно сложнее :-).
no subject
Date: 2007-02-01 05:22 pm (UTC)(no subject)
From:(no subject)
From: (Anonymous) - Date: 2007-02-01 06:44 pm (UTC) - Expand(no subject)
From:no subject
Date: 2007-02-01 01:45 pm (UTC)Хотя если задуматься над тем что процентов 30-40 людей вообще функционально неграмотны...
no subject
Date: 2007-02-01 01:48 pm (UTC)насколько я помню, первые три экзамена на мехмате МГУ в 1990 году были: аналитическая геометрия, алгебра и матан. Линейная алгебра началась со второго семестра.
no subject
Date: 2007-02-01 01:54 pm (UTC)Программа курса
http://shade.msu.ru/~admin/kurs/kaf/algebra.htm
Именно так
From:Re: Именно так
From:Re: Именно так
From:Re: Именно так
From:(no subject)
From:(no subject)
From:no subject
Date: 2007-02-01 01:50 pm (UTC)no subject
Date: 2007-02-13 10:04 pm (UTC)Вот именно!
no subject
Date: 2007-02-01 01:53 pm (UTC)Кстати если линейная алгебра и всякие тензорные штуки привычны как свой дом, то и квантовая механика становится столь же родной и естественной и СТО тоже интуитивна.
Понять вопрос обучаемого –– тоже искусство. Я помню лет в 12–13 всем задавал коряво сформулированный вопрос "как компьютер знает какую инструкцию ему выполнять после включения", так меня никто и не понимал, некому было ответить "дык в железо впаяно". Причем я уже Бейсик знал.
no subject
Date: 2007-02-13 10:37 pm (UTC)За-то сейчас почитываю ландавшиц и недумеваю, что же конкретно мне было непонятно. )
no subject
Date: 2007-02-01 02:00 pm (UTC)я был очень силен в математике лет 7-10 назад а теперь глядя на формулы и логику рассуждения по ссылкам даже вникать не хочется, т.к. это слишком много ресурсов мозга жрет, которые для других целей необходимы. так что вот. выводов не делаю т.к. суть не совсем четко уловил :))
no subject
Date: 2007-02-01 02:00 pm (UTC)Вы так говорите, как будто "понять" - это дискретная характеристика, понял или не понял. На самом деле, еще есть другое, иногда более важное: понять не само определение некого математического обьекта, а то, "что с ним можно делать" и "зачем он нужен". Например, человек с инженерным образованием способен прекрасно понять начала теории групп, но у него останется при этом некий "ментальный дискомфорт", который обычно можно устранить только путем плотной работой с новыми для тебя обьектами.
no subject
Date: 2007-02-01 02:01 pm (UTC)Что касается последнего вопроса, ответ, казалось бы, тривиальный: практически любой аспект жизни требует обрести какой-никакой опыт, прежде чем можно будет продвинуться на "следующую ступень". Даже наличие способностей, "врожденного таланта", не отменяет необходимость набрать этот опыт, просто времени понадобится гораздо меньше.
Однако, совсем не уверен в правильности этого утверждения в том что касается абстрактного мышления и математики. По видимому с этим рождаются... и если этого нет, то ни корпение над книгами, ни лекции лучших учителей не выведут больше чем на одну-две ступени выше базы.
Почему без этого - невозможно?
Date: 2007-02-01 02:06 pm (UTC)И будь вы хоть академиком, местные крестьяне посмеются над вашей недогадливостью.
Они умнее? Они сдали топографию на пять?
Они просто знают местность, потоптались там не один год.
Можно сказать созрели.
Поэтому математическая зрелость, ИМХО, это всего лишь местечковый опыт,способствующий экономии энергоресурсов думающего индивидуума и способствующий быстрой ориентации в пространстве своего и, если нужно, близлежащих лесов.
Противоположности сходятся
Date: 2007-02-01 02:12 pm (UTC)Надобно сказать, что я вполне могу дать ответ на "ключевой вопрос программирования", но только на основании знания об используемом языке. Если это будет язык, у которого я "never looked at a line of code in their lives", мой ответ будет "не знаю".
Re: Противоположности сходятся
Date: 2007-02-01 02:21 pm (UTC)Re: Противоположности сходятся
From:no subject
Date: 2007-02-01 02:16 pm (UTC)А теория групп "для широких масс" - это действительно абсурдный проект. Его автор, видимо, не из тугодумов.
no subject
Date: 2007-02-01 02:21 pm (UTC)(no subject)
From:no subject
Date: 2007-02-01 02:20 pm (UTC)no subject
Date: 2007-02-01 02:44 pm (UTC)как можно быть уверенным, что имеется в виду, если кода никогда раньше не видел и язык непонятно какой (не C потому что нет main())? в одних языках a=b; означает присвaивание, а в других - проверку равенства. можно себе представить язык, в котором каждая строка - отдельный блок кода и все операции с глобальными переменными локальны, так что на следующей строчке а вернется к старому значению...
no subject
Date: 2007-02-01 02:57 pm (UTC)no subject
Date: 2007-02-01 03:13 pm (UTC)Что же касается упомянутого Джоэлем желания снизить уровень сложности предментов, то, по крайней мере, в Нидерландах, ларчик открывается просто: университетам платят по головам дипломников. Чем больше выпущено, тем больше получено доходов...
no subject
Date: 2007-02-01 04:30 pm (UTC)(no subject)
From:(no subject)
From:;-)
From:(no subject)
From:(no subject)
From:no subject
Date: 2007-02-01 04:37 pm (UTC)В начальной алгебре я вижу два принципиальных уровня абстракции: определение группы и определение факторгруппы.
первый уровень - определение группы, подгруппы, изоморфизм, порядок элемента, свойства циклических групп и т.д. могу объяснить хоть журнальному столику, ну или третьекласснику.
Проф. Амстронг себе такой цели не ставил видимо. "Широкой публике" так не объясняют - ни одного ЖИВОГО примера, "modulo 12", ну-ну.
no subject
Date: 2007-02-01 08:04 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2007-02-01 05:24 pm (UTC)no subject
Date: 2007-02-02 01:32 am (UTC)Однако проблема по-видимому в том, что бытие профессором математики вовсе не гарантирует способностей к программированию.
(no subject)
From:(no subject)
From:no subject
Date: 2007-02-01 05:32 pm (UTC)Ключевым было именно полное понимание рекурсии и указателей. Именно тогда я понял (и запомнил) этот водораздел, который проходил между мной понимающим и мной не понимающим программирование; тогда-то мне и стала видна разница между двумя типами мышления.
Мне кажется, что умение программировать основано именно на способности преодолеть этот ментальный водораздел, и что эта способность не зависит напрямую от IQ преодолевающего.
no subject
Date: 2007-02-02 04:31 pm (UTC)sum = sum + ai. После этого всё пошло взахлёб с огромным удовольствием от процесса. Рекурсии и указатели почему-то были восприняты как нечто естественное и трудностей не вызвали.С тех пор доводилось не раз наблюдать как именно присваивание представляет самую непосильную задачу у новичков. Особенно плохо дело у людей с мат.подготовкой. Что интересно, чем сильнее мне встречался математик, тем слабее он оказывался как программист. Были, конечно и исключения, но в основном почему-то математикам очень тяжело сделать ментальный свич и начать думать в унисон с машиной. Как правильно в британском исследовании заметили, настроиться на meaninglessness у них выходит довольно плохо.
no subject
Date: 2007-02-01 05:37 pm (UTC)no subject
Date: 2007-02-01 07:17 pm (UTC)no subject
Date: 2007-02-01 08:02 pm (UTC)Справились все.
no subject
Date: 2007-02-02 05:36 am (UTC)no subject
Date: 2007-02-01 09:24 pm (UTC)Интересно девки пляшут. А нам почему-то первым делом на алгебре и на матанализе(это Хедва?) начали втирать про группы, кольца и тыды чем ввели всех в такой шок от которого все просто стали чувствовать себя идиотами и руки опустились, что и сказывается сейчас на оценках в конце первого семестра.
no subject
Date: 2007-02-01 09:33 pm (UTC)Совсем недавно я столкнулась с этим, помогая ребёнку решать простые алгебраические задачки (3-й класс). Для их решения мне понадобились x и у и уравнение. Нас так учили в школе, и это казалось естественным, более того, единственным способом. Ребёнок заявил, что ни того, ни другого им не объясняли. Я обвинила его в невнимательности и стала объяснять решение, используя простейшее уравнение и неизвестные. Ребёнок не врубался. Кончилось это криком и слезами. Вечером пришёл папа и всё объяснил. Это было потрясающе. Настолько, что я даже хотела написать пост об этом - о том, как здесь учат решать уравнения без уравнений и неизвестных -- с примерами решений, но решила, что никому это не интересно. На самом деле, это, конечно, потрясающе. Это совершенно иной подход, возможно, не такой эффективный, как был когда-то у нас, но несомненно учащий применять разные подходы к решению задач, в т.ч. не самые эффективные.
Сейчас я решаю эти задачки, заставляя себя не думать в терминах "уравнение-неизвестные". Это очень интересно.
no subject
Date: 2007-02-02 02:15 pm (UTC)(no subject)
From: (Anonymous) - Date: 2007-02-03 08:47 am (UTC) - Expandno subject
Date: 2007-02-01 11:16 pm (UTC)Фигня. Это классы и паттерны абстрактные идеи. А указатели - следствие инженерного устройства одной важной части машины фон Неймана - оперативной памяти, состоящей из ячеек. Если сказать что присваивание - это перенос бумажки с числом(или цветного мячика) в нужную ячейку в поддоне из под яиц, то поймут все. Но так как устройства машины фон Неймана студентам не разьясняют (а если разьясняют - то слишком сложно, на уровне микросхем логики реального компьютера), то понятие присваивания и указателя на ячейку, действительно трудно для понимания новичку. Работа с указателями, особенно нескольких порядков, действительно требует умения мыслить "абстрактно" - т.е крутить в голове живые картинки ссылок на ссылки на команды кода или данные - но сама идея вполне физическая, материальная и доступная для разьяснения - цветные стрелки на ячейки.
Но да. Существует несколько идей-понятий, которые человек должен узнать раньше чем начнет изучать STL, алгоритмы и все такое. В первую очередь - устройство машины фон Неймана - разграфленные листы-таблички для "памяти из ячеек" и микро-ассембелер с командами MOVE, IF/JUMP, ADD/SUB и IN/OUT. Два-три дня на игры - и отсев тех, кто не может крутить это динамически, в уме.
А для пользователей - новичков (если такие остались еще в мире) - понятие файла, навык обращения с мышью и визуальное опознание меню (как ни странно, люди, не знакомые с компютером, не видят меню на экране).
no subject
Date: 2007-02-02 07:20 am (UTC)Еще интересно то, с какой легкостью вы употребили в одном м предложении STL и алгоритмы. Вы предполагали, что все поймут вообще что вы здесь имели в виду под алгоритмами и что знание C++ и STL что-то само собой разумеющееся для программиста?
Так вот я лично на стуле подпрыгнул, когда увидел что у вас STL и алгоритмы через запятую в программе обучения перечислины.
Вот вообще и яркий пример того о чем писал avva.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From: