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