在进入C ++之前我应该​​先学习什么?

时间:2010-12-04 07:10:11

标签: c++ c design-patterns data-structures compiler-construction

我正在学习C,但在那之后或同时,在进入C ++之前我应该​​先学习什么?编译器,数据结构,UML或设计模式?(也是在开始学习Win32 API的时候?)我根本不急,所以我可以从最深的开始掌握这些要求。我只是不想因为粗略和疏忽而迷失方向。

除此之外,哪些数学科目对编码影响最大?线性代数,离散数学,微积分?

如果有人引导我完成这段旅程,我将感激不尽。有很多问题我想知道答案。感谢。

3 个答案:

答案 0 :(得分:15)

首先,你应该知道C ++ 不是是一种优秀的语言。 C的用途不仅仅是C ++的垫脚石。使用C和“C风格”C ++是因为它们:

  • 生成较小的二进制文件
  • 使用更少的内存
  • 编译得更快
  • 不需要操作系统支持
  • 更简单,更容易实施

数据结构是目前列出的最有用的学习方法,其次是算法。如果你想进入C ++,那么拥有良好的设计技能也是有用的(强制性的?)。

你根本不应该学习Win32。请考虑学习POSIX API,GTK+Boost,因为它们更易于移植,并且可以在Windows以外的平台上使用。

你可以做出的最好的决定是learn C thoroughly作为Unix平台上的一项独立技能,然后通过无法看到C和C ++之间的区别来克服自己。

在列出的数学学科中,我只使用了离散数学。线性代数也很有用,但到目前为止,编程的最佳学科是数学理论。

在C中享受您的时间,不要依赖Windows / Visual Studio,也不要急于使用C ++。

Update0

差点忘了!你绝对必须使用一个体面的C编译器。 C ++在企业中广泛使用的一个主要原因,以及C在Windows开发人员中的不良声誉是Visual Studio。 Visual Studio很容易就是最好的C ++ IDE,但它也是我所知道的最差的C编译器。请务必使用支持C99的C编译器,例如GCCmingwClang。我对C的第一次体验是使用LCC,这在Windows上非常容易使用,但是自从迁移到Linux以来我没有使用它,所以我不能评论它的C99状态。

答案 1 :(得分:3)

  

编译器,数据结构,UML或设计模式?

数据结构和算法。

  

除此之外,哪些数学科目对编码影响最大?线性代数,离散数学,微积分?

离散数学与数论。

答案 2 :(得分:1)

你应该先学会用结构良好的语言编写程序:建议使用Ocaml,Haskell也很好但是更难以获得一个正常工作的编译器,因为它纯粹是功能性的。

数学在编程中几乎没有用(有用的数学太难了,即类别理论)。然而,一些基本类型理论是有用的。

你不能用像C这样的语言学习好的编程,重要的东西太深深地埋没在家务和历史的愚蠢中。