How to teach a crash course on C++?几周后,我们将直接在大学里为Java程序员教授一门速成课程。他们很少或没有经验,但C或C++。 本课程之前的版本仅为1或2个半天的课程,涵盖的主题包括:
在课程中,每个人使用新引入的功能分别编写、编译、运行和调试简单的程序。这是最好的学习方式吗? 你认为哪些主题最重要?应添加或删除哪些主题?哪些主题在短时间内无法充分涵盖? 我只能再一次指向stroustrup和布道:不要教C子集!这很重要,但不适合初学者!C++是足够复杂的,并且标准库类,尤其是STL,比C++的C子集更为重要和(至少表面上)更容易理解。 顺便说一下,指针和堆内存分配也是如此。当然,它们很重要,但只有在教过STL容器之后。 另一个重要的概念是新学生必须了解不同的编译单元、一个定义规则(因为如果你不知道它,你就无法解密错误消息)和头。这实际上是一个相当大的障碍,必须尽早突破。 除了语言特点外,最重要的事情是如何理解C++编译器和如何获得帮助。在我的经验中得到帮助(即知道如何搜索正确的信息)是关于C++的最重要的事情。 我过去对这种教学顺序有过相当好的经验。 /编辑:如果你碰巧认识一个德国人,请看一下http://madrat.net/coding/cpp/skript,这是我的一门课程中使用的非常简短的介绍的一部分。 如果它们来自Java世界,则用于垃圾回收。因此,我可能会花一些时间讨论智能(引用计数)指针,以及它们与垃圾收集的比较方式。 我想补充一点,您应该确保指出在哪里可以找到语言和API引用。在Java中,API和语言规范在Java.Sun.com上是在线的。用C或C++,它不是那么简单和容易找到参考文献。 每当我在C或C++中做某事时,那是我最大的问题…试图找到我需要的。我通常求助于cplusplus.com,它通常有我需要的,否则我会用谷歌搜索。如果你有一套你使用的参考资料(在线或以书籍的形式),列出它们并告诉他们你使用每个参考资料的目的。 如果你打算把很多Java程序员直接从大学里写出生产代码,我会说你首先要关注的是指针和内存管理。 实际上,那些直接来自托管代码的人很少有调试与指针相关的异常的技能,更不用说正确地使用它,甚至不知道他们的语言/工具是如何使用它的。
框架和编码实践可以作为提示和注释进行教学。 但是,在编写C代码时,如果不理解指针,那就只是在等着射自己的脚,如果不是头部。 我会花一整天的时间来讨论如何在C++中编写一个好的类。DEITEL&DEITEL可作为参考。
内存管理(指针、分配等)、STL和模板的基础知识(因为STL使用模板)。我认为STL很重要,因为在C++中缺少了JavaSE类库的丰富性。 你应该花点时间来管理内存,尤其是RAII。 |