Есть ли какие-либо исследования того, легче ли изучать функциональное / декларативное или императивное программирование в качестве первого языка? - PullRequest
2 голосов
/ 10 марта 2009

Не лучше всего учиться, но легче всего учиться. Не проще для программистов, но и для непрограммистов (как родного языка). Не мнения или анекдоты, но есть ли исследования?

Я думаю, что функциональное / декларативное программирование (Haskell, Scheme, Lisp и т. Д.) Является более мощным и более абстрактным, чем императивное программирование, и, следовательно, по сути сложнее в освоении. Интересно, есть ли какие-либо фактические доказательства, так или иначе.

Ответы [ 3 ]

3 голосов
/ 10 марта 2009

Матиас Феллайзен и его коллеги собрали некоторые очень убедительные доказательства того, что самый простой язык для изучения - это язык, который предназначен для начинающих программистов и имеет поддержку инструментов , нацеленную на начинающие программисты . Они фактически разработали и внедрили четыре таких языков, каждый из которых является подмножеством следующего, и все подмножества Схемы. У них есть очень убедительные документы, педагогика и программное обеспечение . Кроме того, их результаты были воспроизведены в Германии, о чем свидетельствуют впечатляющие опубликованные результаты на последнем семинаре FDPE, а также множество хороших, но неопубликованных работ в старших школах.

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

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

2 голосов
/ 10 марта 2009

Нет, слишком сложно придумать содержательное исследование, которое контролирует все переменные. Смотри также

Существуют ли статистические исследования, свидетельствующие о том, что Python "более продуктивен"?

1 голос
/ 10 марта 2009

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

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

Мне неприятно это говорить, но лучшими языками были, вероятно, старый Basic и Pascal. Очень мало трюков - черт возьми, поначалу даже не было функций!

Это позволяет вам сконцентрироваться на понимании переменных и потока программы, прежде чем сталкиваться с такими вещами, как объекты, указатели и неизменяемость.

Тем не менее, если ваш вопрос не был просто теоретическим, вы могли бы заглянуть в BlueJ. Это Java IDE, созданная исключительно для обучения. Он не требует сложного синтаксиса Java, такого как «public static void main ()» и «System.out.print» - они не нужны из-за уникального способа работы с объектами. Он также знакомит студентов с UML и дает мгновенное понимание предметов.

...