令人着迷的问题;我喜欢您强调客观标准。我们希望新生学习:
编程概念:第一种编程语言必须支持:函数调用,迭代,递归
基本思想:第一种编程语言必须支持数组(在关于内存如何真正工作以及指针如何工作的简要介绍中的第一步)
实用的编程技能:如何使用调试器,如何使用事件探查器,如何解决大问题(高级语言),如何将大型系统组合在一起,如何分解问题(问题分解),如何避免编写复杂的代码,如何与人类交流后面的(常常神秘)系列可执行语句的意图。
存在针对sort()之类的东西以及如何使用它们的预先编写的库这一事实-即无需从头开始编写所有内容的事实。
其他母语的其他准则:
解释(快速反馈有助于学习过程)。
一个可加快学习,测试和调试速度的交互式环境。
高质量的源代码可供学生以该语言阅读
“易于阅读”,“接近自然语言的语法”(使阅读和评分SourceCode更加容易)
可移植(在Mac OS,Windows和Unix上运行)。至少一种该语言的免费软件实现。
教书的速度很快,“很少遇到麻烦”-例如,“先教初学者使用Python,然后再教Java,而不是将Java作为第一个OOPL,这可能会更快。” - “面向对象的编程语言比较” 和 TelescopeRule
Matthias Felleisen开发了一种编程语言,其中包含针对初学者的错误消息。他强调说,特定的语言选择并不像教一种好的设计方法一样重要。实际上,他将第一门CS课程视为一门通识教育课程,教授批判性思维,解决问题和关注细节的知识。
第二种编程语言的标准
我们希望学生学习的东西,但这也许可以等待第二种编程语言:
一种“不太深奥”的“相关”语言;“在业界很受欢迎”
复杂性理论:如何识别当前技术不可能完成的任务。
更高层次的东西:如何为工作选择合适的工具,如何使用编译器,结构,面向对象的程序设计,函数式程序设计,逻辑程序设计,编译器设计,组成和操作函数(从Lisp / ML的角度来看),并发和分布式编程,
低级的东西:指针算术,计算机体系结构。内存管理,堆栈框架,汇编程序,机器架构,设备驱动程序和操作系统设计(因此,机器不会“看起来像它们无法穿透的可怕的黑匣子”)
编辑:我发现发布与其他人合作撰写的文章摘要“很可能不合法”令人失望。
因此,我在以前的非正式链接中添加了更正式的引用,以尝试遵守合理使用和其他Wiki版权问题。
该答案是波特兰模式存储库中新生的第一语言(Anon 2011)的摘要。
(Anon,2011年)。许多匿名作者和其他作者。“新鲜人的第一语言”。波特兰模式存储库。2011年9月27日。http ://c2.com/cgi/wiki?FreshmansFirstLanguage。