Me topé con esta cita de Bill Gates: "Definitivamente deberías enviarme un currículum si puedes leer todo". Estaba hablando de los libros de El arte de la programación . Así que tenía mucha curiosidad y quiero leerlo todo. Pero, sinceramente, no lo entiendo.
Realmente no soy tan intelectual. Esta debería ser la razón por la que no puedo entenderlo, pero estoy ansioso por aprender. Actualmente estoy leyendo el Volumen 1 sobre algoritmos fundamentales. ¿Hay algún libro que sea amigable para los principiantes / personas lentas como yo, que pueda ayudar a desarrollar mi conocimiento para que pueda leer el libro de Knuth con facilidad en el futuro?
algorithms
books
taocp
Rho
fuente
fuente
Respuestas:
Incluso creo que el libro de Knuth es un poco avanzado y difícil de entender. Esos libros son definitivamente para algoritmos de nivel de investigación en mi humilde opinión.
La introducción a los algoritmos por CLRS es mucho más simple.
EDITAR :
Aún así, si quieres leer el libro de Knuth, primero debes ir a través de Concrete Mathematics . Knuth quiere que sus alumnos sean conscientes de la parte matemática básica del análisis de algoritmos.
fuente
Asegúrese de leer toda la cita de Gates, incluida esta:
No son libros fáciles y no están destinados a serlo. Recuerde que uno de los objetivos de Knuth era aportar rigor matemático a la informática . Eso es genial si quieres probar algo sobre un algoritmo, pero no tan bueno si solo quieres saber cómo funciona.
Michael Dorfman tiene algunos buenos consejos para leer los libros en su respuesta a la pregunta (ahora eliminada) en Stackoverflow sobre ¿Qué puedo obtener al leer el lote? . Si no tiene 10k rep, aún puede ver la pregunta y su respuesta en la máquina de retroceso .
Para otros recursos, he descubierto que es útil explorar los programas de estudios de las escuelas de informática bien consideradas. Por ejemplo, libros de texto para clases de algoritmos iniciales:
fuente
Knuth es el autor de informática más venerado, citado, comentado y respetado de la historia. Sus libros adornan las estanterías de todos los desarrolladores de software serios, y se los menciona con el mismo nivel de respeto que las personas le dan a la Biblia y al Arte de la Guerra.
Incluso he escuchado que algunas personas han leído partes de los libros de Knuth.
La mayoría de la gente solo tiene la intención .
Personalmente, los estoy guardando para mi jubilación
fuente
Los libros de Knuth cambiaron el campo de los algoritmos para siempre. Él mismo ha dicho que '2 páginas en mi libro es el trabajo profesional completo de alguien' y que sus libros eran difíciles de leer. El libro contiene material condensado de años de trabajo en informática.
No debes sentirte mal si no puedes entenderlo.
Como dijo Prasoon, CLRS es un libro más simple de leer.
También tiene Algoritmos de Rajasekaran, Sahni et al, que es fácil de entender.
fuente
Cuando me gradué, recogí los primeros tres volúmenes de TAOCP como un regalo de graduación y traté de leerlos directamente. Nunca lo logré. En estos días he superado quizás 1/3 de los primeros tres volúmenes (pensado sin ningún orden en particular). El material es definitivamente denso, pero he aprendido tres consejos que me ayudaron mucho.
Primero, no intentes leer de principio a fin. TAOCP es realmente un trabajo de referencia tanto como cualquier otra cosa, y he descubierto que es mejor leer una sección cuando es relevante para un problema que está tratando de resolver. Como muchas cosas en el mundo, comprender las soluciones es mucho más fácil una vez que ha encontrado los problemas que intentan resolver.
A continuación, ese diagrama de flujo en el frente del libro, no es solo un poco de humor, sino un consejo bastante útil. Lea las secciones en las que está trabajando de forma iterativa, comenzando primero con solo los conceptos generales y luego profundizando suavemente en las matemáticas.
Finalmente, tenga a mano un buen papel antiguo y un lápiz para trabajar con los algoritmos tal como se describen, y resuelva algunos de los problemas fáciles. Ayuda mucho a reforzar lo que estás leyendo.
fuente
No se preocupe, la mayoría de las personas no entienden El arte de la programación de computadoras (TAOCP). Así que no te consideres lento o un novato por no entender, eres como el otro 99,99% de nosotros que no lo entiendo.
Eres bastante ambicioso si quieres llegar al nivel en el que puedas leer The TAOCP con facilidad . Yo solo he hojeado los libros antes de guardarlos. Probablemente solo haya un puñado de personas en este planeta que entiendan TAOCP.
Mira la publicación: Los programadores de libros no leen realmente por Bill the Lizard.
Hay muchos otros libros enumerados allí que son bastante legibles , comprensibles y de los que puede beneficiarse de inmediato .
Personalmente me gusta:
fuente
si se define a sí mismo como
not a highly intellectual being
entonces, se está estableciendo con bajas expectativas. Tienes que romper esa mentalidad si quieres hacer algo que valga la pena. No debe haber ninguna duda en su mente de que puede lograr algo. Además, lograrlo no significa que lo lograrás fácilmente.Las cosas que vale la pena perseguir son las que son difíciles ... y eso no es un cliché. En software, ingeniería, en la vida en general, si quieres lograr algo, tienes que ir por las cosas que son difíciles, las cosas que la gente evita y no conformarte con los denominadores comunes más bajos de las cosas.
Primero, no está claro cuál es su experiencia en CS. El libro de Knuth requiere un cierto grado de madurez. Pocas personas con un título de CS pueden superarlo con facilidad. No esperaría que un estudiante de CS que acaba de terminar su primer curso de algoritmos pueda leer incluso un solo libro de Knuth. La madurez necesaria para obtenerla simplemente no está allí, y eso no tiene nada que ver con la capacidad mental del estudiante.
Necesitas tener tus algoritmos básicos fríos y claros, y necesitas tener una buena cantidad de programación (trabajo y / o escolástica) en tu haber - Yo diría, 40 créditos en programación al menos. También necesita tener sus matemáticas CS en terreno firme.
No puede avanzar mucho sin tener una buena comprensión de las matemáticas discretas (y posiblemente la teoría de la computación).
No es que necesite ese conocimiento para trabajar en los problemas de Knuth, sino que necesita una madurez para poder atravesar ese tipo de material.
Primero elija un libro y un solo libro (el libro de CLRS como se sugirió anteriormente), y trabaje de principio a fin. Cuando sea posible, haga programas que implementen los algoritmos. No use Java o C #, ni siquiera C ++. Vaya a los huesos desnudos C y tenga la sensación de construir cosas a partir de restos de metal desnudos.
También obtenga el libro de Knuth sobre "Matemáticas concretas" si no ha realizado un curso de matemática discreta y teoría de la computación. Sería bueno para ti leer ese libro también.
Luego aborde la enciclopedia de Knuth, un tomo, un capítulo a la vez. No vaya a otro capítulo sin tener una buena comprensión del primero.
Te sugiero que primero revises el volumen I (algoritmos fundamentales), luego el volumen III (búsqueda y clasificación). Esos deberían ser tus objetivos inmediatos. Luego, más tarde (mucho más tarde), aborde el volumen IV (Algoritmos combinatorios) y luego el Volumen II (Algoritmos semi-numéricos).
No te sientas mal si no lo entiendes al principio. He estado tratando de pasar el volumen I y III durante años (10 años ahora).
Y tampoco deberías ponerle tanto peso. No lo hagas para demostrar algo a alguien o a ti mismo. Hazlo porque estás intelectualmente interesado en hacerlo. Puede dominar los algoritmos simplemente usando el libro de CLRS (o cualquiera de los excelentes libros de nivel de posgrado).
Sé pragmático y date un descanso. Trate de leer el libro de Knuth como una ambición personal a largo plazo, no como una prueba inmediata de que usted es material de CS;)
Hay otras cosas más importantes (en cuanto a la carrera) para suicidarse;)
fuente
Incluso antes de comenzar con Knuth, tuve que recorrer cuatro libros diferentes. Los dos primeros son los libros de Sedgewick sobre Algoritmos. Estos resumen de la mayoría de los algoritmos y estructuras de datos en una forma implementada real, para que pueda ver qué son y cómo funcionan. Estos libros vienen en diferentes versiones de lenguaje: leí los de C, pero iirc se escribieron originalmente en Pascal, y hay versiones de C ++ y Java.
Después de eso, trabajé en una buena parte del libro de Cormen sobre Algoritmos y usé la Introducción al análisis de algoritmos de Sedgewick y Flajolet como texto complementario, ya que está más en la línea del rigor matemático de Knuth que el libro de Cormen. Todavía tengo que terminar cualquiera de estos, principalmente seleccionando las partes que siento que necesito.
Después de leerlos y obtener un título en Matemáticas, puedo leer algunos de TAOCP, pero es una lectura difícil. Eso no quiere decir que no sea útil. Los TAOCP son algunos de los mejores manuales de referencia de algoritmos, pero pensar que puede usarlos para comprender "completamente" cualquier cosa es algo problemático.
fuente