paint-brush
10 libros de estructura de datos y algoritmos que todo programador debería leerpor@javinpaul
228,259 lecturas
228,259 lecturas

10 libros de estructura de datos y algoritmos que todo programador debería leer

por Javin Paul2019/06/20
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

Los algoritmos son independientes del lenguaje y cualquier programador que se precie debería poder convertirlos en código en el lenguaje de programación de su elección. Desafortunadamente, me he encontrado con varios programadores que son <em>MUY</em> buenos en lenguajes de programación como <a href="http://www.java67.com/2018/08/top-10-free-java-courses-for-beginners-experienced-developers.html">Java</a> o <a href="https://javarevisited.blogspot.com/2018/12/10-free-python-courses-for-programmers.html">Python</a> , que conocen detalles menores de API y las complejidades del lenguaje, pero tienen un conocimiento muy pobre de los algoritmos fundamentales y la estructura de datos.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - 10 libros de estructura de datos y algoritmos que todo programador debería leer
Javin Paul HackerNoon profile picture

Una colección de increíbles libros de algoritmos que deberían encontrar un lugar en el libro de cada programador. Incluye libros específicos del idioma en Java, Python y JavaScript para facilitar el aprendizaje.

Los algoritmos son independientes del lenguaje y cualquier programador que se precie debería poder convertirlos en código en el lenguaje de programación de su elección. Desafortunadamente, me he encontrado con varios programadores que son MUY buenos en lenguajes de programación como Java o Python , que conocen detalles menores de API y las complejidades del lenguaje, pero tienen un conocimiento muy pobre de los algoritmos fundamentales y la estructura de datos.

Solo pídales que implementen cualquier algoritmo de clasificación popular como clasificación rápida o clasificación combinada y se desmoronarán. Si espera que conozcan algoritmos más avanzados y complejos como algoritmos de cadenas, algoritmos de gráficos, algoritmos transversales de árboles o algoritmos codiciosos, prepárese para consultar Entrevistas, de lo contrario, podría terminar con algunas sorpresas.

Una vez, me encontré con un muy buen candidato para un rol de desarrollador sénior principal de Java, era excelente en Java, subprocesos múltiples, pero su estructura de datos y su habilidad con los algoritmos eran realmente pobres para su experiencia y calibre.

Cuando le pregunté, ¿por qué no pasó tiempo puliendo su algoritmo y su habilidad para resolver problemas antes de venir a la entrevista? Su excusa fue que “esos algoritmos son solo para entrevistas y nunca se usan realmente en la codificación práctica. Nunca los he usado en mis 6 años de carrera de desarrollo de Java” .

Tenía algo de razón, no necesita implementar una tabla hash en Java, siempre puede usar la clase HashMap o el Diccionario en Python para ese sentido, pero no reconoció el algoritmo de mejora a más largo plazo y la estructura de datos para mejorar la programación . habilidad

Los algoritmos son herramientas para desarrollar habilidades de resolución de programación y sentido de codificación, que se requieren para convertir un requisito del usuario en la línea de código, también conocida como programa de computadora.

También están por todas partes, si usas Facebook, ¿alguna vez has pensado en cómo encuentran a tus amigos tan fácilmente? ¿O cómo recomienda Netflix la película que quieres ver? Esos son solo un par de ejemplos de algoritmos de aprendizaje automático , que están llevando los algoritmos a otro nivel.

10 libros de algoritmos: lectura obligatoria para desarrolladores

Otro consejo de oro para aquellos que piensan que los algoritmos son estructuras de datos son para aquellos que quieren trabajar en Amazon , Google , Facebook, Intel o Microsoft , recuerden que es la única habilidad que es atemporal, por supuesto, aparte deUNIX , SQL y C. .

Los lenguajes de programación van y vienen, pero el núcleo de la programación, que es el algoritmo y la estructura de datos, sigue siendo el mismo.

Si sabe cómo funciona una tabla hash, puede usar su implementación en cualquier lenguaje de programación como HashMap de JDK, Dictionary in Python o HashMap de la biblioteca boost de C++ .

Entonces, si te tomas en serio la programación y te das cuenta ahora de que los algoritmos y la estructura de datos no son opcionales, estos son algunos de los mejores libros para aprender algoritmos.

Es posible que algunos de ustedes ya los hayan leído antes, pero vale la pena volver a leerlos.


1. Introducción a los algoritmos por Thomas H. Corman Este es uno de los libros de algoritmos más populares, pero tenga en cuenta que contiene una gran dosis de teoría. La edición actual de este libro es la 3.ª edición y sugiero encarecidamente que todo programador tenga esto en su estantería, pero solo para lecturas cortas y referencias.

No es posible terminar este libro de una sola vez y a algunos de ustedes también les puede resultar difícil leerlo, pero no se preocupen, pueden combinar su aprendizaje con un curso en línea como Estructuras de datos y algoritmos: Inmersión profunda usando Java junto con este libro.

Estructuras de datos y algoritmos: inmersión profunda usando Java

Esto es como lo mejor de ambos mundos, aprende algoritmo básico rápidamente en un curso en línea y luego consolida ese conocimiento leyendo el libro, lo que tendría más sentido para usted ahora que ya ha realizado un curso.

Otra razón por la que recomiendo este libro como uno de los primeros libros sobre algoritmos debido a su lenguaje agnóstico y acompañado de conferencias aquí .


2. Algorithms de Robert Sedgewick y Kevin Wayne Este fue mi recurso preferido sobre algoritmos durante mucho tiempo, todavía lo es, pero ahora lo veo con menos frecuencia que antes. Aprenderá muchos antecedentes sobre el algoritmo y, en la actualidad, incluso hay versiones específicas de este libro disponibles para diferentes lenguajes de programación como Java y C++ .

También hay un par de cursos gratuitos en línea de Coursera para este libro, Algorithms Part 1 y Algorithms Part 2 , que complementan muy bien este libro. Es excelente. También es mi principal recomendación para los programadores de Java para aprender algoritmos.

Algoritmos, Parte II | Coursera

Mientras que en Coursera, también tiene algunas de las mejores colecciones de cursos de estructura de datos y algoritmos que cubren cada tema importante. Están agrupados como Coursera Specialization on Algorithms . Si está interesado en aprender algoritmos en profundidad, ese es el lugar que le sugiero que vaya.

Lo crea o no, pero si ya conoce un lenguaje de programación, ver un ejemplo de un algoritmo en ese lenguaje de programación en lugar de otros también reduce la curva de aprendizaje. También puede leer la cuarta edición de este libro en línea de forma gratuita aquí


3. El manual de diseño de algoritmos por Steve S. Skiena. Este es otro libro excelente sobre algoritmos informáticos que también repasa una tonelada de algoritmos con mucho código. Lo que más me gusta del libro es que en realidad da ejemplos de dónde usó los algoritmos (o variaciones de los mismos) en la práctica; realmente te ayuda a ver la(s) clase(s) de problemas para los que se puede usar un algoritmo particular (o familia de algoritmos).

El código está en C, pero no es muy esotérico y es fácil de seguir. También había estado fuera de la escuela por un tiempo y esto me ayudó a ponerme al día con bastante rapidez en una serie de algoritmos gráficos . Tengo este libro desde hace casi 10 años y todavía lo miro de vez en cuando.


4. Algoritmo para entrevistas Algoritmo para entrevista de Adnan Aziz es un libro de lectura obligatoria sobre algoritmos, escrito en términos de tener en cuenta la programación de entrevistas .

La portada en sí muestra lo interesante que podría ser el libro si miras de cerca, la imagen de la portada está dibujada con miniaturas de personas famosas, y el libro explica cómo puedes desarrollar dichos algoritmos. Interesante, ¿no?

Bueno, me gusta este libro por su enfoque y objetivo, a veces aprender lo mismo con diferente objeto ayuda a entenderlo mejor.


5. Algoritmo en pocas palabras Algoritmos de O'Reilly, en pocas palabras, es un libro muy bueno para aprender algoritmos de programación, especialmente para programadores de Java. Describe los algoritmos centrándose en implementarlos y sin las matemáticas pesadas utilizadas en los libros clásicos sobre algoritmos.

Todos los algoritmos se presentan en forma de patrón, con una motivación para usarlos, imágenes y pseudocódigo que brindan una descripción general de alto nivel y código de trabajo (en C , C ++ , Java y Ruby ).

También tienen puntos de referencia para proporcionar pruebas del rendimiento teórico de los algoritmos. En resumen, uno de los mejores libros para aprender algoritmos para programadores.


6. Diseño de algoritmos por Kleinberg & Tardos Este es en realidad el segundo mejor libro sobre algoritmos después de Introducción a los algoritmos de Thomas Cormon. No es realmente una introducción a los algoritmos y es más adecuado para programadores experimentados.

Se trata más del diseño de algoritmos para desarrolladores familiarizados con los algoritmos básicos. Debe comenzar con el libro Introducción al algoritmo o Algorithms de Robert Sedgewick y luego continuar con este libro.

Por cierto, si lo desea, también puede combinar su aprendizaje con un curso en línea como Algoritmos y estructuras de datos: partes 1 y 2 en Pluralsight . Es un buen curso para familiarizarse con los algoritmos esenciales y la estructura de datos antes de pasar al tema del diseño de algoritmos.


7. Introducción a los algoritmos: un enfoque creativo Introducción a los algoritmos: un enfoque creativo Por Udi Manber es otro gran libro para el autoaprendizaje, ya que está lleno de cientos de problemas y ejemplos.

Está diseñado para mejorar las habilidades de resolución de problemas del candidato y la comprensión de los principios detrás del diseño de algoritmos, lo que lo ayudará a desarrollar sus habilidades de codificación y resolución de problemas .


8. El diseño y análisis de algoritmos Este es otro gran cocinero de algoritmos informáticos y merece un lugar en el anaquel de los programadores. Una vez que haya pasado por la Especialización en algoritmos de Coursera y uno de los libros de introducción, puede leer este libro para estudiar temas avanzados en algoritmos.


9. Estructuras de datos y algoritmos. Aho, Ullman & Hopcroft Otro buen libro de introducción sobre algoritmos y estructuras de datos. Un libro hermoso y claro y cualquier programador al que no le guste el uso intensivo de las Matemáticas en el algoritmo apreciará este libro.

Por cierto, si encuentra este libro difícil de leer, que es de lo que se quejan algunos de mis lectores, también puede echar un vistazo a Grokking Algorithms de Aditya Bhargava, uno de los libros más fáciles e interesantes sobre algoritmos para principiantes.


10. Algoritmos de Python: dominio de los algoritmos básicos en el lenguaje Python Este libro está diseñado para programadores de Python. Magnus Lie Hetland también es el autor de uno de los populares libros de introducción a Python, Beginning Python .

Como he dicho, los algoritmos son independientes del lenguaje, aprender el algoritmo de Python no significa que no puedas implementarlos en Java o C++ , pero si ya conoces Python , este es el gran libro para aprender algoritmos informáticos.

Este libro también se enfoca mucho en los algoritmos gráficos , que es muy útil para resolver problemas del mundo real.


11. Algoritmos de Groking Este es el libro que no formaba parte de la serie original cuando publiqué este artículo en mi blog, pero después de leerlo, debería incluirlo en la lista debido a su simplicidad. Es uno de los mejores libros que he leído sobre algoritmos , particularmente desde el punto de vista de los principiantes.

Utiliza ejemplos modernos como cómo Facebook habría almacenado un nombre de usuario para que pueda buscarlo fácilmente al iniciar sesión. Estos ejemplos resuenan mejor con los principiantes y los ayudan a comprender el concepto de por qué una matriz es una mejor opción que una lista vinculada para la búsqueda.

Los antecedentes de Aditya en bellas artes también hacen de este libro un recurso de aprendizaje visual. Encontrará tantos diagramas interesantes y directos en este libro que le ayudarán a aprender el concepto mejor y más rápido.

Aquí hay un buen diagrama que compara este libro con otros libros de algoritmos mencionados en esta lista:

En resumen, uno de los mejores libros de algoritmos para cualquier programador principiante . No cubre toda la estructura de datos y los algoritmos, pero lo que sea que cubra, los explica bien.

Eso es todo sobre 10 libros de algoritmos que todo programador debería leer . Estoy de acuerdo en que los algoritmos son un tema complejo y no es fácil entenderlos en una sola lectura, en ese caso, sugiero leer el mismo libro dos veces.

Además, solo leer no es suficiente, intente implementarlos en un lenguaje de programación que le guste. No está de más escribir su propia implementación ArrayList, HashMap o Map basada en árboles.

El efecto del aprendizaje del algoritmo no es visible de inmediato, pero con el tiempo notará una mejora sutil en su forma de pensar, la creación de soluciones y la calidad del código.

Por cierto, si está interesado en un curso en línea sobre algoritmos, le sugiero que consulte Estructuras de datos y algoritmos: Inmersión profunda usando Java en Udemy. No es un curso gratuito, pero puede comprarlo por poco menos de $ 10 a $ 15 en varias de las ventas flash de Udemy, lo que ocurre cada pocos días.

Otros artículos sobre estructuras de datos y algoritmos que te pueden gustar

Gracias por leer este artículo. Si le gusta esta lista de libros, también disfrutará de mi colección de 10 libros que todo programador debería leer , que es una lista de libros sobre programación, codificación, técnicas de desarrollo de software y mejores prácticas, computadoras, programación como profesión y experiencia de algunos de los grandes programadores/codificadores/desarrolladores de los últimos 50 años.

Por fin, hay dos tipos de programadores, uno que entiende el algoritmo y otro que no.

PD: si prefiere los cursos en línea en lugar de los libros o si desea aprender tanto de los libros como de los cursos en línea, también puede consultar mi lista de los 5 mejores cursos en línea para aprender estructuras de datos y algoritmos . Incluye cursos sobre Java, Python y JavaScript para facilitar el aprendizaje.

<a href="https://medium.com/media/3c851dac986ab6dbb2d1aaa91205a8eb/href">https://medium.com/media/3c851dac986ab6dbb2d1aaa91205a8eb/href</a>