Algorithm 优先学习编程技巧和其他建议

Algorithm 优先学习编程技巧和其他建议,algorithm,design-patterns,data-structures,scala,Algorithm,Design Patterns,Data Structures,Scala,当我在软件开发(C++&C#)的职业生涯开始之际,我现在看到了我在这个领域的缺陷和我错过的东西。正因为如此,我得出了一些结论,并为自己制定了一个计划来填补这些空白,增加我在软件开发方面的知识。但是,我在做了一个我需要做的任务后偶然发现的问题对我来说并没有很明显的答案。这些任务的优先顺序是什么?以下是这些任务和我的编号优先级: 学习: 函数式编程(Scala) 数据结构和算法(Cormen book to the rescue+TopCoder/ProjectEuler/etc) 设计模式(GOF

当我在软件开发(C++&C#)的职业生涯开始之际,我现在看到了我在这个领域的缺陷和我错过的东西。正因为如此,我得出了一些结论,并为自己制定了一个计划来填补这些空白,增加我在软件开发方面的知识。但是,我在做了一个我需要做的任务后偶然发现的问题对我来说并没有很明显的答案。这些任务的优先顺序是什么?以下是这些任务和我的编号优先级:

学习:

  • 函数式编程(Scala)
  • 数据结构和算法(Cormen book to the rescue+TopCoder/ProjectEuler/etc)
  • 设计模式(GOF或头优先)

  • 你同意这个任务和优先事项吗?还是我错过了什么?欢迎提出任何建议

    完全取决于你在做什么


    我会根据您当前的工作需要,调整您首先学习的内容。

    无论您使用何种语言,数据结构和算法都会对您有所帮助。我会先做的。然后设计模式(任何OOP语言都会从中受益)。函数式编程很好,但不一定是最高优先级。

    如果你认为函数式编程的优先级较低,因为你使用的语言本质上是面向对象的,我认为花一些时间在设计模式和语言本身的细节上会更有用

    我同时阅读了GOF和HeadFirst,HeadFirst可能是2中更简单、更有趣的,但要厚得多。您可能应该看看企业设计模式,比如Martin Fowler的页面


    你认为你会在哪个领域工作?游戏?网状物这可能决定了算法部分的重要性。

    我想说,您首先需要了解(即使不记得)基本算法和数据结构。(使用Knuth和Cormen),然后开始学习架构(这里是设计模式)。。
    函数式编程只是编程的一种类型,是强制性的。有许多伟大的程序员不使用函数式编程,但我认为对于所有类型的编程,您必须首先了解基础知识-算法和数据结构。

    编写大量代码。每次都试着做得更好。偶尔与更资深的人一起工作,他们可以提供指导、表扬和温和的纠正。

    我认为#2优先,特别是如果你计划在工作中使用C++/C#,熟练掌握数据结构和算法会给你一些优势。我认为#1和#3是一些平行的路径,但我确实有一些建议:从模式的第一本书开始,GOF更像是一本参考书,而且符号和语言可能会变得相当深奥。至于函数式编程,我可以推荐Clojure而不是Scala吗?我相信“功能优先”语言(如F#或Clojure)会迫使你思考功能(一件好事),而不是仅仅修补你的O-O/命令式技能。

    我认为你的想法是相反的。从设计模式开始,它将帮助您减少产生的混乱代码量,并理解其他人编写的更好的代码(特别是考虑到设计模式编写的库)

    除此之外,还有许多其他的设计模式书籍,例如。在你打好基础之后,也许值得一看。但我也强烈推荐,我认为这给了你一种思考如何构建程序的方式,而不仅仅是在这里和那里识别片段

    接下来,您可以使用算法。我更喜欢它,它的重点是让人们知道如何选择和使用算法,以及从众所周知的“部分”构建算法,而不是让人们知道如何证明算法。它也适用于Kindle,这对我很有用

    另外,要有一本好的数据结构书——人们经常忽略这一点。我喜欢这本书,不过我也在研究

    但是,我不能推荐TopCoder或Euler来完成此任务。imho,主要是关于快速编写代码。这没什么不好的,但它几乎不可能对日常事务产生影响。如果你喜欢,一定要去做。此外,这也是为和更具技术头脑的公司进行面试做的极好的准备

    另一方面,它更侧重于科学计算、计算机科学和函数式编程。在学习函数式编程时,这将是一个极好的培训场所

    有些东西有一些设计模式、算法和函数编程,这就是。它以C++为例,对你来说是个不错的例子。 至于函数式编程,我认为它没有其他两个那么紧迫。但是,我表示Clojure或Haskell,而不是Scala

    在Scala学习函数式编程就像在拉美裔社区学习西班牙语,而在Clojure学习函数式编程就像在马德里学习西班牙语,在Haskell学习函数式编程就像在西班牙一个与世隔绝的修道院学习西班牙语。:-)

    请注意,我更喜欢Scala作为一种编程语言,但当我开始使用它时,我已经知道FP

    当您真正开始函数式编程时,请获取函数式编程的算法和数据结构的良好基础


    除此之外,每年尝试学习一门新语言。即使不是因为语言本身,你也更有可能跟上人们现在所做的事情。

    我认为,总的来说,你选择的主题非常重要,我的演讲让你有机会做一些比平常无聊的事情更多的事情。但是,我认为顺序应该是这样的:

  • 数据结构与算法
  • 函数式编程
  • 软件设计
  • 您需要的特定技术
  • 我的观点是算法和数据结构应该是第一位的。研究alg是非常困难的