От 30% до 60% студентов проваливают самый первый вводный курс по программированию. Есть люди, которые патологически не могут программировать. И вот ещё в 2006 году вышла офигенная работа про то, как определить склонность к программированию. Сейчас это смотрится несколько комично, но давайте поковыряемся.
Университеты меняли языки программирования, методики, пытались давать студентам чай, разговаривали с родителями, принимали на курс студентов-гуманитариев и студентов с отличными оценками по математике. Ничего не помогало. Отсев был чудовищным, даже на матанализе такого не было, а уж он-то со своими друзьями дифурами слабостей не прощает.
И тут врываются наши авторы и говорят, смотрите, есть же переменные и присваивание.
В математике знак равенства в выражении a = b значит, что то, что cущности слева и справа от него равны. В программировании это действие: a = b значит «возьми то, что лежит в ячейке b, и запиши это в ячейку a». В Паскале всё проще, там a := b, но в других языках просто =. На этом много народу полегло.
Студентам без образования показывали код:
int a = 10;
int b = 20;
a = b;
И спрашивали: чему теперь равны a и b? Например, студент мог подумать, что значения поменялись местами (a=20, b=10), или сложились (a=30), или ничего не произошло. Студенты разделились на три группы:
— 44% — у них была какая-то одна тактика, и они её придерживались. То есть приняли одно правило (часто выдуманное) и дальше последовательно применяли его.
— 39% — во многих новых случаях придумывали новое правило в зависимости от контекста.
— 8% — отказались отвечать, то есть вернули null или undefined.
Уже состоявшиеся программисты верили, что лучшими будут отказники («у них хватило ума не отвечать на то, чего они не знают!»), гуманитарии ставили на вторую группу («они демонстрируют гибкость ума и подбирают метод под задачу!»). Почти никто не ставил на первых — людей, которые с упорством носорога применяли ко всем задачам подряд свежевыдуманное и чаще всего ошибочное правило.
Дальше 61 студент поехал учиться.
— Кто придерживался какой-то тактики — почти все закончили нормально.
— Кто менял тактику или отказался — завалили в большинстве.
Решили, что дело в отношении к бессмысленности. Программа — это формальная логическая система. Она абсолютно бессмысленна с точки зрения человеческих эмоций, контекста или здравого смысла. Машина просто слепо выполняет жесткие правила. Чтобы стать программистом, человек должен понять эту нечеловеческую логику и научиться предсказывать, как она будет мыслить. То есть уметь думать точно также как машина, отрицая эмоции, контекст и здравый смысл, а соблюдая только правила, которые есть на входе.
Тест выявлял как раз таких.
Так что вот какого дивного мира мы лишились с приходом моделей. И да, теперь даже те, кто не готов понимать жёсткие упрямые правила, могут разрабатывать ))
И минутка информирования про нашу деятельность. Вот все ссылки про курс по Клод Коду/Кодексу для обычных людей (это чтобы вы вошли в верхние 3% планеты, которых будет тяжелее всего заместить ИИ). Стартует новая волна уже 20 октября, то есть через неделю:
— Страница на сайте — там же программа очень подробно
— Старт второй волны и куча отзывов, ещё отзывы
— Основное в программе
— Как понять, что он для вас не подходит
— FAQ раз и два
Так что если вы не понимаете, что странного в записи:
Выведи на экран a + b;
a=100;
b=20;
— а это абсолютно нормальный подход при обучении для любого гуманитария — то всё, новая возможность разблокирована. Можно ставить нечёткие задачи, Дейкстра, когда говорил, что естественные языки не подходят для формулирования задач, к счастью, ошибался!
--
Вступайте в ряды Фурье! | Лучшие посты
Буратине дали 3 яблока. 2 он съел. Сколько яблок осталось у Буратины? Думаете одно? Ничего подобного. Никто же не знает сколько у него уже было яблок до этого! Мораль — обнуляйте переменные!