«Разве никто не может быть программистом?»

Старая поговорка, которую придерживаются многие программисты, - «Для изучения программирования требуется определенный тип ума, и не каждый может это сделать».

Теперь я уверен, что у всех нас есть своя история анекдотических доказательств, но это было изучено с научной точки зрения?

180 голосов | спросил System Down 4 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 04 Sep 2012 20:25:43 +0400 2012, 20:25:43

9 ответов


87

Другое исследование, Исследование жизнеспособности умственных моделей, проводимых новичками-программистами :

  

В этой статье описывается исследование жизнеспособности умственных моделей, используемых начинающими программистами в конце первого курса программирования Java. Качественные результаты определяют диапазон умственных моделей стоимости и ссылочного задания, проводимых участниками. Количественный анализ показывает, что около трети студентов занимали нежизнеспособные ментальные модели присвоения ценностей, и только 17% студентов провели жизнеспособную ментальную модель ссылочного задания. Кроме того, с точки зрения сопоставления ментальных моделей участников и их эффективности в оценках и окончательном экзамене у студентов было обнаружено, что учащиеся с жизнеспособными ментальными моделями выполняются значительно лучше, чем с нежизнеспособными моделями. Эти результаты используются, чтобы предложить более «конструктивистский» подход к обучению программированию на основе интеграции «когнитивного конфликта» и визуализации программ.

Кроме того, см. более поздние исследования от тех же авторов исследования овец и козлов ( который никогда не был опубликован, чтобы быть ясным). Их последнее и самое последнее исследование по этой теме с 2009 года: Метаанализ влияния последовательности на успех в раннем обучении программирования (pdf).

  

Был разработан тест, который, по-видимому, изучал знания ученика о назначении и последовательности перед первым курсом программирования, но на самом деле был разработан для того, чтобы запечатлеть их стратегии рассуждений. Эксперимент обнаружил две разные группы учащихся: можно было построить и последовательно применять ментальную модель исполнения программы; другой оказался либо неспособным построить модель, либо применить ее последовательно. Первая группа намного лучше провела экзамен по окончании курса, чем вторая с точки зрения успеха или неудачи. Тест не очень точно прогнозирует уровни производительности, но, объединив результат шести повторений эксперимента, пять в Великобритании и один в Австралии, мы показываем, что последовательность оказывает сильное влияние на успех в раннем обучении программе, но с другой стороны, имеет мало эффекта или вообще не влияет.

ответил Jeff Atwood 4 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 04 Sep 2012 22:40:27 +0400 2012, 22:40:27
92

Да, есть довольно известная статья в Интернете, предназначенная для более или менее определения «Кто вырезал, чтобы быть программистом».

Когнитивное исследование раннего обучения программированию - профессор Ричард Борнат, доктор Рэй Адамс

  

Все учителя программирования считают, что их результаты показывают «двойную   горб». Это как если бы было две группы: те, кто может [программа],   и тех, кто не может [программы], каждый со своим собственным независимым звонком   кривая.

     

Практически все исследования в области программирования и обучения   сосредоточено на обучении: измените язык, измените приложение   области, использовать IDE и работать над мотивацией. Ничто из этого не работает, и   двойной горб сохраняется.

     

У нас есть тест, который выбирает население   который может запрограммировать, прежде чем начнется курс. Мы можем выделить   двойной горб. Вы, вероятно, не верите в это, но после вас   послушайте разговор. Мы точно не знаем, как и почему это работает, но у нас есть   некоторые хорошие теории.


Вот сообщение в блоге Джеффа Этвуда , который интерпретирует результаты и помещает некоторые вещи в контекст.

  

Несмотря на огромные изменения, произошедшие с момента   вычисление было изобретено в 1950-х годах, некоторые вещи остаются упрямо   одна и та же. В частности, большинство людей не могут научиться программировать: от 30%   и 60% каждого приема в университетском информатике   первый курс программирования.

     

Опытные учителя устали, но никогда   не обращая внимания на этот факт; яркие новички, которые считают, что старые   они, должно быть, делали это неправильно, узнали правду от горького   опыт; и так было почти два поколения, с тех пор   предмет начался в 1960-х годах.

ответил sergserg 4 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 04 Sep 2012 20:27:21 +0400 2012, 20:27:21
31

Любой может быть программистом. Подумайте, как легко люди захватывают электронные таблицы. Подумайте, как легко Алан Кей вводит детей в программирование с помощью эксперимента и исследования в программируемой среде.

Люди могут изучать успехи на курсах колледжа и заключать «некоторые люди не умеют учиться программированию». Однако такой вывод резко выходит за пределы наблюдаемых доказательств. Насколько неудача может быть объяснена тем, как преподавание программирования (слишком абстрактное?), Или какой стиль программирования преподается (слишком обязательно?) Или среда программирования (компиляция, немедленная обратная связь?).

Хорошо известно, что люди лучше всего воспринимают абстракции после того, как они уже работали с несколькими конкретными примерами - то есть мы не можем чему-то научиться, пока мы почти не узнаем об этом. Поэтому, начиная с абстрактного, это совершенно глупый способ обучения программированию. Многие люди, которые спотыкаются о предполагаемых «ментальных моделях», будут процветать, если их научат в более конкретной среде с обратной связью в реальном времени (например, как в Кананской академии для CS ), затем рекомендуется подняться по лестнице абстракции , когда они будут готовы к этому. Изучаемое программирование - это недавнее эссе Брета Виктора, обращает внимание на ненужные экологические проблемы, с которыми программисты сталкиваются в процессе обучения.

В некоторых случаях студенты не выполняют свои занятия. Интеллектуальная лень и преднамеренное невежество будут существовать в любой большой группе людей. Умные люди не исключение, так как любой, кто спорил с блестящим кривошипом, может засвидетельствовать. Но, особенно для программирования и математики, часто классы терпят неудачу у студентов.

ответил dmbarbour 4 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 04 Sep 2012 23:12:38 +0400 2012, 23:12:38
19

Возможно, это анекдотично, но когда я преподавал интро-программирование нескольким сотням студентов гуманитарных наук, я не нашел такого «двойного горба». Мне казалось, что все они вполне способны, хотя некоторые из них работают сильнее других, и очень немногие пытались обмануть их путь.

Многое связано с тем, как его учат.

Многое также связано с желанием - некоторые не находят программирование наименее интересным. Но даже в этом случае они могут научиться этому, если они принесут ему честные усилия.

ответил Mike Dunlavey 5 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 05 Sep 2012 00:59:14 +0400 2012, 00:59:14
7

Когда я начал, было принято сидеть «тест способности», прежде чем вы получили задание на программирование. Было не так много выпускников компьютерных наук, поэтому было принято набирать из других дисциплин.

Тесты были похожи на те, которые вы видите на тестах IQ (что является следующим номером в последовательность и т. д.).

Неопровержимое доказательство заключалось в том, что, хотя не все, кто прошел тест, стали хорошим программистом, никто, кто не прошел тест, но был нанят по другим причинам, стал хорошим программистом.

К сожалению, человеческие дроны не понимали этих тестов (и не смогли, когда они их взяли!), поэтому набор в эти дни зависит от того, что понимают человеческие беспилотники - хороший навык колледжа, общения и костюма.

Это в значительной степени причина того, что в крупных ИТ-отделах есть много людей, которые отлично себя чувствуют в шоу PowerPoint и очень мало хороших программистов.

ответил James Anderson 5 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 05 Sep 2012 09:53:50 +0400 2012, 09:53:50
4

Для тех, кто цитирует исследование Деннади и Борната с двумя горбами или козами-о-овцами, стоит проверить «Ментальные модели и программирование Aptitude» от Caspersen и др. (2007), в которых они пытаются воспроизвести его:

  

Предсказание успеха студентов, участвующих в вводных   курсы программирования были активной исследовательской областью для более чем 25   года. До недавнего времени никакие переменные или тесты не имели значительных   прогностическая сила. Однако Дехнади и Борнат утверждают, что нашли   простой тест на программирование способности к чистому программированию   овцы от не-программирующих коз. Мы кратко изложим их теорию и   испытательный прибор.

     

Мы повторили их тест в нашем локальном контексте, чтобы проверить   и, возможно, обобщить их выводы, но мы не смогли показать, что   тест предсказывает успех студентов в нашей вводной программе   Конечно.

     

Исходя из этого отказа тестового инструмента, мы обсуждаем различные   объяснения наших разных результатов и предложить метод исследования   из которых можно было бы обобщить локальные результаты в этом   площадь. Кроме того, мы обсуждаем и критикуем отношения Дехнади и Борната   программировать тест пригодности и разработать альтернативные тестовые инструменты.

ответил Thomas Park 16 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 16 Sep 2012 14:57:29 +0400 2012, 14:57:29
4

Можно делать исследования по способности абстракции или другим полезным знаниям, но определение программирования неясно, и я думаю, что цитата не имеет значения, потому что есть противоположные способы взглянуть на программирование:

Первый вид: языки программирования (или должны быть) - это какой-то человеческий язык, который описывается для выполнения задачи для компьютера, поэтому каждый, кто говорит, должен иметь возможность программировать. Это называется сценарием, BASIC, системой набора текста TeX и т. Д. ... Язык или система не работает Дело в том, что их создатели и люди смотрели на него: «Дорогая программа /компьютер, пожалуйста, напечатайте мое имя» , а не «Получите мне пространство размером одиннадцать символов, затем дайте мне адрес этого пространства, затем позвольте мне сохранить его, затем введите одиннадцать символов в эту память, которую вы можете вынуть из моего буфера клавиатуры (но не забудьте очистить его и т. д.)

В этом случае ясно, что исследование скорее будет «Не каждый язык может быть быстро ассимилирован?».

С другой стороны, языки программирования - это всего лишь способ описать, как работает компьютер или как он должен работать, как он должен быть «связан», если вы думаете о компьютерах 1950-х годов. Поэтому программист ничего не может сделать, даже если он «отлично говорит» на языке программирования, если его интеллект не может достичь этого уровня абстракции, где вы видите байты, хранящиеся в памяти, строки как указатели и т. Д., А затем вернитесь к земле, чтобы связать ее с проблемой. Поэтому не каждый человек может программировать (на языке ассемблера ...).

Кроме того, вам понадобятся все качества, необходимые для работы и производства: хорошо знаете, что вы хотите, чтобы другие могли понять /завершить /просмотреть, сосредоточиться на ваших целях и т. д. Но так же, как архитектор, писатель, музыкант, протиц..аэх протезист и т. д.

Но у большинства людей есть хорошие способности абстракции, особенно дети. Некоторые немецкие школы обучают Haskell для пред-подростков (языки программирования, такие как Паскаль или Научите себя Программирование через десять лет Питера Норвига. Кажется, он думает, что нет программиста.

ответил Yves 5 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 05 Sep 2012 00:01:13 +0400 2012, 00:01:13
3

Много лет назад я провел несколько курсов, которые включали теорию военного лидерства. Часть теории заключалась в том, что существует континуум лидерства, от тех, кто является естественным лидером для тех, кто не мог привести собаку на поводке. Идея заключалась в том, что люди распределялись по этому континууму лидерства в колокольне, причем большинство людей находилось где-то между двумя крайностями. Помимо тех немногих, кто в крайнем случае «не мог привести собаку», почти всех можно было научить искусству лидерства. Количество усилий, необходимых для превращения кого-то в лидера, зависело от того, где они сидели в континууме.

Я подозреваю, что программирование имеет аналогичный континуум и аналогичное распределение. Будут те, которые просто получают это без усилий, и те, которые никогда не могут получить его, если на них зависела их жизнь. Но они немногие в хвосте колокола. Большинство людей сидят между этими крайностями на континууме. Они могут научиться программировать, но усилия, необходимые для их обучения, будут зависеть от того, где в континууме они сидят.

ответил Simon Tewsi 16 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 16 Sep 2012 15:33:46 +0400 2012, 15:33:46
2

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

В течение двух недель я мог идентифицировать тех, кто получил бы это, и тех, кто не имел бы в основном 100% -ной точности. Вы либо признали, что так работает компьютер, либо обрушились против него на весь класс. Не было среднего места. (Тот факт, что это был класс пожилых людей, означал, что у нас было много головных уборов, которые сделали рисунок более очевидным.)

ответил Loren Pechtel 16 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 16 Sep 2012 19:09:57 +0400 2012, 19:09:57

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132