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

Dan*_*iel 7 c c++ compiler-construction design-patterns data-structures

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

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

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

Mat*_*ner 15

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

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

到目前为止,数据结构是列出的最有用的学习方法,其次是算法.如果你想进入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,mingwClang.我第一次使用C的经历是使用LCC,这在Windows上非常容易使用,但是自从迁移到Linux以来我没有使用它,所以我不能评论它的C99状态.