这些天来,我在数据结构和算法上投入了大量资金,并试图解决一些编程难题。
我正在尝试使用Java和Clojure进行编码和解决。
我在浪费时间吗?我是否应该在我已经知道的技术和框架上进行更多的投资,以便获得更深入的知识(内幕和外幕)并能够更快地使用它们进行编码?
通过研究数据结构和算法,我是否将成为一名更好的程序员,或者这些学科仅在大学期间才重要?
这些天来,我在数据结构和算法上投入了大量资金,并试图解决一些编程难题。
我正在尝试使用Java和Clojure进行编码和解决。
我在浪费时间吗?我是否应该在我已经知道的技术和框架上进行更多的投资,以便获得更深入的知识(内幕和外幕)并能够更快地使用它们进行编码?
通过研究数据结构和算法,我是否将成为一名更好的程序员,或者这些学科仅在大学期间才重要?
Answers:
只需花费很少的算法和数据结构知识,就可以将大部分/全部职业花费在重要的,有用的工作上。
为了成功使用算法和数据结构的最低知识要求,您需要:
有没有* 最大 *。如果您愿意,您可以将您的研究提高到博士学位或更高水平。它的有用性与您感兴趣的工作类型直接相关,并且与您觉得最有趣和有意义的工作类型直接相关。
就是说,作为粗略(但不是绝对)的准则,您正在使用的语言,框架和应用程序越底层,资源占用率和自动化程度越低,则所需的技能水平就越高算法和数据结构。例如,在汇编中实现Ukkonen的算法可能(但不一定)意味着您需要掌握有关算法和数据结构的硕士学位。
在您的特定情况下,从Java开发背景到从事iO,在其他所有条件相同的情况下,期望您对算法和数据结构的一般理解有更高的要求。您将希望能够在可用资源较少的设备上高效运行。另外,期望在您的军械库中添加几个新类别-最值得注意的是,您将希望了解有关内存管理的更多信息。
没事 如果您只是刚刚起步,那么尝试进入诸如UI编程之类的大图之类的东西,只会使您退缩。最终,您确实需要去那里,学习更大的框架...如何使用其他人编写的数据结构和算法。当您刚入门时,最好坚持有限范围的问题。
算法和数据结构基本上是一切的基础,即使您在初学者阶段也可能永远不会自己编写一个。了解它们,或者至少了解它们,最终将使您成为更好的开发人员。您将知道何时以及为什么使用每一个,因为您将知道它们的工作原理。另外,使您的算法和数据结构通用,使其可以与任何类型的接口X一起使用,这实际上是您在整个职业生涯中都会使用的东西。
我看到太多的人跳入Qt之类的问题,他们最终提出的问题表明对C ++的知识为零。他们试图跳过太多的步骤,最终需要更长的时间来学习。我会说你在正确的道路上。
我花了很多时间在OpenGL上用C / C ++编程。我非常了解这些语言和API ...由于这种经验,我已经成为一名合理的开发人员和程序员。也就是说,实际的算法解决我遇到的各种问题所需知识只是我真正能够掌握的。
从个人经验来看,如果您不了解与要构建的内容有关的问题域背后的理论,那么专注于构建应用程序将浪费您的时间。
对于许多不同类型的软件,这些领域将基于您从研究算法中学到的基础知识,以及它们自己基于特定细分市场的理论(例如,计算机图形学中的线性代数,密码学中的数字/信息论等)。
您不必一定要成为所有事物背后的计算天才,但要做这篇文章时您正在做的事情是一条非常非常必要的道路,至少可以减少一次编程之旅-无论是否他们不是自学成才。