Стара приказка, якої дотримуються багато програмістів, - це "розуму програмування потрібно певний тип, і не кожен може це зробити".
Тепер я впевнений, що всі ми маємо власну суть анекдотичних доказів, але це було вивчено науково?
Стара приказка, якої дотримуються багато програмістів, - це "розуму програмування потрібно певний тип, і не кожен може це зробити".
Тепер я впевнений, що всі ми маємо власну суть анекдотичних доказів, але це було вивчено науково?
Відповіді:
Ще одне дослідження « Дослідження життєздатності розумових моделей, проведених початківцями програмістами :
У цій роботі описано дослідження життєздатності розумових моделей, які використовуються початківцями програмістами в кінці першого курсу Java-програмування. Якісні знахідки визначають коло розумових моделей ціннісних та референтних задач, які проводяться учасниками. Кількісний аналіз показує, що приблизно одна третина студентів тримала нежиттєздатні психічні моделі розподілу цінностей, і лише 17% студентів мали життєздатну розумову модель присвоєння еталонних задач. Далі, з точки зору порівняння ментальних моделей учасників та їхньої ефективності в ході оцінок курсу та підсумковому іспиті, було встановлено, що студенти з життєздатними ментальними моделями працюють значно краще, ніж ті, що мають нежиттєздатні моделі. Ці висновки використовуються, щоб запропонувати більш "конструктивістський"
Також дивіться пізніші дослідження тих самих авторів дослідження «Вівці проти козлів» (яке насправді ніколи не було опубліковане). Їх останнє та останнє дослідження на цю тему з 2009 року - це метааналіз впливу послідовності на успіх у ранньому вивченні програмування (pdf).
Був розроблений тест, який, очевидно, перевіряв знання студента щодо призначення та послідовності перед першим курсом програмування, але насправді був розроблений з метою врахування їх стратегій міркування. Експеримент виявив дві різні групи учнів: один міг будувати та послідовно застосовувати ментальну модель виконання програми; інший виявився або неможливим побудувати модель, або застосувати послідовно. Перша група виявилася набагато кращою у своєму іспиті після закінчення курсу, ніж друга з точки зору успіху чи невдачі. Тест не дуже точно прогнозує рівень продуктивності, але, поєднуючи результат шести повторень експерименту, п'яти у Великобританії та одного в Австралії, ми показуємо, що послідовність має сильний вплив на успіх у ранньому навчанні програмувати - але досвід програмування фону, з іншого боку,
Так, в Інтернеті є досить відомий папір, розроблений для того, щоб більш-менш визначити "Хто вирішений програмістом".
Пізнавальне дослідження раннього вивчення програмування - проф. Річард Борнат, доктор Рей Адамс
Усі вчителі програмування вважають, що їх результати відображають «подвійний горб». Ніби є дві групи: ті, хто вміє [програмувати], і ті, хто не може [програмувати], кожне зі своєю незалежною кривою дзвону.
Майже всі дослідження викладання та навчання програмуванню зосереджені на викладанні: змінити мову, змінити область застосування, використовувати IDE та працювати над мотивацією. Нічого не працює, і подвійний горб зберігається.
У нас є тест, який визначає кількість населення, яке може програмувати, до початку курсу. Ми можемо відібрати подвійний горб. Ви, напевно, не вірите в це, але ви почуєте розмову. Ми не знаємо точно, як / чому це працює, але у нас є кілька хороших теорій.
Ось допис у блозі Джеффа Етвуда, який інтерпретує результати та ставить деякі речі в контекст.
Незважаючи на величезні зміни, які відбулися з часу винайдення електронних обчислень у 1950-х роках, деякі речі вперто залишаються тими ж. Зокрема, більшість людей не можуть навчитися програмувати: від 30% до 60% кожного вступу в університетський відділ інформатики проходить перший курс програмування.
Досвідчені вчителі втомлюються, але ніколи не забувають про це; світлі новачки, які вважають, що старі, мабуть, робили неправильно, дізнаються правду з гіркого досвіду; і так це вже майже два покоління, з тих пір, як тема почалася в 1960-х роках.
Будь-хто може бути програмістом. Поміркуйте, як легко люди отримують електронні таблиці. Поміркуйте, з якою готовністю Алан Кей знайомить дітей з програмуванням за допомогою експерименту та дослідження в програмованому середовищі.
Люди можуть вивчити успіх на курсах на рівні коледжу та зробити висновок, що "деякі люди не вміють навчатися програмуванню". Однак такий висновок суттєво перевищує межі спостережуваних доказів. Скільки невдач можна було б пояснити тим, як викладається програмування (занадто абстрактне?), Чи якому стилю програмування викладається (занадто імперативно?), Або середовищі програмування (компіляція, немає негайних відгуків?).
Добре зрозуміло, що люди сприймають абстракції найбільш легко після того, як вони вже працювали з декількома конкретними прикладами - тобто, що ми не можемо чогось навчитися, поки ми майже цього не знаємо. Починаючи з реферату, отже, це абсолютно нерозумний спосіб навчання програмуванню. Багато людей, які натрапляють на задумані "ментальні моделі", процвітають, якби навчати їх у більш конкретних умовах із зворотним зв'язком у реальному часі (наприклад, в Академії Кан для КС ), то заохочують піднятися сходами абстракції, коли вони будуть до цього готові. Навчальне програмування - це недавній нарис Брета Віктора, який звертає увагу на зайві екологічні проблеми, з якими стикаються програмісти під час навчання.
У деяких випадках саме учні закінчують свої заняття. Інтелектуальна лінь і навмисне незнання існуватимуть у будь-якої великої групи людей. Розумний народ не є винятком, як це може засвідчити кожен, хто посперечався з блискучим кривошипом. Але, особливо для програмування та математики, нерідко заняття не вдається школярам.
x = 1; y = x;
і питання " Які значення x
та y
? "
Is it true that not everyone can learn how to program?
рядок із питання, наші більш досвідчені члени ігнорували його, розуміючи, що він не відповідає нашим вказівкам, і сконцентрували свої відповіді на дослідницьких / наукових аспектах питання. Не могли б ви зробити те саме?
Можливо, це анекдотично, але коли я викладав інтро програмування для кількох сотень студентів із вільних мистецтв, я не знайшов такого «подвійного горба». Мені здалося, що всі вони цілком здібні, хоча деякі працювали важче, ніж інші, і мало хто намагався обдумати свій шлях.
Дуже багато стосується того, як його навчають.
Дуже багато стосується і бажання - деякі не вважають програмування найменш цікавим. Але навіть так, вони можуть це навчитися, якщо чесно докладуть зусиль.
Коли я починав, звичайно було скласти "тест на працездатність", перш ніж влаштуватися на програмування. Випускників інформатики було не так багато, тому прийнято набирати з інших дисциплін.
Тести були схожими на те, що ви бачите на тестах IQ (яке наступне число в послідовності тощо).
Анекдотичні докази полягали в тому, що, хоча не кожен, хто здав тест, став хорошим програмістом, той, хто не пройшов тест, але був найнятий з інших причин, ніколи не став хорошим програмістом.
На жаль, HR безпілотники не розуміли цих тестів (і не вдалося, коли їх взяли!), Тому набір у наші дні залежить від того, що розуміють HR-трутні - хорошого коледжу, спілкування та навичок носіння.
Це в значній мірі тому, що у великих відділах ІТ є багато людей, які чудово підходять на шоу PowerPoint і дуже мало хороших програмістів.
Тим, хто цитує дослідження Денаді та Борнату з подвійним горбом або козами проти овець, варто перевірити психічні моделі та вміння програмування Caspersen et al (2007), у яких вони намагаються повторити:
Прогнозування успішності студентів, які беруть участь у вступних курсах програмування, є активною науковою сферою вже більше 25 років. До недавнього часу жодні змінні чи тести не мали суттєвої прогнозної сили. Однак Денаді та Борнат стверджують, що знайшли простий тест на програмування на здатність чітко відокремити овець-програмістів від кіз, які не програмують. Ми коротко представляємо їх теорію та інструмент тестування.
Ми повторили їх тест у нашому локальному контексті, щоб перевірити та, можливо, узагальнити їхні висновки, але ми не змогли показати, що тест пророкує успіх студентів у нашому вступному курсі з програмування.
Виходячи з цієї відмови тестового інструменту, ми обговорюємо різні пояснення наших різних результатів та пропонуємо метод дослідження, з якого можливо узагальнити місцеві результати у цій галузі. Крім того, ми обговорюємо та критикуємо тест на придатність програмування Дехнаді та Борната та розробляємо альтернативні інструменти тестування.
Можна зробити дослідження щодо можливостей абстрагування чи інших корисних знань, але визначення програмування є незрозумілим, і я вважаю, що цитата не має значення, оскільки існують протилежні способи погляду на програмування:
Перший вид: мови програмування - це (або повинна бути) якась людська мова, створена для опису завдання для виконання комп’ютером, тому кожен, хто говорить, повинен мати можливість програмувати. Це називається сценарієм, BASIC, системою набору текст TeX тощо. Мова чи система не має значення. Це так, як їх творці та люди дивилися на це: "Шановна програма / комп’ютер, будь ласка, надрукуйте моє ім'я" , а не "Знайдіть мені простір розміром з одинадцяти знаків, потім дайте мені адресу цього простору, потім дозвольте мені зберегти його, а потім введіть в цю пам'ять одинадцять символів, які ви можете вийняти з мого буфера клавіатури (але не забудьте очистити його тощо "
У цьому випадку зрозуміло, що дослідження швидше буде "Чи не кожна мова може бути засвоєна швидко?".
З іншого боку, мови програмування - це лише спосіб описати, як працює комп'ютер або як він повинен працювати, як він повинен бути "підключений", якщо ви думаєте про комп'ютери 1950-х років. Тому програміст нічого не може зробити, навіть якщо він "розмовляє" мовою програмування ідеально, якщо його інтелект не може досягти цього рівня абстракції, де ви бачите, як байти зберігаються в пам'яті, рядки як покажчики тощо, а потім поверніться на землю, щоб пов’язати це з проблемою. Тому не кожна людина може програмувати (мовою складання ...).
Окрім цього, вам знадобляться всі якості, необхідні для того, щоб працювати і виробляти щось: дуже добре знати, що ви хочете, полегшити оточуючим зрозуміти / завершити / переглянути, зосередитись на своїх цілях тощо ... Але так само, як архітектор, письменник, музикант, протест..аех протесист тощо.
Але більшість людей мають хороші можливості абстрагування, особливо діти. Деякі німецькі школи навчають Haskell до підлітків (мови програмування, такі як Pascal або Delphi , викладають у кожній німецькій школі).
Тому я б сказав, що на питання дуже важко відповісти, і будь-яка відповідь (або дослідження), ймовірно, не має значення.
Ви знайдете дуже короткий аналіз того, як люди навчаються програмуванню, у статті « Навчіть себе програмуванню на десять років » Пітера Норвіга. Він, здається, думає, що не народився програміст.
Багато років тому я робив кілька курсів, які включали теорію військового керівництва. Частина теорії полягала в тому, що існує континуум керівництва - від тих, хто є природними лідерами, до тих, хто не міг би вести собаку на повідку. Ідея полягала в тому, що люди розподіляли цей континуум керівництва у кривій дзвоні, більшість людей знаходилися десь між двома крайнощами. Крім небагатьох у крайній крайності "не міг вести собаку", майже всіх можна було навчити мистецтву лідерства. Кількість зусиль, необхідних для того, щоб перетворити когось на лідера, залежало від того, де вони сиділи на континуумі.
Я підозрюю, що програмування має подібний континуум та подібне розповсюдження. Будуть ті, хто просто отримує це без особливих зусиль, і такі, які ніколи не зможуть отримати його, якби від цього залежало їхнє життя. Але вони небагатьох у хвості кривої дзвону. Більшість людей сидять між цими крайнощами на континуумі. Вони можуть навчитися програмувати, але зусилля, необхідні для їх навчання, залежатимуть від того, де на континуумі вони сидять.
Я не впевнений, що це просто програмування. Я бачив такий самий феномен, що люди просто навчаються користуватися комп’ютерами. Ще в коледжі я був лаборантом в лабораторії, яка проводила комп’ютерну грамотність для учнів старшого віку.
Протягом двох тижнів я міг визначити тих, хто отримав би це, і тих, хто не став би в основному 100% точністю. Ви або прийняли, що це так, як працює комп'ютер, або ви б'єтесь головою об нього для всього класу. Середини не було. (Той факт, що це був клас для старших людей, означав, що у нас багато головоломок, що зробило цей малюнок набагато більш очевидним.)