【发布时间】:2011-03-29 01:13:39
【问题描述】:
我想学习用opengl编程(实际上我想在未来学习图形、gpu和hpc),一个朋友建议我阅读GoF的书(设计模式),然后阅读一些关于Ogre3d或Qt的东西或者sdl之类的……我也有疑问,因为前段时间看了一本书,想提高自己的知识……是不是需要设计模式再学opengl?
【问题讨论】:
标签: design-patterns opengl graphics
我想学习用opengl编程(实际上我想在未来学习图形、gpu和hpc),一个朋友建议我阅读GoF的书(设计模式),然后阅读一些关于Ogre3d或Qt的东西或者sdl之类的……我也有疑问,因为前段时间看了一本书,想提高自己的知识……是不是需要设计模式再学opengl?
【问题讨论】:
标签: design-patterns opengl graphics
设计模式与图形编程无关。它们是广泛适用的方法,您可以解决编程中常见的多个问题。我必须在这里向您推荐这个非常好的问题以了解更多信息:How do you know when to use design patterns?。
我个人的意见是,在积累一些一般的编程经验之前,您不应该深入研究设计模式。要获得设计模式,您需要亲身体验它们将帮助您解决的问题(从未需要过火的人会发现很难理解火柴的用处)。
从一些介绍性文本开始,然后获得一些实践经验(图形方面,因为这是您的选择领域),然后然后阅读 GoF 书籍。
【讨论】:
对于您进行 OpenGL 编程的特定任务而言,学习设计模式并不是必需的,但如果您正在从事软件开发工作,那么学习设计模式对您非常有帮助。但是,除非您具备良好的面向对象编程基础知识,否则很多 GoF 概念都将超出您的想象。
【讨论】:
不,学习设计模式并不是使用 opengl 编写应用程序的严格要求。
但是,如果您想提高作为软件开发人员的技能,我建议您学习它们。 Gang of Four 是一个很好的起点。
【讨论】:
直到我编写了足够长的时间来自己注意到其中的许多模式之后,我个人才看到 GoF 设计模式背后的价值。看到它们的使用后,更容易激发人们为什么要写它们,以及为什么有人会阅读它们。
如果您像我一样,那么 GoF 书是否有很大帮助取决于您的经验;在我发现它有价值之前,我必须自己积累相当多的经验。在这种情况下,我认为学习更多的语言和编写更多的工具将是一个更直接有用的努力。
但请确保您在未来两三年内的某个时间阅读它;它写得很好,人们确实经常只是随口说“哦,那是个傻瓜”,或者“EventMachine 是反应堆模式的一种实现”,熟悉这些术语可以大大缩短对话时间。
【讨论】:
我认为必须对各种设计模式有基本的了解。无论是 GoF 图案还是任何其他系列都无关紧要。重点是研究它们,了解它们在何时何地有意义,然后在构建软件系统时应用它们。
我不认为记住每一个设计模式的名称是有价值的。今天,如果你开始乱扔“命令模式”之类的术语,大多数人会感到困惑,有些人会认为你只是在炫耀,有些人会和你争论几个小时关于命令模式到底是什么,对还是错(通常介于两者之间)。
因此,总的来说,请研究它们,并使用它们来学习解决问题的创造性方法。不要从“我可以在这里使用委托模式”的立场来解决问题,而是让委托模式的知识将您的技能提高到您无需考虑使用什么模式的程度,它只是发生了,然后往往事后,你意识到,你只是实现了一个或多个模式。我们中的许多人多年来一直在做这件事,却没有考虑过。
【讨论】:
阅读和理解一本关于设计模式的书会很有帮助。
设计模式的目标是为您提供如何处理常见编程任务的参考点。
绝对有必要吗?没有。如果您想从事软件开发工作,是否有必要?没有。但是,了解常见问题是什么以及其他人如何解决这些问题会很有帮助。
一般来说,软件开发人员会发现自己一遍又一遍地解决完全相同的问题。在此过程中,他们将调整解决方案,直到找到接近最佳且易于复制的解决方案。四人帮和其他模式只是那些以通用格式编写的解决方案。坦率地说,那里的“模式”远远多于它们的名称。
有趣的一点是,大量程序员在不自觉地应用常见模式的情况下。
【讨论】:
没有。设计模式不是学习任何编程知识的必要条件。它们只是您应该知道的。
由于对模式的理解只能来自经验,因此建议您在思考模式之前先获得一些实际生活经验。
【讨论】: