学习算法成为一名真正的程序员是否必不可少?[关闭]


21

我是一名PHP程序员,直到现在我还不需要学习算法。

现在,我开始学习Python(一种真正的编程语言),因为我需要使用matplotlib。从阅读Python算法书籍开始然后学习matplotlib和numpy是否有意义,还是我应该跳到matplotlib和numpy?

最好的祝福,


2
如果您不学习算法,并且了解什么是最适合给定任务的,则您将得到关于以下问题的
答案

1
您可能已经实现了一些算法,但实际上并不知道它们的名称或背后的理论。很难相信任何人都可以在不实现某些算法的情况下进行任何有用的编程。
tdammers 2011年

2
算法只是如何以最佳方式做事的常识。在编程中,您需要使用最少的资源并确保性能,因此您一直在使用它。顺便说一句,这意味着Python(一种真正的编程语言)是什么意思PHP和其他任何东西一样好。提醒您,它不仅仅是Web脚本语言,而且长期以来,它是企业中最好的。
Pankaj Upadhyay

Answers:


35

绝对。在不了解算法的情况下,您还将如何理解程序的工作方式?

了解算法开发至关重要,这样您才能更高效地编程并编写更好的程序。首先,您至少应该了解概念的基本知识,例如控制流(可能通过状态自动机,但这并不总是必要的),Big O表示法以及它如何影响性能。


我同意这一点,但在第二次成为Donald Knuth时,应该对本地社区大学的算法入门知识有多少了解?
工作

好的旧的大Ohno符号...

1
我同意了解算法复杂性(“大O表示法”)的重要性。但是,我强烈不同意“对学习算法成为真正的程序员是否必不可少”的“绝对”回答;实际上,学习Python比知道如何对列表进行排序(因为Python为您对列表进行排序)或Python如何处理字典(Python程序员曾经实现过一种哈希机制?)等等要有用得多。历史上,人们拥有学习的算法,因为它们是语言,并不是开箱即用的。现代时代是不同的。
Eric O Lebigot

17

答案是是和不是。您无需了解不同算法的工作原理或背后的理论的细节(这是计算机科学家的工作),但您确实需要了解基础知识,例如可用于解决特定任务的算法以及哪一种最适合给定的情况。

就您而言,您可以简单地开始使用您提到的库-它们是由某人构建的,目的只是使其他人的生活更轻松。您当然不需要仅仅为了使用它就知道构建它的算法。


2
为此类“现代”评论+1。学与教算法应留给确实需要实施的人使用。
Eric O Lebigot

6

是的,以便您了解如何将一种方法应用于另一种方法。您也不想“重新发明轮子”,因为已有许多现有算法在起作用。如果您不知道它们在那里,您将浪费时间来发明一个可能较弱的解决方案,甚至不知道为什么它较弱。


3

程序员的算法对铁匠来说是一锤子。当然,您可以没有工作,也可以使用替代方法来完成工作,但是如果您想做对并做好,这是必不可少的。

算法的优点是它独立于编程语言,因此一旦学习了该理论,就可以用任何一种语言来实现它。这是我一直在构建的一个很好的网站,可以从中开始学习:www.ambesty.com他们使用Java,但附带了示例代码以供学习。它们提供简单的ADT和排序算法,而提供诸如数据压缩算法之类的更复杂的算法。非常有趣的阅读。祝好运


1

根据您的PHP经验,如果您处于可以将基本编程概念从一种语言转换为另一种语言的阶段,请这样做。这将是花费时间的最有效方法。

阅读集成Matplotlib,numpy和Python所需的操作。然后,如果您被卡住,请继续深潜。我推荐此订单,因为

  • 节省时间
  • 可能不会应用您所阅读的所有算法

1

如果仅在开发业务应用程序,则仅学习基础知识,例如列表,队列,排序,字符串搜索等,以便学习术语,如何影响和评估性能等。更好地利用您的时间将重点放在新技术,OO模式,有效的数据库设计,应用程序上。开发方法等等!


1

好的-我知道这不完全是您的意思,但是您已经知道(怎么做)算法。根据您的定义,您可以将每个程序作为算法示例。

所以不要害怕。了解基本算法很有用,了解基本数据结构更有用,但是了解设计“模式”则更好。毕竟,基本算法和数据结构将在您选择的框架中实现,但是模式很可能不会...


0

首先学习python,然后,如果您愿意,可以学习算法;由于算法不是特定于python的-它们是所有语言的通用语言。


0

在我进入大学之前,我相信自己是一个相当不错的程序员,并且确实有几年的工作经验。但是,在大学学习了算法和数据结构之后,我觉得这是您必须具备的知识!这对您所做的一切至关重要。即使您可能不是每天都直接使用这些知识,它仍然是您的首要任务,它将使您成为一个更好的程序员。

您会学到很多有关性能的知识,即使性能通常不是第一位,知道算法也会阻止您做一些愚蠢的事情,而实际上性能很差。即使性能不是第一,也没有任何理由不使用该知识来做出正确的决定。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.