Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет topbot2 ([info]topbot2)
@ 2008-01-11 12:50:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Смирение перед бессмысленностью. Ещё о мышлении программистов


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




Я отправил на печать статью,
о которой рассказал [info]ygam@lj. Придя через некоторое время на кухню, где у нас стоят
принтеры, статьи я не нашел. А потом меня перехватил в коридоре
возбужденный начальник: "Слушай, мне такую интересную статью на стол
положили!" Я сказал, что это моя распечатка - очевидно, кто-то
по ошибке занес её ему в кабинет. Мы поговорили об этой статье.
Потом я её ещё пообсуждал с женой и друзьями. Так что тут ниже не
только мои мысли, но и их.




Один из авторов статьи десятилетиями преподавал
программирование, писал учебники. И оба автора часто сталкивались с
ситуацией, которую знают многие опытные менеджеры. А именно, что
программисты очень резко делятся на хороших и плохих - и пропасть
между ними огромна. При обучении это проявляется в том, что есть
люди, которые никак не могут преодолеть компьютерную премудрость - а
есть те, которым на лекциях просто скучно, потому что все так просто.
И середины практически нет. Эта ситуация почти уникальна. Да, есть
люди с абсолютным слухом и те, кому медведь на ухо наступил - но
большинство все же можно научить играть на пианино "Мурку". В
математике ситуация близка, хотя, как кажется, не так резко выражена.
Такое впечатление, что есть некая таинственная "способность понимать
компьютеры", которой одни изначально обладают, а другие - нет. Эта
способность, по словам авторов, плохо коррелирует с IQ, оценками,
математическими способностями - поэтому интересно понять, можно ли её
(или её отсутствие) выявить заранее. И тут авторам помогла
случайность.




...


Они - то ли по ошибке, то ли нарочно - дали тест на знание языка
программирования (речь шла о Джаве, но это неважно) ДО того, как
студенты познакомились с Джавой - или вообще каким-либо языком
программирования. Студентам оставалось только гадать. Тест был
закрытый (multiple choice), и каждый вариант ответа на самом деле
предполагал некую "модель поведения компьютера" (присваивание слева
направо или справа налево, порядок выполнения действий и т.п.). Так
вот, были студенты, которые для всех вопросов предполагали одну и ту
же модель поведения компьютера - у одних она была верна, у других нет.
Были студенты, которые "меняли модель": в каждом вопросе они пытались
найти "самое разумное" поведение. И были студенты, которые не смогли
- или отказались - ответить.




Дальнейшие тесты и сравнение с оценками показали, что первая группа -
предполагавшие "одинаковое поведение" - это как раз те, кому легко
давалось программирование. Их одноклассники, пытавшиеся найти
"разумное поведение" в каждой конкретной ситуации, наоборот, не
справлялись с предметом. Причем переходы из группы в группу были
крайне редки. Авторы объясняют это тем, что на самом деле главный
секрет компьютеров в том, что они ведут себя НЕ разумно - а тупо
следуют правилам. Эти правила сами по себе бессмысленны. И
программистом может стать только человек, который осознает
бессмысленность и смиряется с ней - чтобы затем использовать её. Если
же человек пытается внести смысл, которого нет, - или отказывается
решать бессмысленную задачу вообще, - то у него ничего не получится.
Компьютеры умеют оперировать только с глокими куздрами. Поэтому отбор
в программировании идет по умению мыслить на уровне синтаксиса,
отвлекаясь от семантики.




Моя жена много лет учила детей математике. Ей это напомнило вот что.
Есть классический силлогизм: "Все кошки - зеленые. Мурка - кошка.
Следовательно, Мурка - зеленая". Так вот, существуют дети, для
которых с очень раннего - дошкольного! - возраста это совершенно
очевидно. А есть дети, которые никак не могут отвлечься от мысли, что
на самом деле кошки не зеленые. Это знание им МЕШАЕТ, и силлогизм им
не очевиден именно поэтому. Первых логике учить на самом деле не
нужно. Вторых удается научить логике только с очень большим трудом.
Возможно, именно этим группам соответствует деление на "программистов"
и "непрограммистов".




Но если так, то способности к программированию должны коррелировать с
оценками по математике - а авторы статьи такую корреляцию отрицают. Я
не знаю, как это объяснить. Возможно, дело в том, что математику в
Англии преподают недостаточно формально: как содержательную науку, а
не как игру с доказательствами абстрактных утверждений. Интересно
было бы исследовать ситуацию во Франции, где, если верить Арнольду,
она преподается формальнее. Можно сделать ещё более смелое
утверждение: математика сама по себе существенно более содержательна,
чем иногда кажется со стороны - и этим математик отличается от
программиста.



Image источник-[info]scholar-vit@ljчитать полный текст со всеми комментариями