关于Scheme
6.001 - Structure and Interpretation of Computer Programs,是电气和计算机科学的学生的第一门核心课程,通过学习这一门课程可以让学生能够理解和运用基本的编程方法,用它来分析计算机系统并产生抽象问题的解决方案。和我们学习C的教育不同,他们学习编程语言是Scheme ,它是LISP语言的一个方言(或说成变种),诞生于1975年的MIT,对于这个有近三十年历史的编程语言来说,它并没有象C++,java,C#那样受到商业领域的青睐,在国内更是鲜为人知。但它在国外的计算机教育领域内却是有着广泛应用的,有很多人学的第一门计算机语言就是Scheme语言。如果想了解Scheme,请点击这里。这篇文章让有编程基础的朋友能尽快的掌握Scheme语言的语法规则。
另外一个Scheme教科书的在线版本: 如何设计程序 http://www.htdp.org/
该课程(6.001)中所用书籍的在线版本:SICP http://mitpress.mit.edu/sicp/full-text/book/book.html
当然,这是针对首次接触程序设计的学生而设计的教材。如果你已经不是一个编程新手,或者只是想了解或者学习Scheme,可以浏览Scheme的官方网站来找到更多的资源:http://www.swiss.ai.mit.edu/projects/scheme/
关于Scheme而非C被选作首个编程语言的理由,我们可以从他的语言特性中略见一斑:作为Lisp 变体,Scheme 是一门非常简洁的计算语言,使用它的编程人员可以摆脱语言本身的复杂性,把注意力集中到更重要的问题上,从而使语言真正成为解决问题的工具。值得一提的是它和Python一样,属于简约派,做为Python的支持者,我很赞同将Python列为第一个学习的编程语言,不过遗憾的是,它并不能像c那样,贯穿起算法、数据结构、系统原理、编译和数据处理、软件设计和组件技术等关键知识领域,但是首个编程语言选做某某,并不与其他关键领域的学习相冲突,毕竟它是第一个而非唯一,正如6.001课程的主要目标那样,第一个编程语言的学习是用来掌握基本的编程方法和解决抽象问题的,同时还应该兼顾兴趣和信心的培养,规避开一些语言上的复杂性(也许有人会想:噢,那样的话,干嘛不直接学习LOGO? : ) ,
好了,论战到此为止 - -!)。
此外关于主要教学编程语言的讨论,可以看看孟岩的“终于有人说出来了——Java不适合于作为主要编程教学语言 ”,文中从两位退休的美国大学教授上书反对将Java作为编程教学语言说起,谈到“只学习Java、C#、VB等“现代”编程语言的学生,精于拿来主义,长于整合和快速开发,思维活跃,生产效率高,让他们来做直截了当的、有章可循的、非研究性和非创新性的工作比较合适,但是基础不扎实,对计算机系统的理解薄弱,处理细节和矛盾的能力不足,一旦他们熟悉的套路用不上,则缺少自主分析问题、解决问题的知识、能力和经验”,之中还提到了“必修”“C程序设计语言”课程的现状:这门课程的总体教学质量相当糟糕,大部分学生可以说是满怀希望而来,两手空空而去。
另外一个Scheme教科书的在线版本: 如何设计程序 http://www.htdp.org/
该课程(6.001)中所用书籍的在线版本:SICP http://mitpress.mit.edu/sicp/full-text/book/book.html
当然,这是针对首次接触程序设计的学生而设计的教材。如果你已经不是一个编程新手,或者只是想了解或者学习Scheme,可以浏览Scheme的官方网站来找到更多的资源:http://www.swiss.ai.mit.edu/projects/scheme/
关于Scheme而非C被选作首个编程语言的理由,我们可以从他的语言特性中略见一斑:作为Lisp 变体,Scheme 是一门非常简洁的计算语言,使用它的编程人员可以摆脱语言本身的复杂性,把注意力集中到更重要的问题上,从而使语言真正成为解决问题的工具。值得一提的是它和Python一样,属于简约派,做为Python的支持者,我很赞同将Python列为第一个学习的编程语言,不过遗憾的是,它并不能像c那样,贯穿起算法、数据结构、系统原理、编译和数据处理、软件设计和组件技术等关键知识领域,但是首个编程语言选做某某,并不与其他关键领域的学习相冲突,毕竟它是第一个而非唯一,正如6.001课程的主要目标那样,第一个编程语言的学习是用来掌握基本的编程方法和解决抽象问题的,同时还应该兼顾兴趣和信心的培养,规避开一些语言上的复杂性(也许有人会想:噢,那样的话,干嘛不直接学习LOGO? : ) ,
好了,论战到此为止 - -!)。
此外关于主要教学编程语言的讨论,可以看看孟岩的“终于有人说出来了——Java不适合于作为主要编程教学语言 ”,文中从两位退休的美国大学教授上书反对将Java作为编程教学语言说起,谈到“只学习Java、C#、VB等“现代”编程语言的学生,精于拿来主义,长于整合和快速开发,思维活跃,生产效率高,让他们来做直截了当的、有章可循的、非研究性和非创新性的工作比较合适,但是基础不扎实,对计算机系统的理解薄弱,处理细节和矛盾的能力不足,一旦他们熟悉的套路用不上,则缺少自主分析问题、解决问题的知识、能力和经验”,之中还提到了“必修”“C程序设计语言”课程的现状:这门课程的总体教学质量相当糟糕,大部分学生可以说是满怀希望而来,两手空空而去。