recoder: (Default)
recoder ([personal profile] recoder) wrote2012-02-01 12:40 am
Entry tags:

To Code or Not To Code

Гуманитарным складом ума обычно называют отсутствие математического.
bash.org.ru
Наткнулся намедни на Hacker News на ссылочку на старую статейку Джеффа Этвуда под названием "Separating Programming Sheep from Non-Programming Goats". Где он действительно пишет о том, как отделять способных к программированию агнцев от неспособных к нему козлищ.

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

Прочтите следующие утверждения и выберите ниже корректный ответ.

int a = 10;
int b = 20;
a = b;

Новые значния переменных a и b будут:
[ ] a = 20  b = 0
[ ] a = 20  b = 20
[ ] a = 0   b = 10
[ ] a = 10  b = 10
[ ] a = 30  b = 20
[ ] a = 30  b = 0
[ ] a = 10  b = 30
[ ] a = 0   b = 30
[ ] a = 10  b = 20
[ ] a = 20  b = 10

Нам, программистам, ответы конечно же очевидны, однако по результатам этого теста народ делится примерно таким образом: 44% формируют в голове какую-то модель устройства присваивания, 39% сделать это вообще не удаётся, и ещё 8% вообще плюют на ответы и не пишут вообще ничего. Поучительно, что когда этот тест повторили через три недели обучения, расклад на группы практически не изменился.

Получается, что довольно приличный процент учеников и студентов учить программированию просто бесполезно, у них биохимия такая! А у нас в школах все как один Basic учили (кстати, а что сейчас учат?). Зачем? Пусть лучше сидят, в Civilization играются - всё больше толку будет. Может из них потом менеджеры получатся?

Вот такая оказывается загогулина в нашем ремесле.

coding

[identity profile] russuv.livejournal.com 2012-02-01 06:44 am (UTC)(link)
a = 20 b = 20
?

[identity profile] larubin.livejournal.com 2012-02-01 06:52 am (UTC)(link)
А как этот тест работает? Все околовалидные варианты ответов считаются (присваивание налево, присваивание направо, вообще не присваивание) или надо угадать семантику C-подобного языка?

[identity profile] http://users.livejournal.com/_winnie/ 2012-02-01 08:39 am (UTC)(link)
Непрограммисту совершенно неочевидно что делает =, int, слово "присваивание" непонятно и даже если у человека вдруг "программисткая биохимия" - как он поймёт, присваивание происходит слева направо или справа налево ( movl eax, [variable] в gas против mov [variable], eax в intel-assembler )

т.е. это может как-то так для людей выглядеть:

хрю x ★ 10 ^
хрю y ★ 20 ^
x ★ y ^

Edited 2012-02-01 11:32 (UTC)

[identity profile] andrew korzhuev (from livejournal.com) 2012-02-01 01:01 pm (UTC)(link)
По этому тест и работает - он отделяет тех, кто интересовался хотя бы немного программированием (и вероятно сталкивался с языками с С-подобным синтаксисом) от тех, кому это не интересно. Естественно, первая группа будет учиться лучше.

[identity profile] sassa-nf.livejournal.com 2012-02-01 02:06 pm (UTC)(link)
из a = 10 понимаем, в какую сторону работает присваивание.

и вообще, имхо, важнее вывод, что даже после обучения была проблема.

[identity profile] tonsky.livejournal.com 2012-02-01 02:22 pm (UTC)(link)
Ага, там еще и в вариантах ответов присваивания.

[identity profile] the-drmad.livejournal.com 2012-02-01 10:08 am (UTC)(link)
Нам в свое время подобное растолковывали на примерах квадратных бумажечек, с которых ластиком стираются старые циферки и записываются карандашиком новые. Наверное, если бы вот так сразу объяснили, то задачку правильно решили бы все?

[identity profile] alleukemist.livejournal.com 2012-02-01 03:19 pm (UTC)(link)
Да у меня талант программиста! :) Нет, на самом деле, если бы не биология - был бы программистом, и думаю, неплохим.

[identity profile] sprocket1.livejournal.com 2012-02-01 07:25 pm (UTC)(link)
Совсем никакого чувства юмора. Надо было 20/20 поместить дважды в ответы – пусть и у программистов тоже крышу снесёт. ;-)
А заодно на ранних этапах можно будет выявить склонность к декларативному программированию.

[identity profile] russuv.livejournal.com 2012-02-02 02:36 pm (UTC)(link)
едрен батон.. Рекодер я прошел тест программистов ? ;))

[identity profile] russuv.livejournal.com 2012-02-07 07:41 am (UTC)(link)
конечно... если не считать всякие bash awk я не прогал.......
блин лет десять ни сточки на Си ненаписал ;))

[identity profile] russuv.livejournal.com 2012-02-08 05:15 am (UTC)(link)
ну понятно что набив шишки ты все такие поедешь... но
как давно это было ;)

[identity profile] the-drmad.livejournal.com 2012-02-02 06:01 pm (UTC)(link)
Вообще, тест не корректен. Я иногда довольно активно программирую, не пиша программы, а рисуя их - http://www.nf-team.org/drmad/stuff/lv2.htm. А еще я других учу. Здесь работают немножко другие принципы, и часть народу, не способная пройти СИ-шный текст, легко обучается прогать в виде схем. И наоборот, некоторые кодеры, привычные к текстовым языкам, тупят при попытке нарисовать прогу.

[identity profile] alexander-largo.livejournal.com 2012-02-06 01:30 pm (UTC)(link)
Почти в каждой области есть люди, которые не вписываются в тему
Был один студент - так он поцарапанный CD-RW в месте царапины соскоблил слой и сделал заплатку с другого диска, что характерно, с CD-R!
И потом удивлялся почему его артефакт не читается.

Ну и женщины в разговоре часто путают длинной с кислым...

Предрасположенность - штука врожденная.