增强我的C / C ++代码级别


16

我已经编程3-4年了,觉得不能再被称为初学者了,但是我在该站点上阅读了一些问题,认为他们在谈论WTF?如今,当我拿起编程书籍时,我会有相同的感觉。

我已经阅读了几本入门编程书籍,其中一些涉及C / C ++,另一些涉及游戏。我写了一些更复杂的东西,例如非常基本的AI,串行和TCP / IP接口。

我打算成为一名游戏程序员,但是最近我有机会在嵌入式系统(串行接口)上工作后对嵌入式系统产生了一定的兴趣。

我发现在完成入门和入门书籍之后,很难找到继续学习的材料,因为我找不到任何中级的C ++书籍。

您会提出什么建议来发展和增强我的知识和技能?具体资源将不胜感激。


对于C ++书籍,请参见以下问题:stackoverflow.com/questions/388242/…–
Naveen

Answers:


10

如果您在谈论C / C ++,那么您肯定可以使用一些额外的经验。我给你的第一个提示是C和C ++是完全不同的语言。学习C ++的最佳资源是StackOverflow,那里有很多有丰富经验和知识的人。

接下来要做的是启动一个大型项目,例如尝试使用DirectX这样的低级API编写3D图形引擎,当您的设计像所有第一个项目一样不幸失败时,您将学到一些如何进行编程。

您可以在StackOverflow上查看链接,以获取大量学习C ++的好书。


3
不,学习C ++的最佳资源是一本好书,或者最好是书。
尼尔·巴特沃思

+1用于开始大型项目。通过3D图形引擎的努力,我学到的东西比我读过的书还多。它迫使您陷入需要研究解决的陌生情况。它不是很漂亮,效率也不高,但是您会学到一些东西。
SC Ghost

对于“如果您正在谈论C / C ++,那么您肯定可以使用一些额外的经验” +1。-1表示“学习C ++的最佳资源是StackOverflow”,因此无需投票。
Residuum 2015年

5

首先,增加您尚不了解的基本理论背景。学习理论并写一些简短的例子。

基本理论背景示例包括:

  • 算法和数据结构
  • 软件设计(UML,设计模式,OOP)
  • 操作系统和并行编程

然后,考虑学习其他语言(例如Java或C#)。-学习其他语言有助于更好地了解所用语言的优缺点,并帮助您学习可能不了解的最佳做法。

接下来选择一个新域(Web编程,计算机图形学,图像处理,计算机视觉,数据访问等)。学习理论并写一些简短的例子。

接下来创建一个大型示例,该示例封装了一个多层应用程序,处理数据访问,UI和您选择的特定域。强调应用程序的体系结构(确保其各部分尽可能松散地耦合)。

希望您将学习如何学习新方法和新技术,并将其与良好的体系结构集成。


专门针对游戏编程,我建议选择以下领域/技术:

  • 图像处理基础
  • 任何特定的UI技术
  • 计算机图形学基础
  • 任何特定的图形引擎(例如DirectX,OpenGL,OGRE,ODG,Java3D等)
  • 机械物理基础
  • 任何特定的物理引擎(例如PhysX等)
  • 任何特定的游戏引擎(例如XNA等)
  • 多线程编程
  • 分布式编程


编辑:

学习方法:

  • 阅读并运行CodeProject中的示例。
  • 浏览书籍/电子书库或商店中的几本书,直到找到几本您喜欢的书(与您的阅读风格相匹配+涵盖您要阅读的主题)。
  • 阅读博客。
  • 尝试尝试一下,然后在卡住时询问StackOverlow。

我知道直接x。第二,我已经想到了这一点,但是除了最基础的内容之外,找不到任何资源,您对如何学习这些东西有任何建议吗?
Skeith,2011年

2
通过编写示例-反复试验是最好的方法。另外,请参见编辑。
丹尼·瓦罗德

1

使用C ++(与C结合使用)假设您将进一步了解他们所谈论的WTF。C ++是几种语言,位于同一位置的几层抽象,需要花费大量时间来一次探索所有内容,然后才能了解您刚刚看到的内容。

我一直在你的情况下,我仍在学习这些语言。我还学到了很多有关嵌入式系统的知识。

这是我的建议:

  • 阅读这些书:https : //stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list- >从入门书籍开始,即使您觉得自己不是初学者,因为您有在继续学习之前要先解决很多基础知识。然后了解模板元编程和嵌入式系统限制。
  • 多做一些练习:应用的知识越多,对它的理解就越多。在这一点上,我的工作方式是在少量测试项目中测试语言和上下文的任何角落。我也有“大型”家庭项目,我可以控制所有事情,并且可以练习新技术并推动它们直到崩溃。

不要以为您已经对编程有很多了解。大多数开发人员只有在超过10年的实际实践中,具有不同的上下文和种类的项目,平台等之后,才能在编程方面变得成熟。

您才刚刚开始旅程。


3
更不用说当您使用它时,“成熟”离“没什么可学的”相去甚远。您学得越多,您所知道和不知道的东西就越多。
David Thornley,

0

根据您对嵌入式编程和游戏的兴趣,我还建议您采取以下措施-您可以仔细阅读上述文章中的书目清单,以找到有关所有这些主题的良好资源。我发现必不可少的一本书是《 C ++标准库:教程和参考》。

  • 如果您不熟悉OOP的基础知识,请先学习这些知识。了解继承和封装的基础知识。了解虚拟,公共/保护和私有以及静态关键字的行为。

  • 习惯使用指针和引用(通常更喜欢引用)。学习并使用smart_ptr <>构造来实现“自动”内存管理。

  • 了解如何使用C ++模板-最初只是作为容器数据类型使用。您将不断发现C ++模板可以通过元编程执行的新的更强大的技术。

  • 了解STL:使用字符串,iostream,异常和容器类,并在可行时优先于低级char *,FILE *和char []数据类型使用它们。

  • 开始使用Boost库的各个部分-鉴于您的兴趣,我建议您首先学习它们的asio和线程库。这是一个非常强大的开放源代码,跨平台的C ++源代码库,它使您可以编写可移植的高质量代码。(对C ++核心标准的许多补充源自Boost的贡献)

  • 玩得开心!认真地-选择一些宠物项目进行编码。如果您喜欢嵌入式编程项目,也许可以修改Arduino开发板。

  • 获得丰富的经验-如果您只使用过Windows / Visual Studio C ++,请尝试编写一些用于Linux / g ++或OS X / XCode的代码(您可以在Mac上编写C ++,或者您可以真正拓展视野并继续前进)对于Objective-C,了解OOP语言的另一个分支如何解决问题!)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.