是否有关于功能/声明或命令式编程是否更容易学习作为第一语言的研究?

时间:2009-03-09 22:24:27

标签: programming-languages

不是最好的学习,但最容易学习。程序员不是最容易的,但对于非程序员(作为第一语言)。不是意见或轶事,但有没有研究?

我认为功能/声明性编程(Haskell,Scheme,Lisp等)比命令式编程更强大,更抽象,因此本质上更难学。我想知道是否有任何实际证据,无论如何。

3 个答案:

答案 0 :(得分:3)

Matthias Felleisen and his colleagues收集了一些非常令人信服的证据,证明最容易学习的语言是专为初学程序员设计的语言并且具有针对初级程序员的工具支持。他们实际上已经设计并实现了四种这样的语言,每种语言都是下一个语言的子集,以及Scheme的所有子集。他们有一些非常有说服力的论文,教育学和software。此外,他们的结果已经在德国得到了复制,最近的FDPE研讨会上公布了令人印象深刻的结果,以及高中许多优秀但尚未发表的作品。

外卖消息并不是说Scheme有利于学习,而是初学程序员需要专为他们设计的工具和语言(他们称之为“语言级别”)。我相信这种语言水平的概念可以应用于其他语言,包括C(我在介绍级别教授),但不幸的是,Felleisen等人没有公布一套原则或指导方针,允许某人使用不同的语言。

因此,如果您正在寻找证据,那么唯一可用的数据会将功能语言的使用与语言级别的使用和定制设计的编程环境混为一谈。你必须自己判断哪些因素是最重要的。我知道,如果语言水平和“学生的编程环境”可用于C,我会选择完全由Scheme和Bigloo Scheme编译器组成的心跳。

答案 1 :(得分:2)

不,很难想出一个控制所有变量的有意义的研究。另见

Are there statistical studies that indicates that Python is "more productive"?

答案 2 :(得分:1)

初学者的最佳语言将是最难理解的语言。

功能性和OO语言都不是那么容易 - 完全直接掌握(虽然两者都可以简化为非常简单,但事实上所有其他语法和功能都悬而未决实际上存在问题 - 这会让人们想要理解它,他们觉得在查看更复杂的代码等时他们会遗漏一些东西。)

我不想这么说,但最好的语言可能是旧的Basic和Pascal。很少的技巧 - 哎呀,基本甚至没有功能一开始!

这使您可以在被对象,指针和不变性之类的东西击中之前专注于理解变量和程序流。

那就是说,如果你的问题不仅仅是理论问题,你可能会考虑BlueJ。它是专为培训而设计的Java IDE。它不需要最难的Java语法,例如“public static void main()”和“System.out.print” - 由于它处理对象的独特方式,它们是不必要的。它还向学生介绍UML并立即理解对象。