¿Por qué la gente usa libros de programación? [cerrado]

94

Me parece que cuando alguien pregunta cuál es la mejor manera de aprender a programar, la gente generalmente les proporciona referencias a un montón de textos escritos por varios autores.

Sin embargo, no creo que muchas personas aprendan a programar de los libros. Encuentro que generalmente se enfrentan a un desafío y luego usan la programación como herramienta para superarlo.

Por ejemplo, me metí en la programación porque quería iniciar un servidor para un juego que estaba jugando, así que busqué en Google y leí el soporte para ese servidor en particular y ahora soy un ingeniero de software empleado, usando solo las habilidades que desarrollé ( y luego más desarrollado) mediante la codificación de scripts de C # para un paquete de servidor no muy popular.

Entonces mi pregunta es, ¿a las personas generalmente les resulta más fácil aprender de estos libros? Sé que he mirado algunos de ellos y los he encontrado demasiado 'secos' para alentarme a terminarlos.

Alex Hope O'Connor
fuente
3
libros no es primordial en este caso, pero la gran ventaja si usted lee los libros no son más que otros libros que son interesantes.
CND
42
¿Estás hablando de aprender a programar desde el principio o cosas más avanzadas? Hay una gran diferencia entre 'Aprender C ++ en 24 horas' y un libro decente sobre temas teóricos más avanzados: no encontrará el trabajo de Knuth en línea.
André Paramés
78
Parece que nunca has encontrado un buen libro de programación.
Jaywalker
46
Esto es metafórico a la pregunta, "¿por qué ir a la escuela?"
Jodrell
8
Nunca he encontrado que los libros sean una herramienta de aprendizaje principal, sin embargo, tengo un montón de ellos y los recomiendo todo el tiempo. Es obvio que solo aprendes haciendo. Sin embargo, los libros son la fuente de ideas y pueden usarse como una referencia fácilmente disponible. No leemos / recomendamos los libros para aprender. Leemos / recomendamos los libros para compartir las ideas contenidas en ellos.
Joel Etherton

Respuestas:

229

Así es como aprendo, hablando en general:

  • Compra un libro
  • No lo lea de principio a fin, pero sepa dónde se puede encontrar todo
  • Encuentra un proyecto para mascotas para trabajar
  • Aprende de la experiencia, pero usa el libro como referencia
  • Donde el libro falla, siempre hay google

Nota: el tercer punto a veces viene primero.

Editar : Para responder la pregunta "¿Por qué?"

Google es genial para descubrir cómo hacer algo, pero no es genial para descubrir lo que no sabes. ¿Por qué alguna vez buscarías en Google "delegados de C #", si primero no sabías que C # tiene un concepto llamado delegados y que podría ser útil para resolver un problema en el que estás trabajando?

Además, la relación señal / ruido puede ser un poco alta a veces. Si tiene una idea aproximada de cómo se hace algo, puede confirmar fácilmente si el artículo que está leyendo es correcto. Pero si no tienes idea ... puedes terminar en un desastre mayor.

pdr
fuente
19
Gran respuesta, particularmente la edición en respuesta a "por qué". Recientemente comencé a aprender ASP.NET, y lo hice usando Google. Había estado usando C # para .NET 2.0 durante años, así que pensé que podría sobrevivir. Cada vez que me encontraba con un problema, conseguía encontrar la respuesta buscando en google, pero pronto se hizo evidente que solo estaba golpeando la punta del iceberg de lo que podía hacer, y me faltaban por completo grandes fragmentos de las bibliotecas. Un libro proporciona una visión general mucho mejor de la tecnología y de todo lo que puede hacer. Evite los libros "aprender x en 24 horas" y opte por libros "avanzados x".
Gavin Coates
44
+1 por "descubrir lo que no sabes".
Covar
2
Extensión al quinto punto: cuando el libro falla, siempre hay google y otros libros sobre el tema, incluidos aquellos dirigidos a los no principiantes en el tema .
Richard
55
+1 para "la relación señal / ruido puede ser un poco alta a veces. Si tienes una idea aproximada de cómo se hace algo, puedes confirmar fácilmente si el artículo que estás leyendo es correcto. Pero si has no tengo idea ... puedes terminar en un desastre mayor ".
Tom Squires
99
"Cuando el libro falla, siempre hay google". Te refieres a Stack Overflow;)
Joren
42

Algunas razones por las cuales los libros siguen siendo relevantes:

  1. Me resulta más fácil leer una gran cantidad de texto en papel que en una pantalla LCD estándar, tal vez los libros electrónicos en una pantalla de tinta electrónica cambien esto.
  2. El libro tiende a describir el panorama general y algunas buenas prácticas, eso es realmente bueno cuando necesita un inicio rápido o una nueva vista.
  3. Google es realmente bueno cuando necesita ejemplos sobre un tema específico, pero no para el panorama general.

Pero un libro nunca lo llevará hasta el final, simplemente lo empujará en la dirección correcta.

Johan
fuente
2
+1 para el panorama general. Después de haber estado programando en un nuevo lenguaje / entorno por un tiempo, encuentro que los libros son realmente útiles para completar el panorama general y las cosas que me he perdido de mi propia exploración.
Adam Morris
2
El blog de Raymond Chen, o la serie Going Deep en el Canal 9, es extraordinariamente útil para aprender el por qué . Una vez que sepas el " por qué " algo es como es, cómo hacerlo se convierte en un detalle trivial que se puede buscar en Google. Por lo general, el autor de un libro puede pasar a un segundo plano para comprender la lógica de lo que está sucediendo, en lugar de tratar de confundirse con cadenas de fragmentos de código que encontró en línea.
Ian Boyd
En mi opinión, una de las grandes ventajas que tienen los libros es la capacidad de meter los dedos en varios lugares a la vez para que pueda pasar rápidamente de una sección a otra. Encuentro esto invaluable cuando estoy tratando de aprender algo nuevo al revisar algún código, ya que frecuentemente busco otra cosa (a veces varias cosas) para entender lo que busqué en primer lugar. Navegar en una pantalla simplemente no es lo mismo.
TMN
Convenido. Saltando directamente a Asp.Net MVC, por ejemplo, puede descubrir cómo hacerlo. Pero hay tantas cosas que probablemente te equivocarás que son sutiles. Entonces te quedas rascándote la cabeza por qué algo no funciona.
Andy
28

Cuando aprendí programación en los libros de la década de 1980, donde más o menos la única fuente de información disponible para aprender completamente un lenguaje de programación en su conjunto. Además, puedes comprar revistas de informática, pero su contenido son artículos aleatorios que pueden haber sido interesantes y útiles o no.

Hoy en día puede encontrar toda la información que necesita en Internet. Aunque consideraría un tutorial completo lo suficientemente similar a un libro.

La forma en que aprenda puede depender de sus preferencias personales o de sus necesidades reales.

La ventaja de un "texto completo", si es un libro o un tutorial en línea, será que cubre material que, si bien no es realmente necesario, lo ayudará más adelante. Es solo saber que algo es posible y saber dónde encontrarlo. Especialmente si aprende sobre un entorno complejo o un lenguaje muy complejo como C ++. Puede leer muchos blogs pequeños sobre Ruby on Rails sin tener que escuchar sobre Ajax o asuntos de seguridad. Mientras solo juegues, esto puede no ser un problema. Pero si, como me sucedió a mí, desea ingresar al desarrollo profesional de Ruby on Rails en unas pocas semanas, entonces trabajar con un texto que cubra todos los puntos importantes será de gran ayuda.

Otros libros cubren detalles sobre el estilo de programación, las mejores prácticas, los patrones de diseño o ciertos grupos de algoritmos. Puede trabajar con ellos y tal vez de todos los patrones de diseño solo aplicará un subconjunto muy pequeño. Aún así, es útil conocerlos y saber dónde encontrarlos. Y es simplemente una forma de entrenar sus procesos de pensamiento en una dirección en la que esté más interesado en "construir una solución" que "hacerlo funcionar de alguna manera".

Personalmente me gusta leer, así que no tengo la sensación de que los libros estén secos. Aunque es importante, por supuesto, que el libro esté en su nivel real de conocimiento o más allá. Si ya ha dominado todos los conceptos básicos de C #, no tiene mucho sentido leer un libro para principiantes.

thorsten müller
fuente
77
+1 por mencionar lo que hubiera escrito: que el tipo de libros de "mejor práctica / metodología" difiere mucho del tipo de libros "cómo hacer X usando Y". Y lo primero es lo realmente valioso, porque enseña la experiencia general de resolución de problemas que tanto le costó ganar. Una vez que aprenda las pruebas unitarias, la refactorización, la estimación, etc., puede aplicarlo y adaptarlo a una gran cantidad de idiomas / dominios / proyectos.
Péter Török
1
Definitivamente apreciamos la mención sobre estilos, prácticas y patrones. Estos son los libros que realmente son los beneficiosos. Puedes aprender a programar simplemente teniendo un problema para resolverlo y resolverlo. Aprendes a programar bien aprendiendo estilos, prácticas y patrones. Aún así, el mejor lugar para obtener una comprensión integral de estos conceptos son los textos.
Plataforma
+1 para "cubre material que, si bien no es realmente necesario, lo ayudará más tarde": los buenos programadores tienen un profundo conocimiento al que recurrir. Incluso si no recuerda todos los detalles, pero conoce el hilo para tirar y aprenderlo cuando lo necesita, ¡puede ser muy valioso!
Jared Updike
22

Un libro (o documentación web estructurada como un libro) sigue siendo mi forma preferida de aprender la mayoría de los idiomas.

Si solo te sumerges en un idioma y descubres cosas por ti mismo, es probable que te pierdas aspectos importantes, que un buen libro te hubiera entregado en el momento adecuado.

Por ejemplo, algunos colegas míos aprendieron Java al sumergirse sin un libro. Habían estado programando en Java durante algunos años, cuando descubrí que estaban manipulando rutinariamente matrices de byte [] convirtiendo la matriz en una Cadena, usando .substring (), y luego convirtiendo la Cadena nuevamente en una matriz. System.ArrayCopy () se presenta en la página 155 de Java In A Nutshell

Espero que reconozca que aprender es más fácil con un maestro que solo. Un buen libro es un sustituto barato de un buen maestro. Introducirá conceptos en un orden cuidadosamente planificado, para que pueda construir una comprensión profunda, no solo lo suficiente para sobrevivir.

Delgado
fuente
2
+1 para señalar la diferencia entre aprender a hacer algo y aprender a hacerlo bien.
idbrii
Un buen libro es una excelente manera de cubrir rápidamente el área. Alguien ya ha hecho la investigación por ti. Encontrar un buen libro puede ser difícil. Hubo un tiempo en el que tenía una probabilidad del 50/50 de obtener un gran libro sobre un tema que me interesaba (muy buen comprador). Ahora encuentro que la posibilidad de encontrar un buen libro en la librería es inferior al 10%. Sin embargo, hay muchos buenos libros como recursos disponibles en la red. Elegir el recurso correcto puede acelerar su aprendizaje.
BillThor
1
No estoy seguro de cuándo fue ese momento. Eché un vistazo a mis viejos libros de CS recientemente. El estándar ha mejorado enormemente. Por ejemplo, usé 'Programación funcional con Miranda' hace años. Utilicé 'Real World Haskell' recientemente. El libro más antiguo es desconcertante hoy, a pesar de utilizar básicamente los mismos conceptos y paradigmas que Haskell.
delgado
21

Pienso que usted podría estar sobre algo. Al menos para mí, la mayoría de mis habilidades provienen de querer / necesitar un programa que haga "X".

Quizás las personas que aprenden de esta manera no están pidiendo ayuda; simplemente están demasiado ocupados haciéndolo (mal, pero aprendiendo en el camino). Las personas que quieren ser programadores (como se le apuntó al primer grupo) hacen muchas preguntas sobre cómo ser un programador, o cómo programar, a pesar de que no necesariamente tienen un problema que resolver, y estos no son preguntas con respuestas directas.

Y así nos apuntamos a los libros. "Oh, sí, toma una copia de 'Sumérgete en Python'" "¿Así es como lo aprendiste?" "No" "Um ..." "Estoy un poco ocupado, pero te ayudaré si te quedas atascado" "Uh ... OK, supongo"

Por otro lado, valoro muchísimo el buen material de lectura cuando estoy aprendiendo, para poder ver cómo el problema que estoy tratando de resolver es resuelto por un autor más experto, o tal vez solo para poder aprender algo. Técnicas de "principiante" que podría no haber aprendido en el camino.

TLDR : los libros son buenos, aprender haciendo es bueno, aprender haciendo libros es ???

TokenMacGuy
fuente
1
+1: Creo que lo has clavado. Aprenda haciendo, los libros más valiosos que poseo eran específicos de una aplicación que estaba escribiendo en ese momento.
Justin Shield
41
Tenga cuidado de no convertirse en un programador "autodidacta" que piense que lo saben todo porque trabajaron mal en un problema simple y se sienten "demasiado buenos" para leer libros.
Joris Timmermans
2
Debería tener en cuenta que no estoy en contra de la lectura, solo creo que los medios digitales suelen ser mucho más actuales y atractivos.
Alex Hope O'Connor
2
@Alex Acerca de los medios digitales. Eso realmente depende del tema que aborden los medios de comunicación. Si los medios están abordando cosas como cómo hacer x en el lenguaje y, o la forma más eficiente de codificar en z, entonces estoy de acuerdo con su declaración. Sin embargo, otros temas (generalmente temas teóricos más avanzados), como NP, P, análisis de algoritmos, etc., en mi humilde opinión, generalmente se abordan mejor mediante un libro de texto. Tome el arte de la programación de Knuth . Es un texto bastante antiguo, pero aún se considera uno de los libros más importantes sobre programación.
cledoux
16
Creo que este es un caso de sesgo de confirmación. @Alex parece estar buscando una respuesta determinada. No digo que esta respuesta sea mala per se, pero ciertamente no es la mejor respuesta proporcionada por ningún tramo de la imaginación.
zzzzBov
15

Amo leer libros técnicos. No todos los libros técnicos, solo aquellos sobre un tema en particular que me interesan, dice Sharepoint. Recuerdo el primer libro que realmente leí (varias veces), Programming Windows de Charles Petzold. Debido a esto y a muchos otros, pude escribir una aplicación Win32 de memoria. Casi no necesitaba buscar una API, así que pude concentrarme en la parte comercial.

Siento que los libros proporcionan una forma "autoritaria" de hacer algo, quizás por alguien que conoce la forma correcta de hacer algo mejor que yo. Confío en que lo que estoy aprendiendo es, me atrevo a decirlo, la mejor manera de resolver mi problema. Eso es, por supuesto, si confío en el autor (me encanta el área de reseñas en Amazon).

Aunque ahora me encuentro cada vez más "buscando en Google" y copiando y pegando cuando intento resolver un problema, paso mucho tiempo asegurándome de que lo que estoy copiando (o inspirado por :) es algo confiable Puede poner mi código. Solo porque encuentro una solución en la web, no es necesariamente la mejor.

Si bien, como tantos otros programadores, ahora simplemente busco en Google las respuestas, todavía me encuentro recogiendo libros de autores conocidos. Siento que el contenido me lo proporciona alguien que es bueno para explicarlo (enseñarlo) y me evita tener que filtrar toda la basura de mis resultados de Google.

Eddie Paz
fuente
14

Supongo que su pregunta no significa "por qué usar tecnología antigua como un libro impreso en lugar de páginas HTML", sino "por qué leer textos más largos sobre programación escritos por uno o pocos autores".

Puede pensar en los libros como una recopilación estructurada de información sobre un tema determinado. Tiene la ventaja de que alguien ha hecho el esfuerzo de construir cada capítulo uno sobre el otro para facilitar la comprensión del tema. Por lo general, también se le dice cuáles son los límites de la información (qué está cubierto y qué más hay que debe buscar en otro lugar). Después de leerlo y trabajar con él, puede estar seguro de haber alcanzado cierta habilidad. Si desea aprender con el botón de avance rápido presionado, un libro puede obligarlo a trabajar en todos los aspectos sin saltarse las partes aburridas, al menos si confía en la estructura del libro. La colección llamada "libro" también suele ser útil como referencia.

El uso de Internet, los blogs, los "juegos de palabras", etc. generalmente se incluyen en el tipo de información no estructurada. Obtienes un montón de fragmentos de sabiduría, pero tienes que hacer más trabajo de búsqueda para desarrollar tu conocimiento, porque nadie te guiará para decir "aprende esto primero o no verás el mérito de esas cosas que he buscado en Google ahora ". Es posible que te pierdas ciertas partes porque son demasiado aburridas o porque nadie te dijo que eran importantes. Puede que aprendas mal las cosas, porque no todo lo escrito en Internet es de primera calidad. Puede pasar mucho tiempo filtrando resultados de búsqueda inútiles. Puede perder días tratando de lograr algo por su cuenta, solo porque no conocía un cierto patrón de diseño o construcción de programación y nadie se lo dijo. Cuanto menos sabes

Para ponerlo un poco provocativo: nunca confiaría en un arquitecto para construir un puente que tengo que cruzar cada día si me dice que nunca había leído un libro sobre construcción de puentes o análisis estructural, sino que lo aprendió jugando y usando Google ...

Ray
fuente
Mi pregunta podría interpretarse como honesta, pero esta última fue mi consenso general.
Alex Hope O'Connor
10

Si eres un programador en C, ¿cómo esperas aprender Python sin un libro o un maestro?

Si solo aprende la sintaxis básica y se sumerge directamente, terminará escribiendo código C en Python , y llegará a la falsa conclusión de que Python es tan detallado y doloroso como C.

BlueRaja - Danny Pflughoeft
fuente
Eso es una exageración. Si comenzaste a programar Python, podrías buscar en Google respuestas a problemas y encontrar cosas como recetas de Python que describan soluciones Pythonic a problemas específicos.
idbrii
66
@pydave: Si fuera una exageración, entonces no habría tanto código C escrito en Python en SO (ejemplo)
BlueRaja - Danny Pflughoeft
44
Leí tu pregunta de ejemplo, leí tu respuesta y entiendo lo que quieres decir: aprender la sintaxis básica no es lo mismo que aprender el idioma. (Ni siquiera consideré no aprender las construcciones del lenguaje.) Si aprende Python lo suficiente como para escribir código C en Python, entonces aún no ha aprendido a programar en Python.
idbrii
Este es un problema grave que merece más atención. Todos los lenguajes de programación son Turing completos, lo que significa que puede resolver cualquier problema escribiendo código Python tipo C o código Ruby similar a Java. No hay ningún obstáculo que lo obligue a cumplir con el espíritu del lenguaje en el que está programando. Peor aún, es posible que ni siquiera sienta el dolor de su ineficacia de codificación porque será aproximadamente tan doloroso como lo fue en nativo C o nativo Java, un nivel de dolor que has llegado a aceptar como normal.
Wedge
no puedo estar más de acuerdo - Soy un programador C en PHP cuando escribo alguno: - |
warren
9

Por lo general, Google solo es bueno para encontrar pequeños fragmentos de código o bibliotecas de código abierto. La documentación para algunas bibliotecas / programas no es confiable en el mejor de los casos (si existe, solo muestra ejemplos simples o comunes).

No tengo muchos libros de programación, pero puedo decirle en este momento que tengo un libro sobre OpenGL, y tiene la mayor parte del código para un motor 3D, que simplemente puede copiar, pero puede lea la teoría también: solo tiene que pasar algunas páginas y una explicación del código está allí, esperando ser leída. Hoy en día, es probable que pueda encontrar algunos motores 3D de código abierto en la red, pero si necesita cambiar el código sustancialmente, es probable que tenga algunos problemas; por lo general, no existe un foro de ayuda y las personas en SO no sabrán el responda a su pregunta si es muy especializada. Cuando se trata de cosas realmente especializadas, solo unas pocas docenas de personas en todo el mundo podrán responder a su pregunta sin pasar horas para averiguar lo suficiente como para poder encontrar una respuesta. Si pregunta cómo implementar una lista vinculada en C #, obtendrá 5+ respuestas en SO en los primeros 10 minutos, pero si pregunta cuál es la mejor manera de implementar un algoritmo de sombreado complejo en three.js es , tu pregunta se va a hundir en la primera plana como una roca.

Además de eso, los libros se escriben casi exclusivamente desde la perspectiva de que el lector quiere aprender sobre la teoría involucrada, mientras que Google solo produce fragmentos aleatorios de código basura, discusiones archivadas sobre el tema en el que nadie sabe de qué están hablando. , etc. Las fuentes en Internet han mejorado mucho: SO, Moz Dev Network, el sitio web de Microsoft, blogs, etc., pero históricamente, los libros han sido mucho mejores, y las fuentes de Internet se están poniendo al día.

Michael
fuente
1
+1 para señalar el tiempo que necesita para clasificar la basura aleatoria con el método de "aprendizaje en Google"
Ray
1
+1 para 'discusiones archivadas sobre el tema en el que nadie sabe de qué están hablando, etc.' - ROFL.
5arx
7

La calidad de la escritura en los mejores libros es tal que muchos de los problemas no obvios se presentan incluso antes de comenzar. Un autor con mucha experiencia sabrá contarle cosas como: efectos secundarios inesperados, repercusiones a largo plazo, características indocumentadas, escenarios de uso típicos ...

Básicamente, está obteniendo el beneficio de un escritor con mucha experiencia que lo guiará a través del problema y le señalará las partes realmente interesantes.

A veces también puede encontrar esto en las referencias en línea, pero debido a la baja barrera de entrada, mucha de la información en línea es demasiado básica, falta detalles o simplemente es incorrecta. Esto también puede suceder con los libros, así que asegúrate de creer directamente en aquellos libros que son clásicos con buenas críticas. Otros libros también pueden ser útiles, pero solo como una de las fuentes, aún tendrá que verificar la información haciendo referencias cruzadas o probándose usted mismo.

Joris Timmermans
fuente
1
+1000 'simplemente equivocado' Hay una tonelada de código de ejemplo en línea escrito por 'los mejores programadores' que no compilan usuarios ni saben de qué están hablando. Además, se escribirá un buen libro con un modelo pedagógico que presente y luego refuerce el contenido de una manera coherente y legible.
jqa
6

Los libros tienden a incluir una gran cantidad de información en un formato estructurado. Google tiende a venir con una gran cantidad de información que no siempre es particularmente estructurada y difícil de organizar en términos de lo que debe hacer.

En realidad, ya no leo libros físicos en papel: hay un lector electrónico a mi lado y tengo un software Kindle en mi computadora portátil que me da acceso a la información que estoy buscando.

Donde Google es útil es si no está buscando una descripción estructurada de cómo programar, pero necesita detalles sobre cómo programar una tarea específica. Alguien casi siempre escribe código para esa tarea antes, o, al menos, algo así.

Creo que hay una diferencia entre aprender a programar y aprender a programar una tarea específica. Cuestionaría la calidad del código que proviene de alguien que solo aprendió partes de Google en tareas específicas si nunca han tenido una visión general decente sobre cómo programar. Esto no es específico del idioma, es más conceptual.

temptar
fuente
4

Los libros son útiles si quieres profundizar en un tema. Claro que aprendí C # haciendo algunos tutoriales y escribiendo algunos proyectos (favoritos). Pero C # en profundidad sigue siendo útil para ver qué sucede debajo y para aprender algunas cosas nuevas.

Además, puedo tomar un libro de programación y leerlo en mi baño o afuera al sol. No puedo hacer eso con mi PC de escritorio.

Carra
fuente
4

Porque es una forma conveniente de aprender de otros programadores.

Los libros son un suplemento. Solo puedes llegar tan rápido trabajando solo por tu cuenta. ¿Quién no preferiría estar en un proyecto con un mejor programador dispuesto a enseñarte algo que simplemente leer el libro?

Tiendo a usarlos más como referencia en lugar de "Todo lo que necesitarás saber sobre programación".

JeffO
fuente
3

Los libros le permiten absorber un conjunto de información de manera "pasiva". No tiene que mirar lo que es posible, se le presenta un subconjunto de posibilidades. Cuando estaba aprendiendo C #, el libro realmente ayudó a señalar las posibilidades, y me pregunto cuáles eran los equivalentes de C ++. Por supuesto, la masterización tuvo lugar cuando se usó en un proyecto (tamaño real). Pero el libro realmente ayudó a señalar diferencias y posibilidades.

refro
fuente
3

En resumen, creo que los libros tienden a ser más útiles a un alto nivel. Pueden darle orientación de diseño y ayudarlo a prevenir problemas en lugar de resolverlos.


Los libros ciertamente tienen sus desventajas. Mi copia de Programming Python cubre Python 2.0, pero el tiempo de ejecución que uso es 2.6.

Sin embargo, creo que el aspecto importante de los libros es que puedes encontrar cosas con las que no tropezarías. Google te ayuda a resolver problemas específicos, pero los libros te ayudarán con el diseño. Y no solo diseñar libros. Si lees un buen libro que te ayuda a comprender el diseño de un idioma, comprenderás mejor cómo usar ese idioma.

Otros libros son buenos para refinar su conocimiento. Creo que el eficaz libro de C ++ de Scott Murphy es un buen ejemplo. Si bien este libro no es realmente muy bueno para aprender C ++, te ayuda a ver problemas en el diseño de algoritmos / interfaz / herencia que no has encontrado (todavía) o has solucionado. Puede ser fácil encontrar una solución simple (que puede causar otros problemas más adelante), pero al comprender mejor el lenguaje, puede diseñar su software para evitar estos problemas en primer lugar.

Por supuesto, no es el hecho de que los libros estén impresos en papel lo que hace que valga la pena. El cuidado y el esfuerzo que conlleva crearlos y el deseo de brindar una educación rigurosa son los que dan valor a los libros. A menudo, como efecto secundario, obtienes recursos útiles en línea como C ++ FAQ lite o libros electrónicos como Dive into Python . También hay tutoriales solo en línea que son herramientas de aprendizaje exhaustivas y útiles (como la documentación para algunas plataformas / idiomas / bibliotecas).

Los fragmentos en la web son una buena forma de responder a su pregunta, pero rara vez le dicen lo que debe preguntar.

idbrii
fuente
3

Quiero ser programador, así que estoy usando libros de programación. Los libros me permitirán ser profesionalmente competente en programación.

Peter Mortensen
fuente
3

Realmente no he leído un libro de programación en mucho tiempo. Solía ​​usarlos como guías de referencia, pero ahora creo que Internet es más fácil para la mayoría de los idiomas y marcos.

De todos modos, creo que lo mejor para aprender de los libros de programación es el lenguaje central. Por ejemplo, mi primer idioma real fue C. Lo aprendí escribiendo un sistema operativo (no lo recomiendo). Como resultado, mi conocimiento de C estaba bastante paralizado incluso después de dos o tres años de programación. Nunca obtuve un buen conocimiento básico del idioma. No sabía que podía convertir estas 15 líneas de código desordenado en dos líneas de código limpias. Entonces pude resolver problemas, pero no estaba utilizando C en toda su extensión.

Luego, en un momento, decidí aprender C ++ ... (aproximadamente 2 años después de comenzar a aprender C). Así que leí el único libro de C ++ que tenía alrededor, un C ++ para Dummies Book. Leí alrededor de 3/4 partes de él directamente, haciendo muy poco "hacer" durante ese tiempo ... y como resultado cuando me lancé a mi primer proyecto en lugar de sentirme cómodo con esas 15 líneas de código desordenado, supe que había Una forma más fácil de hacerlo (aunque es posible que haya tenido que buscarlo).

Hice lo mismo cuando aprendí C # / ASP.NET. No hice casi nada más que leer hasta que terminé con alrededor de 3/4 del libro. Y por lo que no aprendí, busqué Stack Overflow para preguntas interesantes de C #. Cuando entré en mi primer proyecto, diría que la mayor parte de mi código estaba relativamente limpio y solo ha tenido que ser refactorizado "enormemente" una vez desde entonces.

Entonces diría que los libros son muy útiles para aprender las capacidades de un marco o lenguaje. Sin embargo, más allá de eso, en su mayoría son inútiles por Internet, excepto por supuesto los fuertes libros teóricos y específicamente diseñados para ser material de referencia.

Earlz
fuente
2

Se trata menos de lo que lees, pero cuánto. Me gusta tener un par de libros de programación sobre la marcha mientras estoy trabajando en un proyecto. De vez en cuando (con más frecuencia de lo que piensas) leerás sobre una técnica que se puede aplicar a tu proyecto actual.

Una vez que lo haya implementado en una solución del mundo real, la información se mantendrá.

Fuzz suave
fuente
2
De hecho, creo que ese es el caso al responder preguntas en sitios web como SE. A menudo encuentro que los comentarios me llevan a información relevante para resolver un problema en el que estoy trabajando o sé que trabajaré pronto.
Lea Hayes
2

Prefiero usar libros porque siento que proporcionan una instantánea del estado de la tecnología en la que está trabajando. El autor declarará que con la versión XX del lenguaje / biblioteca Y, así es como se resuelve el problema Z. Los tutoriales del sitio web de mayo no pueden enumerar qué versiones están usando o no proporcionan el código de ejemplo que usan mientras que los libros a menudo lo hacen.

Los libros a menudo cubren el "por qué" esta solución resuelve el problema, mientras que los documentos en línea suelen ser copiar y pegar.

A menudo, también puede perder enlaces a todas sus referencias, se pueden mover o bajar. Protejo y cuido mis libros como una inversión (que son).

Spacebob
fuente
2

Puede resolver problemas sin leer libros, pero ¿sabrá realmente qué sucede detrás de su programa para resolver ese problema?

Necesita saber qué está sucediendo y qué podría haber sido una mejor alternativa. Para eso necesitas buenos libros de programación. Simplemente leer libros, por supuesto, no es suficiente, debe comprender el contenido, revisar otros libros, pensar en diferentes enfoques para resolver problemas, etc. El aprendizaje continúa con y sin libros.

Peter Mortensen
fuente
1

Cuando estaba aprendiendo C ++, encontré que la mayoría de la literatura era bastante inútil hasta que algo en mi cabeza hizo clic. Hasta el día de hoy no estoy seguro de qué era, pero todo comenzó a tener sentido. Los libros y los sitios web tenían mucho más sentido. Me llevó 2 libros aprender a programar en C ++ y ninguno de los dos era un verdadero libro de C ++ (eran libros de Visual C ++ centrados principalmente en MFC).

Si obtiene los libros correctos, puede ser realmente útil. Un amigo mío estaba leyendo algunos libros de Dietel en la universidad y los encontré extremadamente bien escritos. Nunca he encontrado los libros "... para tontos" tan útiles porque no explican las cosas de la manera correcta para mí. El mejor consejo es ir a una librería y obtener una muestra del libro para no desperdiciar un montón de dinero en lo que tienden a ser libros extremadamente caros.

Para algunos temas de programación, me resulta útil leer varios libros, realizar investigaciones a través de Google y experimentar. Me encontré haciendo esto mucho cuando estaba trabajando en algoritmos de IA cuando estaba trabajando en un juego de damas con J2ME. También me encontré haciendo esto cuando estaba aprendiendo cómo crear un compilador compilador para sintaxis personalizadas. Hay tantas variaciones y puntos de vista diferentes.

A veces, tener una comprensión de las vistas múltiples le permite hacer conexiones que de otro modo serían más oscuras.

Lea Hayes
fuente
1

Tiendo a aprender (programación) tanto de libros como de fuentes "justo a tiempo" como la web. Ambos pueden ser buenos, pero en general prefiero aprender de los libros, aquí está el por qué:

Cuando aprende solo lo que necesita saber de inmediato para terminar una parte de un proyecto, a veces se pierde el panorama general. Los mejores libros no son meramente referencias sino que, en cierto sentido, logran algo más cercano a un aprendizaje, al proporcionar una visión general completa de una tecnología y muchos consejos experimentados sobre las mejores soluciones a problemas comunes.

El aprendizaje justo a tiempo puede sufrir fácilmente el problema de la satisfacción, cuando identifica un problema que desea resolver, salta a la primera solución que parece funcionar, luego corre a las interwebs para descubrir cómo implementarlo. . Sin embargo, a menudo esto puede meterte en problemas, si hubieras podido conversar con un programador experimentado sobre tu problema, no te dirían "aquí está cómo hacer X" sino que te dirían "no hagas" X, haz Y en su lugar ". Y este es el tipo de conocimiento que sueles obtener de los mejores libros. De hecho, algunos libros tratan sobre este tipo de cosas, como Javascript: The Good Parts .

El otro problema que puede tener el aprendizaje JIT es una curva de aprendizaje mucho más lenta. Con el aprendizaje JIT, tiendes a aprender solo lo que necesitas saber. Pero a menudo, tener un núcleo básico de conocimiento puede acelerar el aprendizaje de un nuevo lenguaje o marco. En lugar de tropezar con lo básico, comienza con una base sólida y luego construye desde allí. Una buena parte del material que puede cubrir mientras lee un libro puede no serle útil de inmediato, pero tener ese conocimiento previo puede ser beneficioso para orientar su toma de decisiones y especialmente para comprender el nuevo código al que está expuesto. Hay una compensación, por supuesto, y hay libros malos que solo acumulan datos inútiles que no recordarás después de haberlos leído, pero también hay buenos libros que te dan una buena base en los fundamentos y qué '

También hay libros en un nivel más alto que un solo tema tecnológico que creo que son cruciales para madurar como desarrollador. Libros como Code Complete , Refactoring , Working Effectively With Legacy Code , etc. No obtendrá el conocimiento de esos libros solo a través del aprendizaje JIT.

2 revoluciones
fuente
1

Creo que voy a leer libros, especialmente descargar libros electrónicos, leer cada parte del capítulo y copiar su código. pegue en su editor de programación y luego vea cuál es la salida. Luego intente cambiar la lógica de la misma. Mencioné libros electrónicos descargables porque funcionan más rápido. Los libros son realmente excelentes. No estoy mintiendo, pero desde noviembre hasta hoy. He terminado alrededor de 20 libros. Todo requiere amor para leer. Lo que hacen los novatos es que resuelven un problema específico tomando la ayuda de Internet. Pero cuando se les da una tarea realmente compleja, se dan por vencidos. Razón, sin conocimiento de la tarea y su solución. Por ejemplo, he delimitado los controles con datatable y no sé qué hacen los conjuntos de datos y se me ha proporcionado la tarea de establecer relaciones entre las copias residentes en memoria de las tablas de la base de datos. No puedo hacerlo.

Adeel
fuente
0

Es muy difícil para los nuevos programadores comprender qué es realmente la programación, qué tan profunda es.

Cualquiera puede escribir un programa para decirle a una computadora que haga; bueno, casi cualquier cosa con muy poco aprendizaje, ¡esto no es difícil! Lo difícil es hacer un programa que sea compatible y que pueda ser comprendido rápidamente y comprendido profundamente por otros miembros del equipo, esta parte lleva años, docenas de años.

Además, aprender a trabajar como parte efectiva de un equipo es un poco curvo.

Entonces, ¿cómo ayudan los libros a resolver estos problemas de programación "reales" de una manera en que buscar referencias en la web no lo hace?

Bueno, dos de mis libros favoritos son "Patrones de diseño" y "Refactorización".

La refactorización es un gran libro que le dice cómo reconocer un código incorrecto. Si ha aprendido al buscar referencias de codificación, este libro (Bueno, uno de los muchos libros de Refactorización) es crítico.

Los patrones de diseño realmente no ofrecen mucho de lo que un buen programador no puede entender, pero dio nombres a una amplia gama de patrones que todos ya usaban en el código. Esto permitió a los programadores comunicarse de manera más efectiva y ayudó a algunos programadores a encontrar nuevas formas de atacar los problemas. Aunque puede encontrar patrones de diseño en la web, es mucho más fácil buscar en Google el nombre del patrón de diseño que googlear lo que está tratando de hacer.

Me han pedido en entrevistas que describan estos dos libros y lo que están tratando de lograr, creo que esta es una pregunta de entrevista muy válida ... Me gustaría prestar atención a un programador que no sabía sobre estos dos libros a menos que solicitara un puesto extremadamente junior.

Bill K
fuente
0

Aprendí a programar directamente de los libros. Hace unos 20 años antes de que Google y la red se volvieran populares. Creo que son grandes recursos. Sin embargo, la mayoría de los libros modernos solo citan artículos técnicos de los fabricantes. Así que ahora estoy de acuerdo en que es mejor aprender en línea. Con una palabra de advertencia como sigue:

Aunque leí muchos libros y tuve acceso a Internet casi desde que era financieramente factible. Nunca, nunca pude completar ningún tipo de proyecto considerable. Claro que podría hacer muchos de los proyectos importantes en grandes libros avanzados donde toman 20 capítulos para guiarlo a través de él, pero cuando se trataba de mis propios proyectos del mundo real, siempre, sin ejecución, golpeaba una pared de ladrillos. Tengo que decirte que leí algunos libros pesados.

Tuve problemas toda mi vida para ingresar a la universidad, pero ahora voy a ingresar a mi tercer año. En mi primer año conocí a personas en cuarto año y maestros, y pude mantener conversaciones productivas sobre las teorías de AI, HCI, ensamblador y desarrollo de compiladores, etc. Sin embargo, con todo este conocimiento, no pude crear un programa razonable. Lo que me faltaba ... Lo único que no puedes obtener de ningún libro o en línea.

Estructura. En el primer año, no aprendí nada de naturaleza técnica (Allready lo sabía todo y lo examiné sin haber estudiado durante un día, exento de matemáticas y diseño, ya que estos eran razonablemente nuevos para mí), pero aprendí la estructura y el trabajo en equipo. En mis primeras vacaciones de verano me acerqué más que nunca a completar mi primer trabajo real.

En mi segundo año, aprendí muchas cosas nuevas de tecnología (aún lo básico en comparación con lo que sabía, pero estaba poniendo en práctica la teoría que conocía). Esto enfatizó la importancia de la estructura nuevamente. No he completado mi primer proyecto real. Ahora me considero un programador.

No creo que sea necesario leer libros para aprender programación. Pero es una ayuda. Sin embargo, creo que ningún libro o sitio web enseña o puede enseñar lo que obtienes de incluso 2 años de universidad. Si has logrado completar proyectos sin ir a la universidad, juega limpio, pero es una experiencia que recomiendo sin importar la edad.

Los libros son buenos, Internet es mejor, google y youtube son fabulosos, pero nada supera a la buena y antigua universidad en mi opinión. Y dudo que alguna cantidad de google y youtubing lo haga, y sé de primera mano que ninguna cantidad de libros lo hará.

Jack Spratt
fuente
Donde dice arriba "No he completado mi primer proyecto real. Ahora me considero un programador". Debería decir "He completado mi primer proyecto real. Ahora me considero un programador". Perdón por la falta de ortografía.
Jack Spratt
0

No tengo ni idea. Estoy en contra de programar libros. En la mayoría de los casos, aún debe investigar en Internet para buscar información adicional.

¿Quieres aprender un lenguaje de programación? Google para ello. Odiaba jQuery porque parecía difícil. Luego llegué a Stack Overflow, y sé mucho de eso. Sin la ayuda de ningún libro.

  • Google para ello
  • Busque una aplicación profesional de código abierto completa
  • Busque en ese código y PRUEBE para obtener lo que está sucediendo.
  • Intente escribir alguna aplicación rápida / simple a partir de fragmentos de un código existente.
  • Intenta reescribirlo por ti mismo.
  • Encuentra más tutoriales en Internet
  • Toma experiencia
  • Toma más experiencia
  • ¡Acabas de aprender un nuevo idioma! (No dije que sería un experto, pero lo básico se aprende en unas pocas horas o días)
génesis
fuente
Tener un libro como referencia es muy útil: se obtiene de la experiencia de otros. El "libro" podría incluso ser una extensa documentación / tutoriales en línea como django o jquery . Pero solo la fuente de prueba y error + lectura dejará brechas importantes en su conocimiento. Ahora, si solo necesita unas pocas líneas de jQuery, su método funciona pero no aprendió el idioma. Pero si quieres aprender C, te recomiendo tener K&R como referencia. Seguro que la mayoría de la información está en línea en algún lugar, pero dispersa en muchas publicaciones de blog.
dr jimbob
0

Creo que es correcto que la programación no se pueda aprender solo de los libros (como mencionó la mayoría de las personas), es necesario practicar mucho y hay muchos recursos disponibles en Internet (artículos, videos, muestras, etc.).

Pero un buen libro llena los vacíos en su conocimiento. Después de leer un libro de principio a fin le da la confianza de que no tiene agujeros en su conocimiento del tema. Aunque el desafío es encontrar buenos libros sobre el tema.

Manoj
fuente