2010-09-08 78 views
1

我喜欢编程语言,并试图想出问题的逻辑解决方案。我一直在阅读C#和WPF的工作内容。 (也是Python和PyQt)在我编程的所有大学课程中,我什么也学不了(变量是什么,数组是什么,不是什么堆栈和堆,不是CLR/JVM实际做的)我感觉我有一个掌握基本知识,掌握更多实质性主题。如何开始开发软件?

我一直在试图制作自己的C#/ WPF应用程序,该应用程序由输入传感器和输出继电器进行家庭/商店自动化管理。

我有麻烦做某些事情。例如。使用户控件由中央控件使用,该中央控件在具有数据库层的同时控制另一个用户控件。

我真的很想学习如何构造逻辑上的程序和最好的设计是什么(例如,我讨厌有一个程序充满了if/else语句)。问题是,我发现的书籍只有基本的例子,并不能真正加深我对整个作品如何协同工作的全面认识。

+3

没有冒犯,但是如果你不知道堆和堆之间的区别,你没有掌握好基础知识,而且你的教官对你造成了很大的伤害,并且浪费了你的时间。建议的位置:在尝试解决硬件/软件交互之前,最好花时间学习基础知识。否则,你很快就会变得非常灰心。在你尝试解决WPF问题之前,你可能会最好的,在这一点上,选择一个开始的C#书。即使您是C#主控人员,WPF也不是一个简单的学习框架。 – 2010-09-08 00:57:43

+0

对不起,我的意思是讲师不知道并教导堆/堆栈以及C#和CLR之间的区别 – 2010-09-08 01:36:59

回答

5

我该如何开始做事?

您会发现一个开源(或至少“免费提供的源代码” - 不完全相同的东西,但差异应该只在您计划重新分配结果时才重要)就像“(也许”隐约“地喜欢;-)你正在尝试做什么,并用你知道或想学习的语言编码。

您复制该项目到您的计算机源代码树,并把重复的版本控制系统(svnhggitbazaar有一个bazillion好,免费的 - - 其他)项下的任何VCS相当independendently它最初可能已经存在 - 重要的是能够随时保存您的编辑内容,并在出错时轻松恢复。

然后,你开始黑客攻击,在文档和论坛中查找内容,根据需要询问SO等;-)。

0

在编程世界中没有“一只鞋适合所有人”的解决方案。但我推荐你一本书。希望你喜欢。

Head First设计模式 (O'Reilly出版)

0

老实说... ...真正的最佳答案?做东西。

我在学校学到了很多东西。吨。但正如你所说,有一个学校不接触的水平。我在2个月的编程/数据分析师方面有了更深入的了解,而我在2年内获得AA的编程经验。

认识到一件事:学校在那里教你一个广泛的事情 - 到一个最低水平。你不会独自从学校成为专家(有任何例外......与任何规则一样)。

我是怎么开始理解的?编程。老板给了我一个程序任务,我跑了。

我个人很喜欢Apress的书。 C#2008 Illustrated(或即将发布的2010)已经证明对我非常宝贵。我实际上阅读了这本书的95%,双重检查了例子......并且最重要的是......在我可怕的第一个编程任务中将它们付诸实践。我已经重新考虑了至少5次,并且已经看到了会让我再次这样做的事情。

我不知道你是否有工作......或爱好......你想帮助的开源程序......或者你想自动执行的任务。挑选一些东西,从里面学习,然后编程。

个人而言,再次......我想说加入一个已经运行的开源项目太多了。我尝试了几次,对我来说太过分了。很多事情我都不明白。我打算再次尝试一次,但我不打算在NBA球场上闲逛,因为我自己几乎不能运球时......如果你知道我的意思。

0

我该如何开始做事?

找到一个需要解决的问题,并编写一个程序来做到这一点。它不必漂亮或有效。该计划只需要工作。当您使用该程序时,您将开始学习更好的技术来完成您为自己设置的任务。谷歌和SO将成为你的朋友,并帮助你学习这些更好的技术。正如其他人所说,用C#直接控制硬件可能不是您的第一个程序的简单任务。

祝你好运。

0

阅读Martin Fowler的着作“重构:改进现有代码的设计”。

Martin Fowler通过向您介绍所有可能或可能不知道您正在制作的低级别决策,为您提供构建模块以考虑高层设计决策。他还很好地介绍了代码气味的概念。

看看DRY的设计原则不要重复自己,KISS保持简单愚蠢,并保持一致(Pet Peeve)。 更多设计原则在这里 Design Principles

实践这些原则,尽可能多尤其是在你的课程和工作以外的项目..

涉足开源

难做到,但可能会帮助你结合最特别是当与前两个。

个人体验可随意跳过。

经过三年艰苦的本科生,我意识到我可以解决一些非常复杂的证明,但我不知道如何写任何东西,但意大利面代码。我有最长的项目是5个月的时间,这足以让我真正赶上我。前2-3个月我的工作效率非常高,但是在第四个月时就从代码债务中爬了出来。在这一点上,我也有同样的想法。

大家都说最好的学习方式是练习,但我不知道如何练习。 我意识到思考设计的问题是我无法将一种设计移植到另一种设计中。一位教授提到Martin Fowler的着作“重构:改进现有代码的设计”,这一切都发挥了重要作用。