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

Should I learn C before learning C++?

今天我参观了一所大学的计算机科学系的开放日,在实验室参观期间,我们坐下来讨论了几个来自本科生的期末项目。其中一个特别好——一种FPS小行星游戏。我决定在EDOCX1 0目录中窥视一下,发现它是在C++中完成的(大多数其他项目是Java 3D应用程序)。

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

我对C或C++学习很感兴趣,但以后可能会学习其他的。对我来说,先学后学有什么好处吗?如果有,那是哪一个?


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

它们是不同的语言。这是一个常见的误解,即C++在某种程度上依赖于C,而不是依赖于一个完全指定的语言。

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

如果你学习C++,你最终会学到大部分C语言,并且会随着时间的推移学习语言。事实上,编写适当的C++是非常困难的事情,因为中间的C++程序员倾向于编写C/C++。不管你用C开始还是用C++开始都是这样。

如果你首先知道C,那么这是学习C++的好方法。你将从了解一大块语言开始。如果你不首先了解C,那么就没有必要关注不同的语言。有大量的好书和教程,可以让你从一无所知开始,并涵盖你从C中学到的任何东西,也适用于C++。

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


我喜欢这个问题,就像问"我应该先学什么,滑雪还是滑雪"?我想这要看你是想滑雪还是想滑雪。如果你想两者兼得,你就必须学会两者。

在这两种运动中,你都会使用与之十分相似的装置在雪地上滑下山来引发这个问题。但是,它们也有很大的不同,因此学习一个对另一个没有太大帮助。与C和C++一样。虽然它们在语法上看起来非常相似,但是编写OO代码与过程代码所需的思维定势是完全不同的,因此您几乎必须从一开始就开始,无论您学习的是什么语言。


我先学习C,在学习C++之前,我学习了C语言的数据结构课程。这对我很管用。C语言的数据结构课程让我对指针和内存管理有了扎实的理解。一旦我了解了面向对象的范式是什么,它的好处就显而易见了。

另一方面,通过学习C语言,我已经养成了一些习惯,这些习惯最初导致我编写坏的C++代码,例如指针的过度使用(当C++引用时)和预处理器。

C++是一种非常复杂的语言,有很多特点。不过,它并不是C的超集。而是有一个C++的子集,包括基本的程序设计构造(循环、IFS和函数),这与C非常类似。在你的例子中,我将从这个开始,然后用我的方法学习更高级的概念,比如类和模板。

最重要的是,imho,在你的大脑冻结成一种看待世界的方式之前,尽早接触到不同的编程模式,比如程序化的、面向对象的、功能性的和逻辑性的。顺便说一下,我也强烈建议您学习一种函数式编程语言,比如Scheme。它真的会扩大你的视野。


我不同意大多数人的意见。我认为你应该在学习C++之前学习C语言。这绝对不是必要的,但我认为它使学习C++变得更加容易。C是C++的核心。C学习的任何东西都适用于C++,但是C是小得多,更容易学习。

拿起K&R阅读。它很短,能让你对语言有足够的理解。一旦你有了指针和函数调用的基本知识,你就可以更容易地进入C++了。


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


我认为你应该先学C,因为我先学C。C给了我一个很好的语法掌握,并与指针一样的东西,所有这些都流入C++。

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

当一切都被说和做的时候,C++通常被教导的方式是"C++是有对象的C,这里是C的东西,这里是所有这些OO的东西是如何工作的",所以如果你遵循大多数文本,你很可能在任何C++之前学习基本C。


C语言是软件工程的必备语言。C++、Java、Python都不是。你应该毫无疑问地先学。


在学习C++的过程中,你也将学习C的大部分内容。但是请记住,很多C++代码是无效的。C+++被设计成与C代码兼容,所以我首先说学习C++。布赖恩写了一个很好的答案。


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

一旦你达到了C的特性和错误特征的舒适点,在C++中学习和写作的难度就会降低。

您所看到的C++代码完全不同于标准C,但很可能是因为它不是面向对象的,而且不使用异常、对象定位、模板或其他高级特性。


不。

学习C++是更有用的,因为它更接近最现代的面向对象的语言,如Eiffel或C.*。

如果你的目标是学习C++,首先学习现代,标准C++。把Mallocs放在一边。

但是史蒂夫罗有一个观点…


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


在观察了人们首先学习Java之后,在C++中与指针和内存管理的概念进行斗争,我认为学习C首先是一个好主意,为了掌握这两个概念,与其他C++特性的复杂性隔离开来。


我的两分钱:

我建议先学C,因为:

  • 它是一种基本语言——许多语言都是由C语言衍生而来的。
  • 更多的平台支持C编译器,而不是C++,即嵌入式系统、GPU芯片等。
  • 根据TiOBE指数C仍然是2倍的流行比C++。

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

有一个原因是comp sci课程仍然使用c。

在我看来,这是为了避免所有的"拥挤"的主题物质的义务,要求OOP携带。

我认为程序化编程是最自然的开始学习编程的方法。我认为这是真的,因为在一天结束的时候,它就是你拥有的:一行接一行执行代码。

今天的许多文本都在推动"物体优先"的方法,并在引入阵列之前开始谈论汽车和换档。


我认为C语言是一种非常好的编程语言,它很紧凑,而且有点容易学习。但是如果你只想学习C++的C++入门。但我建议你两个都学。如果你想这样做,我想最好从C开始:它很小,学习起来也很容易。可能是一个很好的步骤,以更复杂的编程语言作为C++。(因为C为您提供了一些基础知识)

祝你好运。


一些C++书籍假设读者对C有最小的知识,但是无论你选择哪种语言都不是错误的方式,因为很多编程语言都是基于C/C++的部分,对于将来的学习来说,其他语言会更容易一些。