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

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

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

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

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

  • 生成较小的二进制文件
  • 使用更少的内存
  • 编译速度更快
  • 不需要OS支持
  • 更简单,更容易实现

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

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

您可以做出的最佳决定是在Unix平台上作为一项单独的技能彻底学习C ,然后通过无法看到C和C ++之间的区别来克服自己。

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

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

Update0

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

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

数据结构和算法。

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

离散数学与数论。

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

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

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