尽管我觉得这个线程上的其他答案已经很好地涵盖了基础,但就回答一个相当“模糊”甚至“幼稚”的问题而言:我将添加另一个意见(有点太长了只是作为评论)。
我非常不同意一些帖子,这些帖子暗示了学习编程语言与学习口语或书面语言的类比。 SO 不是讨论语言理论及其与进化和认知结构的关系以及乔姆斯基和平克等人的工作的地方。 al.,这不仅表明了语言学习的“先天性”,而且还表明了“禀赋”(遗传,是的,甚至是“气质”)的变化,以及它与环境的动态相互作用,以及“发展的机会之窗”,其中学习可以以惊人的速度进行,对语素与音素能力的贡献不同,等等。
但是,请允许我提出一个假设,在很多方面,学习编程语言与学习口语和书面语言的类比更像是“包罗万象”这掩盖了复杂性,而不是有用的工具。
另一方面,我怀疑(假设)一个掌握了不止一种口语/书面语言的人确实已经发展了某些可能“有用的认知结构和技能” “在学习编程语言时。
在我看来,以上两段本质上并不矛盾。
恕我直言,编程一般也不与学习数学或几何学相提并论,后者从公理或基本假设将结构构建成有时可以“正式”证明或验证的复杂系统。当然,也有一些“稀有鸟类”是从 Knuth 或 Gamma 等开始的。人。和“设计模式”,并“努力工作”到“现实世界”:)
我的“投票”是从一本好书开始,正如 Mark Byers 所建议的,将其与实践相结合,测试自己,解决 Mark 提到的 Euler 项目中的问题,以及,是的,当然,正如马克建议的那样,研究其他人的代码。
不过,一开始的问题是,恕我直言:如何知道哪些代码适合学习。
对我来说,答案是:研究 Jesse Liberty 等非常好的书籍提供的代码示例,例如:"Programming C#" O'Reilly 的最新(第 3 版)。注意:我的理解是第四个。版本将于 2010 年 3 月到期。
恕我直言,Jesse 作为一名编程语言教师具有非凡的天赋,能够以娴熟的方式“加快”材料的引入速度,以正确的顺序选择和呈现正确的示例,并且在他的语言中具有非凡的清晰天赋技术写作。
CodeProject 文章是学习代码示例的绝佳资源。在您感兴趣的领域中寻找其他用户评价很高且专门针对 C# 的文章。
Liberty "C# 2005 : A Developers's Notebook" 的鲜为人知的书是一个极好的资源(恕我直言,它是任何技术领域中最引人入胜的平面设计和书籍结构方面的书籍之一)。这是一系列“练习”,我将其与音乐中的“练习曲”的概念进行比较:每个练习都展示了一个主题,挑战您理解该主题的一个很好的例子,每个主题确实对您有用“真实世界”的编程。
恕我直言,一旦你“脚踏实地”学习和实践 .NET 一百小时左右:飞,不要走路,通过曼宁发布的Jon Skeet's "C# in Depth" 达到“大师级” .恕我直言,他还是一位出色的技术作家,他与 Liberty 分享了选择性呈现材料的天赋,并且有他自己的特殊、独特的天赋,可以“走出书本直接与你交谈”,解决各种问题当您遇到更难的材料时,您可能正在考虑。需要说明的是,我觉得自己离掌握这本书的内容还有很长的路要走,这激起了我理解它的欲望。在 Skeet 的作品中,有一种机智和幽默的元素,根据我的经验,这在技术书籍中也是极为罕见的。
请注意:免责声明:虽然我曾担任 Addison-Wesley 的付费顾问,负责对两本主要的 .NET 书籍进行技术编辑,但我从未为 O'Reilly 或 Manning 工作过,也从未收到过他们的“comp”副本书(该死的:)。
我必须恭敬地不同意 Albahari 和 Albahari(也是 O'Reilly;我相信第 4 版现已出版:我只看过第 3 版)的“C# in a Nutshell”的建议:我认为对于 .NET 的新手来说,这将是一个非常不合适的工具。另一方面,当您开始学习 Linq 时:恕我直言,您会发现 Albahari's website 和 LinqPad 的免费版本是帮助您“进入”和探索 Linq 的最酷的事情。
祝你好运!