scholar_vit (scholar_vit) wrote,
scholar_vit
scholar_vit

Categories:

Смирение перед бессмысленностью. Ещё о мышлении программистов

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

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

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

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

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

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

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

Tags: computers, logic, science, teaching
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 286 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →