Soy un novato en programación. Sigo escuchando sobre Introducción a los algoritmos, ¿debería leerlo?

No creo que sea el tipo de libro que la mayoría de la gente podría simplemente sentarse y leer por su cuenta. Es denso No en un sentido peyorativo, sino en un sentido muy literal: el libro saturará tu cerebro y te frustrará cuando hayas agotado tu conocimiento previo y tu capacidad intelectual en un concepto que sientes que deberías “simplemente entender” pero no lo hagas. t.

No tenía un título universitario de CS, pero era un desarrollador bastante bueno (joven y arrogante también) cuando aprendí CLR, y realmente me hizo cuestionar mi elección de carrera. Afortunadamente, volví a la escuela en ese momento, y poder resolver los problemas en un grupo realmente ayudó. El material no se había vuelto más fácil. Sin embargo, se había convertido en un desafío en lugar de frustrante, lo que generó confianza, lo que en poco tiempo hizo que la teoría fuera realmente agradable (no tanto la final, desafortunadamente).

Entonces, mi consejo sería ver si puedes encontrar algunas personas para un grupo de estudio, y si no, no te preocupes. Como era de esperar, hay una buena sugerencia en este hilo para una lectura alternativa, así que échale un vistazo. También le dará tiempo para comenzar a intuir muchos de los conceptos fundamentales, por lo que cuando se encuentre en el entorno adecuado, se sentirá mucho más cómodo. Pero sí, en algún momento querrás leer el libro, quizás no de principio a fin, no es una novela, pero es una pena pasar por alto uno de los textos fundamentales en el campo.

Computer Science Books @ Amazon.com

Escrito por los mejores investigadores, este texto combina teoría y práctica. Cubre los temas modernos de algoritmos paralelos, concurrencia y recurrencia. Una colaboración de McGraw-Hill / MIT Press, el texto está diseñado tanto para el instructor como para el alumno. Ofrece una organización flexible con capítulos independientes y proporciona una introducción al análisis matemático necesario. Introducción a los algoritmos contiene secciones que introducen suavemente técnicas matemáticas para estudiantes que pueden necesitar ayuda. Este material lleva a los estudiantes a un nivel elemental de sofisticación matemática y los eleva a un nivel que les permite resolver problemas algorítmicos. Se incluyen ejercicios simples y fáciles de hacer, así como problemas más pensados, paso a paso, generados por casos. El libro presenta notación analítica estándar e incluye pseudocódigo recortado y fácil de leer.

Computer Science Books @ Amazon.com

Honestamente, si te estás metiendo en la programación, no compres un solo libro.

La mayor parte de la información se puede obtener haciendo una simple búsqueda en Google. Si realmente necesita una sesión más estructurada, recomendaría ir a uno de los sitios de clasificación (topcoder, etc.) y tratar de descubrir sus algoritmos / soluciones.

Aún mejor, ¿EN QUÉ ESTÁS INTERESADO? Responda esa pregunta, encuentre una solución a ese problema e impleméntelo. La mejor manera de aprender a programar.

Una vez que tenga eso, comience a buscar en Google algunos libros de interés específico y, si realmente lo desea, cómprelos.

Comprar libros sobre programación no es la mejor solución hasta que realmente sepas qué tipo de programación quieres hacer. En realidad, hay algunas escuelas de la liga de hiedra que tienen lecciones de programación gratuitas (¿Stanford? De nuevo, Google)

Una vez que reduce su campo (IA, bioinformática, discreto, etc.), es más productivo encontrar revistas (por las que pagará un crapton) y libros específicos para guiarlo.

Hay una cierta distinción entre ser un novato en programación y un novato en algoritmos. Supongo que eres un novato en ambos. Introducción a los algoritmos está dirigido a personas que son novatas en algoritmos, pero no necesariamente novatas en programación. Le sugiero que se familiarice con un lenguaje de programación de procedimientos popular (Java / C ++ / Python), con tipos de datos, si las condiciones, while y para bucles, y estructuras de datos básicas como matrices / listas vinculadas / conjuntos / mapas / árboles, junto con alguna programación orientada a objetos primero. Después de esto, puede profundizar en el libro con confianza.

Creo que primero sería útil comprender qué algoritmos son.

Aquí hay una definición:

Un algoritmo se define como un procedimiento que describe cómo realizar una tarea específica en un número finito de pasos bien definidos.

Un algoritmo no es lo mismo que un programa. Un programa está escrito en algún lenguaje de programación particular. Un algoritmo es más parecido a la idea detrás del programa, pero es la idea de los pasos que el programa tomará para realizar su tarea, no solo la idea de la tarea en sí. Los pasos del algoritmo no tienen que completarse con todo detalle, siempre que los pasos no sean ambiguos y esté claro que la ejecución de los pasos llevará a cabo la tarea asignada.

Al final, los algoritmos deberían ser uno de los “procesos” al crear un programa / aplicación / sistema.

No, comience con la construcción de algo, probablemente ya tenga un objetivo específico en mente. Un sitio web, una aplicación, un script o lo que sea. Ese es tu bebe. A medida que te encuentres con problemas, investiga cómo resolver esos problemas específicos. A lo largo del camino, aprenderá sobre mapas, matrices, etc. y el conocimiento tendrá algo a lo que adherirse a medida que lo aplique.

Mientras escribe el código, piense en la eficiencia. Lo harás mejor, más fuerte, más rápido a través de horas de retoques. Eso es un aprendizaje práctico y le dará un poco de contexto para _por qué_ los algoritmos son geniales.

Algoritmos no es algo que tendrá que usar / tratar en sus días de novato. Sin embargo, puede desactivar la programación, ya que no es muy divertido, es un poco abstracto y muy complicado (a primera vista).

Le sugiero que se desarrolle por diversión, vea resultados inmediatos que lo animarán y lo motivarán a continuar, y luego, en 6-12 meses, comience a aprender cosas más avanzadas y difíciles. Nunca debes dejar de aprender.

Las universidades cometen un gran error al rechazar a tantas personas al introducir campos conceptuales abstractos y nada divertidos como Ciencias de la Computación, Matemáticas, etc., cosas que al principio no puedes encontrar una forma de usar en la práctica (al principio). que inicialmente involucrar a los estudiantes con algo divertido al producir resultados físicos inmediatos y tangibles al permitir que los estudiantes programen y vean su código en acción.

Introducción al algoritmo es un curso avanzado en programación. En primer lugar, debe aprender los conceptos básicos de la programación, es decir, la resolución de problemas, algoritmos simples como aritmética, bucles, condiciones, archivo, luego avanzar hacia la programación estructurada, luego orientada a objetos. Después de orientado a objetos, debe moverse hacia las estructuras de datos y, en paralelo, debe aprender el análisis del algoritmo.

Soy uno de los autores de Introducción a los algoritmos. Puede ser un poco demasiado para un verdadero novato. A menudo recomiendo otro libro que he escrito, Algorithms Unlocked , que está diseñado para personas con experiencia mínima (o incluso sin) de programación. Es posible que desee intentar ver (o leer) Algoritmos desbloqueados .

Creo que es la biblia de facto para gente de programación competitiva o gente a la que le gusta la programación competitiva. Esto se debe a que el buen conocimiento de los algoritmos es una de las herramientas esenciales de la programación competitiva.

También noté que hay un gran número de personas en Quora que están en este grupo. De ahí la popularidad de este libro y su autor en Quora.

Ciertamente siento que ” Introducción a los algoritmos” es el mejor recurso disponible para el algoritmo de aprendizaje. Pero como programador, me importa la complejidad aproximada de mi solución y nunca tuve que hacer la prueba matemática de por qué mi solución es muy eficiente. En ese sentido, creo que el manual de diseño de algoritmos es un mejor recurso para los programadores.

Hay muchos sitios web donde podemos practicar la programación y resolver los problemas. Pero para hacerlo de manera eficiente, los programadores necesitan algunos conocimientos sobre algoritmos básicos. Si está interesado en aprender más sobre las complejidades y cómo se calculan, definitivamente compraría ” Introducción a los algoritmos” .

Manual de diseño del algoritmo: Steven S Skiena: 9781849967204: Amazon.com: Libros

Ciertamente no voy a discutir con la recomendación de Thomas Cormen: D, pero por mi dinero, el mejor libro de algo que he leído es Data Structures for Game Programmers de Ron Penton. Si la memoria funciona, soy demasiado vago para revisar la hoja de cálculo en este momento, es el único libro de no ficción que le he dado cinco estrellas. (Cinco estrellas en mi escala significan “este libro cambió mi vida, o me hizo mirar el mundo de una manera nueva”. Alrededor del 2% de los libros que leo tiene cinco estrellas.) No hace falta decir que el libro se concentra en estructuras, pero tienes que vincular esas estructuras con algo para que los programas de ejemplo funcionen … y aprendí más de las cosas que Penton estaba tirando rápidamente de lo que tengo en algunos libros completos dedicados a Algo. Ron Penton se mece con fuerza.

¿Por qué deberías leer y ENTENDER sobre algoritmos?

   Tipo de inserción (N ^ 2)                 Ordenar fusión (N * log N)
Computadora   10 ^ 3 10 ^ 6 10 ^ 9 10 ^ 3 10 ^ 6 10 ^ 9
Inicio instantáneo 2.8 H 317 años instantáneo 1 seg 18 min
Super instantáneo 1 seg 1 semana instantáneo instantáneo instantáneo

Línea de fondo. Los buenos algoritmos son mejores que las supercomputadoras.

No. No leas un libro ni hagas nada solo porque sea bueno. Porque “bueno” es un término corto para “bueno, para un objetivo particular, para un público en particular”. Descubra su fuerza, debilidad, objetivo y recursos y limitaciones disponibles (tiempo, oportunidades de práctica, trabajos, etc.), luego elija un libro.

Depende de qué tipo de desarrollador quieras ser. Si elige programar para la aplicación web, los algoritmos no son tan importantes como la arquitectura y los marcos. Si desea ser un desarrollador de sistemas, debe saber algo sobre algoritmos, por ejemplo, la ordenación rápida es mejor gracias a la ordenación de burbujas en el caso general, pero no necesita saber cómo implementar un algoritmo de ordenación en detalle. Si está dispuesto a ser un desarrollador que trabaja para provicer de motores de búsqueda (al igual que Google) o una compañía de inteligencia artificial (por ejemplo, programación para un robot), el algoritmo es muy muy importante. No solo se requiere que conozca las concepciones básicas sobre los diferentes algoritmos, sino que también necesita conocer la implementación de esos algoritmos. Debe saber cuándo usar cierto algoritmo es correcto, y se supone que debe modificar el algoritmo para que funcione de manera adecuada. No es fácil ser un programador de algoritmos, a quien se le paga mucho. Y la elección es tuya.

El algoritmo es el corazón y la belleza de la programación, sin ella la programación no tiene valor. Entonces, lea si encuentra algún libro sobre algoritmos, pero según yo, se desarrolla eventualmente a medida que aprende a programar, practica cada vez más y trata de encontrar otro estilo de respuesta a un programa en lugar de la respuesta disponible.

Introducción a los algoritmos (por Cormen, Leiserson, Rivest, Stein), es un libro excelente y desafiante; Una lectura esencial para los informáticos, pero no necesariamente para los programadores.

Incluso si quieres ser un científico de la computación, no recomendaría simplemente recogerlo y leerlo. Leí partes de él durante un curso universitario de 4º año, y este fue un caso en el que la guía del profesor me pareció muy útil; Hubiera sido difícil de entender solo trabajando el libro por mi cuenta, como solía hacer con otros cursos.

No comenzaría con algoritmos, en absoluto. Pero, más bien, concéntrese en las construcciones y abstracciones utilizadas en los lenguajes formales para manifestar sus ideas y soluciones. Como tal, términos como semántica , alcance , variable y cierre son mucho más importantes para comenzar que los algoritmos.

Si. Comprender los algoritmos es extremadamente importante para una buena programación, pero si eres un novato, entonces quizás quieras comenzar con algo más simple como “Introducción a la programación en Java, un enfoque interdisciplinario”. Entra un poco en algoritmos básicos y podría servir como punto de partida.

Empecé a leer esos libros amables cuando tenía 9 años. ¿Y tantas veces pensé que eran necesarias o no? Pero son como la tabla de multiplicar, puedes encontrar tu camino, pero si aprendes más conocimiento, puedes aislar y abstraer mejor. Si piensas que es como el baloncesto, puedes mirar, puedes probar, puedes hacer entrenamientos para aprender o puedes encontrar un libro para aprender todas las reglas. La mayoría de los libros no cuentan conjeturas, el autor escribe las mejores formas y es la forma más común de aprender a desarrollar