¿Es realmente necesario que un programador aprenda estructuras de datos y algoritmos?

En todos los campos de hoy en lo que respecta a la informática, tiene muchos problemas por venir. Uno de los principales problemas que encontramos todos los días, especialmente para aplicaciones grandes, es el problema del almacenamiento de datos.

Queremos almacenar los datos para poder recuperarlos de manera eficiente y también procesarlos a una velocidad muy rápida. Además, también queremos optimizar el uso de los recursos de la computadora. Este problema está ahí, no importa en qué campo te encuentres. Aquí es donde tenemos una gran variedad de estructuras de datos. Imagine que millones de registros se almacenan en su base de datos diariamente. No puede simplemente almacenarlos de manera desordenada, ya que en ese caso el procesamiento sería demasiado lento.

Imagine la diferencia entre O (n) y O (logn) cuando n son los millones de registros que tiene a su disposición. Ahora, este era el problema asociado con el almacenamiento y el procesamiento de datos y para manejarlo tenemos que aprender sobre las estructuras de datos. Ahora déjame llegar a la parte donde los algoritmos son necesarios. La mayoría de los problemas informáticos que encontramos tienen una cierta lógica en su núcleo. No importa en qué aplicación esté trabajando, necesita algoritmos para resolver el problema en cuestión.

  • Tenemos algoritmos de encriptación por razones de seguridad.
  • Algoritmos de compresión para optimizar el almacenamiento de datos.
  • Algoritmos de propósito general para resolver problemas ad hoc.
  • Algoritmos gráficos utilizados para resolver problemas relacionados con gráficos. El 90% de las veces podemos reestructurar nuestro problema como un problema gráfico y luego descubrir la solución se vuelve muy fácil. ¡Quién sabía que el problema “La programación de los exámenes de tal manera que se requieran espacios mínimos y que no haya exámenes superpuestos debería tener un estudiante común” podría resolverse fácilmente con Graph Coloring!

La lista es interminable mi amigo. Ya sabes, la línea de etiqueta para estructuras de datos y algoritmos debe ser

“Aprende todo” al igual que teníamos este famoso lema

No es 100% estrictamente hablando, pero estará muy limitado en la efectividad de los programas que realice. Te encontrarás escribiendo código, mirándolo al día siguiente y sin tener idea de lo que hace. Las estructuras de datos y los algoritmos proporcionan un excelente marco mental para pensar en problemas de software, por lo que definitivamente vale la pena su tiempo para aprender sobre ellos y pensar en ellos. Dicho esto, siempre he encontrado que el mejor enfoque para aprender cosas nuevas es comenzar a construir algo y aprender lo que necesita aprender en el camino. No te limites solo porque la gente te dice que “no sabes lo suficiente”. Puede que tengan razón, pero definitivamente aprenderá a medida que avanza, y probablemente lo motivará a comenzar a aprender sobre estructuras de datos y algoritmos, no porque “deba”, ¡sino porque querrá hacerlo!

Si quieres construir una casa, no puedes hacerla más grande o más alta hasta que hayas construido una base y pilares fuertes. Creo que puede codificar lo mismo en cualquier lenguaje de programación, pero no puede ser un buen programador si su base (Estructura de datos) y sus pilares (Algoritmos) no son lo suficientemente fuertes.

PD: ¡Haz de estas dos tus armas ~!

More Interesting

Dado un gráfico ponderado de N nodos, ¿existe un algoritmo que calcule la ruta más corta entre todos los nodos?

¿Por qué los conjuntos en Python tienen una complejidad algorítmica de O (1)?

Cómo escribir un algoritmo de diccionario en un programa en C

Cómo alterar el rango de un bucle for dentro del bucle en Python

¿Cómo se implementan las tablas hash en el kernel de Linux? ¿Cómo funcionan para diferentes tipos de datos y estructuras?

¿Cómo atravesar una matriz desde una posición dada vertical u horizontal o diagonalmente para encontrar un elemento en C ++? ¿Podría proporcionar un código de muestra?

¿Cuál es el algoritmo de aprendizaje automático requerido para el asistente virtual?

¿Cuál: Estructura de datos y pensamiento algorítmico con Python (Narasimha Karumanchi) o Estructuras de datos y algoritmos en Python (Michael T. Goodrich)?

Dado un gráfico no dirigido y dos conjuntos de nodos, ¿cuál es el mejor algoritmo para verificar que cada elemento del primer conjunto sea adyacente a cada elemento del segundo conjunto?

¿Habrá diferentes algoritmos para implementar la inserción y eliminación de una estructura de datos como b árboles?

¿El algoritmo de retroceso tiene que ver con la recursividad? Si no, ¿cuál es un ejemplo?

¿Debería un algoritmo de aprendizaje automático estar completo?

¿Por qué obtener más puntos de datos soluciona el problema de la alta variación en un algoritmo de aprendizaje automático?

¿Cuál es el significado de usar una cola prioritaria en el algoritmo de Dijkstra? ¿Qué diferencia hay si usamos una cola normal?

¿Cómo se explicaría a un lego el modelo computacional del juego de FIFA?