我正在学习C,但在那之后或同时,在进入C ++之前我应该先学习什么?编译器,数据结构,UML或设计模式?(也是在开始学习Win32 API的时候?)我根本不急,所以我可以从最深的开始掌握这些要求。我只是不想因为粗略和疏忽而迷失方向。
除此之外,哪些数学科目对编码影响最大?线性代数,离散数学,微积分?
如果有人引导我完成这段旅程,我将感激不尽。有很多问题我想知道答案。感谢。
答案 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 ++。
差点忘了!你绝对必须使用一个体面的C编译器。 C ++在企业中广泛使用的一个主要原因,以及C在Windows开发人员中的不良声誉是Visual Studio。 Visual Studio很容易就是最好的C ++ IDE,但它也是我所知道的最差的C编译器。请务必使用支持C99的C编译器,例如GCC,mingw或Clang。我对C的第一次体验是使用LCC,这在Windows上非常容易使用,但是自从迁移到Linux以来我没有使用它,所以我不能评论它的C99状态。
答案 1 :(得分:3)
编译器,数据结构,UML或设计模式?
数据结构和算法。
除此之外,哪些数学科目对编码影响最大?线性代数,离散数学,微积分?
离散数学与数论。
答案 2 :(得分:1)
你应该先学会用结构良好的语言编写程序:建议使用Ocaml,Haskell也很好但是更难以获得一个正常工作的编译器,因为它纯粹是功能性的。
数学在编程中几乎没有用(有用的数学太难了,即类别理论)。然而,一些基本类型理论是有用的。
你不能用像C这样的语言学习好的编程,重要的东西太深深地埋没在家务和历史的愚蠢中。