¿Es esencial aprender algoritmos para ser un verdadero programador? [cerrado]

21

Soy un programador de PHP, y hasta ahora no he necesitado aprender algoritmos ...

Ahora estoy empezando a aprender Python (un lenguaje de programación real), porque necesito usar matplotlib. ¿Tiene sentido comenzar leyendo un libro de algoritmos de Python y luego aprender matplotlib y numpy o debería saltar a matplotlib y numpy?

Atentamente,

André
fuente
2
Si no aprende algoritmos y comprende lo que es más apropiado para una tarea determinada, terminará con respuestas como las de esta pregunta: stackoverflow.com/questions/5498865
kdgregory
1
Probablemente ya haya implementado algunos algoritmos, sin saber realmente sus nombres o la teoría detrás de ellos. Es difícil creer que alguien pueda hacer una programación útil sin implementar algunos algoritmos.
tdammers
2
El algoritmo es solo un sentido común de cómo hacer las cosas de manera óptima . En la programación, debe usar los recursos mínimos y garantizar el rendimiento, por lo tanto, lo está usando todo el tiempo. Por cierto, ¿qué significa esto Python (un lenguaje de programación real)? PHP es tan bueno como cualquier otra cosa. Es solo que es más un lenguaje de scripting web y eso es lo mejor en los negocios por mucho tiempo.
Pankaj Upadhyay

Respuestas:

35

Absolutamente. Sin conocer los algoritmos, ¿de qué otra manera vas a entender cómo un programa hace lo que hace?

Es esencial comprender el desarrollo de algoritmos para que pueda programar de manera más eficiente y escribir mejores programas. Al comenzar, al menos debe conocer los conceptos básicos de conceptos como el flujo de control (tal vez a través del autómata de estado, pero eso no siempre es necesario) y la notación Big O y cómo puede afectar el rendimiento.

Andrew Arnold
fuente
Si bien estoy de acuerdo, ¿cuánto debería saber en la escala de pasar una introducción a algoritmos en un colegio comunitario local la segunda vez para ser Donald Knuth?
Trabajo
Buena notación de Big Ohno ...
1
Estoy de acuerdo con la importancia de conocer la complejidad del algoritmo ("notación O grande"). Sin embargo, estoy totalmente en desacuerdo con la respuesta "absolutamente" a "es esencial aprender algoritmos para ser un verdadero programador"; de hecho, aprender Python bien es mucho más útil que saber cómo ordenar una lista (ya que Python las ordena por ti) o cómo Python maneja los diccionarios (¿qué programador de Python alguna vez necesitó implementar un mecanismo de hash?), etc. Históricamente, las personas tienen aprendieron algoritmos porque su lenguaje no los proporcionó de fábrica; La era moderna es diferente.
Eric O Lebigot
17

La respuesta es ambas, si y no. No necesita conocer los detalles de cómo funcionan los diferentes algoritmos o la teoría detrás de ellos, ese es el trabajo de los informáticos, pero sí necesita conocer los conceptos básicos, como qué algoritmos están disponibles para resolver una tarea en particular y cuál es el mejor para una situación dada.

En su caso, simplemente puede comenzar a usar las bibliotecas que mencionó: fueron creadas por alguien solo para facilitar la vida de los demás. Ciertamente, no necesita conocer los algoritmos que se utilizaron para construirlo solo para usarlo.

casablanca
fuente
2
+1 para un comentario tan "moderno". Los algoritmos de aprendizaje y enseñanza deben reservarse para las personas que realmente necesitan implementarlos.
Eric O Lebigot
6

Sí, para que comprenda cómo aplicar un enfoque sobre otro. Tampoco desea "reinventar la rueda", ya que hay muchos algoritmos existentes que ya funcionan. Si no sabe que están ahí fuera, perderá tiempo inventando una solución potencialmente más débil y ni siquiera comprenderá por qué es más débil.

jmq
fuente
3

Algoritmos para un programador es un martillo para un herrero. Claro que puede pasar sin usar y usar alternativas para hacer el trabajo, pero si desea hacerlo bien y hacerlo bien, es esencial.

Lo bueno de los algoritmos es que es independiente del lenguaje de programación, así que aprende la teoría una vez y podrás implementarla en cualquier lenguaje. Aquí hay un buen sitio web que he estado construyendo para comenzar a aprender: www.ambesty.com Usan Java pero viene con un código de muestra para aprender. Ofrecen algoritmos simples de ADT y clasificación a los más complejos, como los algoritmos de compresión de datos. Muy interesante lectura. Buena suerte

ailan
fuente
1

Dependiendo de su experiencia PHP, si está en la etapa en la que puede adaptar los conceptos básicos de programación de un lenguaje a otro, hágalo . Esta sería la forma más eficiente de pasar su tiempo.

Lea lo que necesita hacer para integrar Matplotlib , numpy y Python. Y luego, si te quedas atascado, sigue buceando más profundo. Recomiendo este pedido porque

  • es menos lento
  • que probablemente no va a aplicar cada algoritmo que lee sobre
JK
fuente
1

Si está desarrollando aplicaciones comerciales (solo), aprenda los conceptos básicos solamente, como listas, colas, clasificación, búsqueda de cadenas, etc. para que aprenda la terminología, cómo se afecta y mide el rendimiento, etc. Un mejor uso de su tiempo sería enfocarse en nuevas tecnologías, patrones de OO, diseño efectivo de bases de datos, aplicación. metodologías de desarrollo, y tal!

Ninguna posibilidad
fuente
1

Ok, sé que esto no es exactamente lo que querías decir, pero ya sabes (cómo hacerlo) algoritmos. Dependiendo de su definición, puede tomar cada programa como ejemplo para un algoritmo.

Entonces no temas. Es útil conocer los algoritmos básicos, es más útil conocer las estructuras de datos básicas, pero es aún mejor conocer los "patrones" de diseño. Después de todo, los algoritmos básicos y las estructuras de datos se implementarán en el marco de su elección, pero los patrones probablemente no ...

Carsten
fuente
0

Aprenda Python primero y luego, si lo desea, puede estudiar algoritmos; Debido a que los algoritmos no son específicos de Python, son generales todos los idiomas.

eggie5
fuente
0

Antes de comenzar en la Universidad, creía que era un programador bastante decente, y tenía un par de años de experiencia laboral. Pero después de haber aprendido sobre algoritmos y estructuras de datos en la Universidad, ¡siento que es un conocimiento que debes tener! Es esencial para todo lo que haces. Aunque es posible que no use ese conocimiento directamente todos los días, seguirá estando en la cima de su cabeza y lo convertirá en un mejor programador.

Aprendes mucho sobre el rendimiento, y aunque el rendimiento generalmente no es el número uno, conocer los algoritmos te impedirá hacer cosas estúpidas, con un rendimiento realmente malo. Aunque el rendimiento no es el número uno, no hay ninguna razón para no usar ese conocimiento para tomar las decisiones correctas.

Niklas H
fuente