我应该在学习 C + + 之前先学习 C 语言吗?

今天我参观了一所大学计算机科学系的开放日,在实验室之旅中,我们坐下来和几个本科生的最后一年的项目一起玩。其中一个游戏特别好——一种 FPS 小行星游戏。我决定查看一下 src目录,发现它是用 C + + 完成的(其他大多数项目都是 Java3D 应用程序)。

我以前没有做过任何 C 语言,但是我以前看过一些 C 语言代码。从我看到的。这个游戏中的 cpp 代码看起来没什么不同。

我对学习 C 或 C + + 很感兴趣,但可能会在以后学习其他语言

196091 次浏览

在学习 C + + 之前没有必要学习 C 语言。

他们是不同的语言。常见的误解是,C + + 在某种程度上依赖于 C,而不是一种完全特定的语言本身。

仅仅因为 C + + 有很多相同的语法和语义,并不意味着你需要先学习 C 语言。

如果你学习 C + + ,你最终会学到大部分的 C 语言,并且随着时间的推移,你会发现它们之间有一些差异。事实上,编写正确的 C + + 是一件非常困难的事情,因为中级 C + + 程序员倾向于编写 C/C + + 。无论您是从 C 开始还是从 C + + 开始,这都是正确的。

如果你先知道 C 语言,那么对于学习 C + + 来说,这是一个很好的补充。您将从了解一大块语言开始。如果你首先不知道 C 语言,那么就没有必要关注另一种语言。有很多好的书籍和教程可供选择,它们可以让你从一无所知开始,也可以让你从 C 语言中学到任何适用于 C + + 的东西。

请参阅此答案中的进一步推理。

在学习 C + + 的过程中,你也会学到大部分的 C 语言。但是请记住,很多 C + + 代码是无效的。 C + + 被设计成与 C 代码兼容,所以我认为应该先学习 C + + 。布莱恩就此写了一份 答得好

没有。

学习 C + + 通常更有用,因为它更接近于最现代的基于面向对象的语言,如 Eiffel 或 C # 。

如果你的目标是学习 C + + ,那么首先学习现代的标准 C + + 。


但是 Steve Rowe 有道理..。

我喜欢这个问题——就像问“我应该先学什么,滑雪板还是滑雪?”? 我认为这取决于你是想滑雪还是滑雪。如果你想两样都做,你就必须两样都学。

在这两项运动中,你都可以使用足够类似的设备在雪地上滑下小山,从而引发这个问题。然而,它们也有很大的不同,所以学习其中的一个对你学习另一个并没有多大帮助。C 和 C + + 也是一样。虽然它们在语法上看起来是非常相似的语言,但是编写面向对象代码和过程代码所需要的思维模式是非常不同的,所以无论你第二次学习什么语言,你都必须从头开始。

通过观察那些最先学习 Java 的人,他们正在与 C + + 中的指针和内存管理的概念做斗争,我认为首先学习 C 是一个好主意,为了掌握这两个概念,从其他 C + + 特性的复杂性中分离出来。

就像生活中许多其他问题的答案一样,这取决于。这取决于您的编程兴趣和目标是什么。如果您想要编写桌面应用程序,可能使用 GUI,那么 C + + (和 OOP)可能是更好的方法。如果您对 x86芯片组以外的硬件编程感兴趣,那么 C 通常是更好的选择,通常是因为它的速度。如果你想创建一个新的媒体播放器或者编写一个商业应用程序,我会选择 C + + 。如果你想对星系碰撞或流体动力学进行科学模拟,请看 C 的力量。

学习 C 会迫使您在编写代码时更加认真地考虑一些问题,例如显式和隐式内存管理或基本数据类型的存储大小。

一旦你对 C 的特性 和错误的特征感到满意,你在学习和编写 C + + 时就不会有那么多麻烦了。

你所看到的 C + + 代码完全有可能看起来与标准 C 没有太大的不同,但这很可能是因为它不是面向对象的,也没有使用异常、面向对象、模板或其他高级特性。

我认为你应该先学 C 语言,因为是我先学的 C 语言。C 语言让我很好地掌握了语法和指针之类的陷阱,所有这些都流入了 C + + 。

我认为 C + + 可以很容易地包装所有这些陷阱(需要一个在使用[]操作符和不可靠索引时不会溢出的数组吗?当然,创建一个进行边界检查的数组类) ,但是您需要知道它们是什么,并且在您理解为什么事情以某种方式进行之前被它们咬住。

总而言之,C + + 通常被教授的方式是“ C + + 是带有对象的 C,这里是 C 的东西,这里是所有面向对象的东西是如何工作的”,所以如果你跟随大多数文本,你可能会比任何真正的 C + + 先学习基本的 C 语言。

如果您决定同时学习这两种语言(正如其他人所提到的,没有明确的需要同时学习这两种语言) ,那么首先学习 C 语言。从 C 语言到 C + + 语言是一个自然的过程,而从 C 语言到 C + + 语言就像是故意把一只手绑在背后。:-)

我不同意大多数人的观点。我认为 应该在学习 C + + 之前先学习 C 语言。这当然是没有必要的,但我认为它使学习 C + + 容易得多。C 是 C + + 的核心。你学到的任何关于 C 的知识都适用于 C + + ,但是 C 要小得多,也更容易学。

拿起 K & R 仔细看看。它很短,会给你一个足够的语言感觉。一旦掌握了指针和函数调用的基本知识,就可以更轻松地学习 C + + 了。

我认为先学 C 语言是个好主意。

计算机科学课程仍然使用 C 语言是有原因的。

在我看来,这是为了避免所有的“拥挤”的主题事项的义务,要求面向对象程序设计进行。

我认为程序编程是最自然的学习编程的方式。我认为这是正确的,因为在一天结束的时候,你所拥有的是: 一行接一行执行的代码。

今天的许多课本都在推行“对象优先”的方法,在引入数组之前就开始讨论汽车和变速器。

在学习 C + + 之前,我先学习了 C 语言的数据结构。这招对我很管用。一门 C 语言的数据结构课程使我对指针和内存管理有了扎实的理解。一旦我了解了面向对象的范例是什么,它也使它的好处变得明显。

另一方面,通过首先学习 C 语言,我养成了一些习惯,这些习惯最初导致我编写糟糕的 C + + 代码,比如过度使用指针(当 C + + 引用可以做到时)和预处理器。

C + + 是一种非常复杂的语言,有很多特性。不过,它并不是真正的 C 的超集。而是 C + + 的一个子集,由基本的程序编程结构(循环、 ifs 和函数)组成,这与 C 语言非常相似。在您的例子中,我将从这个开始,然后逐步深入到更高级的概念,比如类和模板。

恕我直言,最重要的是,在你的大脑冻结成一种看待世界的方式之前,尽早接触不同的编程范式,比如过程性的、面向对象的、功能性的和逻辑性的。顺便说一句,我还强烈建议您学习一种函数式编程语言,比如 Scheme。这会让你开阔眼界的。

我认为 c 是一种非常好的编程语言,它很紧凑,而且容易学习。 但是如果你只想学 c + + 就从 c + + 开始。但我建议你两者都要学。如果你想这样做,我认为最好从 c 开始,正如前面所说: ,它很小,而且有点容易学。可能是向 c + + 这种更复杂的编程语言迈进的一个很好的步骤。(因为 c 为您提供了一些基础知识)

祝你好运。

我的建议是:

我建议先学 C 语言,因为:

  • 它是一种基础语言——很多语言都是从 C 语言衍生而来的
  • 更多的平台支持 C 编译器而不是 C + + ,不管是嵌入式系统,GPU 芯片,等等。
  • TIOBE 指数统计,C 语言的流行程度仍然是 C + + 的2倍。