Pointers 我们应该用“a”来教指针吗;“编程基础”;课程

Pointers 我们应该用“a”来教指针吗;“编程基础”;课程,pointers,computer-science,Pointers,Computer Science,明年秋天,我将教授一门编程基础课程,即计算机科学一年级课程。在这样的课程中教授指针的利弊是什么?(我的立场:应该教他们) 编辑:我对“迎合你的读者”论点的问题是,在大学的头几年,我们(教授)不知道学生是否想成为科学家。。。我们希望我们知道,但我们必须在那些将继续上学的人(科学家不需要4年)和那些将成为工程师的人之间取得平衡 最终决定:至少参考文献,但可能是没有指针算法的指针。至少你应该教授参考文献或一些等效概念。我认为你可能应该在指针运算、c数组和字符串等方面放轻松,但间接寻址是计算机科学中一个

明年秋天,我将教授一门编程基础课程,即计算机科学一年级课程。在这样的课程中教授指针的利弊是什么?(我的立场:应该教他们)

编辑:我对“迎合你的读者”论点的问题是,在大学的头几年,我们(教授)不知道学生是否想成为科学家。。。我们希望我们知道,但我们必须在那些将继续上学的人(科学家不需要4年)和那些将成为工程师的人之间取得平衡


最终决定:至少参考文献,但可能是没有指针算法的指针。

至少你应该教授参考文献或一些等效概念。我认为你可能应该在指针运算、c数组和字符串等方面放轻松,但间接寻址是计算机科学中一个非常重要的概念,应该向学生介绍它。

我认为“编程基础”课程至少应该涉及基本的处理器体系结构和汇编语言,如果是这样的话,你就没有理由不讨论指针了。 如果你只教授高级(字节码)语言,那么我想指针会让听众感到困惑。

是的

指针是其他高级语言中大量概念的基础,我坚定地认为,你需要教授一定数量的低级知识,以便更好地理解为什么我们要学习高级语言


一旦您了解了内存是如何分配的,以及如何使用指针对其进行寻址和操作,解释许多其他构造就变得容易了。例如,在Java中解释
NullPointerException
,甚至在这些语言中解释引用的概念都是儿戏,如果你有人理解C中的指针(更好的是,如果他们也在C++中搜索引用的话)。无论是指针、引用、动态绑定还是其他任何东西,理解间接寻址对于编程都是必不可少的。现在显然不要从它们开始,但是理解间接性至少和理解控制流思想一样重要


当然,缺点是有些人得不到它,成绩很差或辍学。如果这是一门为想成为计算机科学专业学生的人开设的课程,那么不要担心,因为你只是在鼓励他们提前而不是晚些换专业。如果它更多的是针对对编程感兴趣的人的普通教育课程,那么它们可能仍然应该被介绍,但不要评分太高或太高。

在我作为CS学生的第一年,我在秋季参加了一门Java课程,这是一门普通的入门课程。教授没有直接教授指针,但他教授了引用的概念,以及为什么你可以修改对象,而不是在参数中传递原语时

在我的第二个学期,我选修了这个系列的下一门课程,是关于C的,这门课非常依赖指针


对于编程入门课,我想说的是只提到参考资料,而不是直接指出来。

我认为你不应该先教它。但后来,一旦获得了编程的基本概念

一个很好的例子是Stroustrup的最后一本书:在谈到指针之前,他教了如何制作解析器、I/O(流)使用和GUI使用


我认为这将是一个很好的教学参考,因为更自然的是理解我们构建想法的方式,而不是我们必须同时处理多少约束(例如内存管理)才能使软件工作。我真的建议你在这本书中对编程基础知识的教学有一个全新的视角。

优点:对机器使用内存的方式、指向堆上数据的指针与指向堆栈上数据的指针之间的区别(和陷阱)、按地址传递方法等有深入的理解

缺点:对于尚未掌握计算机体系结构知识(或没有足够的时间来理解这些概念)的观众来说,这很复杂,包括什么是堆栈、什么是寄存器、调用约定等

因此,总而言之,这在很大程度上取决于您的受众和您将要处理的语言(指针在LISP或Java上下文中毫无意义),以及您愿意朝着什么是堆、什么是堆栈、范围如何转换为堆栈的方向走多远(即为什么从不返回指向局部变量的指针)等


当我教一门工程课的指针时,我最终在一个简单的“hello world”上启动了一个调试器程序,并向学生展示了实际的机器代码、寄存器值和相应的内存转储,以及堆栈操作和参数传递等,但他们已经做好了准备。您的观众是否愿意接受这种深入调查,以确保对幕后发生的事有深入的了解,您是否愿意这取决于你的课程目标——教授编程和教授计算机科学是两个独立的目标,虽然它们不是相互排斥的,但入门课通常不能同时教授这两个目标。这里有一个不同的例子:假设我们想学习如何对列表排序。C++中的一个编程课程将教你使用一个STD::排序函数模板的语法,而作业可能会写几个比较函数。计算机科学课程将向您解释什么是合并排序,伪代码中的算法是什么,它的性能/空间特征,家庭作业将是编写排序函数本身

所以,如果你在教初级体育课