¿Qué libro de programación deseas que alguien escriba?

Las respuestas hasta ahora son excelentes. Como con muchos otros, tendré que dar una lista.

  1. Actualmente no existe un buen libro que reúna lo que se conoce en los métodos formales y muestra cómo se puede usar la disciplina en la práctica para producir software real. Lo que existe actualmente es una colección de libros bastante fragmentarios, cada uno de los cuales trata con una herramienta específica aislada, principalmente con ejemplos de juguetes. Algunos no dan ejemplos en absoluto. +
  2. Actualmente no hay buenos libros que traten sobre metodologías de programación (programación extrema, cascada, etc.), nuevamente como una caja de herramientas desde la cual puede seleccionar herramientas. Por el contrario, hay muchos libros especializados que tratan sobre el estado del arte en una instantánea en el tiempo de un método específico. Para mí, esto es casi lo mismo que obtener un manual sobre cómo usar una llave inglesa, sin manuales sobre cómo construir un kart o reparar un automóvil.
  3. Hay muchos libros sobre cómo usar cualquier lenguaje de programación individual, pero casi nada sobre cuándo usarlos y absolutamente nada (más allá del elemento ocasional de preguntas frecuentes) sobre programación multilingüe y las restricciones impuestas por ABI estandarizados y suposiciones de paradigma. .
  4. Hay libros sobre las tres categorías principales de programación paralela (SIMD, MIMD, MISD) y las cuatro arquitecturas principales (estrechamente acopladas, clúster, cuadrícula, distribuidas), pero nuevamente son solo herramientas en la caja de herramientas y no hay información sobre cómo combinas las herramientas para hacer algo.

+ Considero ADT y ASM como ejemplos de métodos formales. Quizás de forma más controvertida, consideraría Why3 y otros métodos de validación formales como métodos formales cuando se sigue un régimen de “programación extrema” de prueba antes de implementar.

Puede notar un tema aquí. Si miras mis preguntas, notarás que el tema aparece ocasionalmente allí también. Lo mismo con mi blog externo. Si escribiera un solo libro que abordara todos los aspectos del tema para el desarrollo de cualquier sistema lógico, independientemente del tipo, entonces necesitaría encontrar un editor dispuesto a negociar en conjuntos de varios volúmenes de miles de volúmenes de páginas con páginas de folio completas. También necesitarías invertir en un gran ejército de escritores, porque incluso si pudieras extender la vida útil lo suficiente (lo mejor que puedes hacer es 120 años), nunca podrías mantenerlo actualizado, sincronizado y completo.

Es por eso que los libros de Donald Knuth son excelentes, pero anticuados para cuando terminen. Y ni siquiera está abordando más que los fundamentos. Décadas para una de las mentes más grandes de nuestro tiempo, simplemente para producir una guía completa de estructuras de datos. En ese tiempo, hemos visto el desarrollo de estructuras de datos ontológicos (como OWL y RDF), programación orientada a aspectos, programación orientada a características, datos relacionales de objetos y probablemente algunos otros. Por definición, estos no se pueden cubrir con tanta profundidad, porque no ha tenido el tiempo para llegar a ser tan competente en todo esto como lo es en las estructuras tradicionales y las metodologías tradicionales (como los tipos de datos abstractos). De hecho, es difícil pensar en alguna forma de convertirse en un experto en todo esto y mantenerse al día con las metodologías tradicionales.

Dado que Donald Knuth está cubriendo los cimientos y teniendo en cuenta que las herramientas, los pilares construidos sobre esos cimientos, están bien cubiertos, lo que estoy buscando es Knuth II. La construcción de pisos que descansan sobre esos pilares de tal manera que pueda soportar adecuadamente una estructura real encima de ellos. Históricamente, esto refleja la forma en que progresó la arquitectura física. Estamos en el escenario de Viking Longhouse en este momento, quiero un libro que nos traiga quizás otros cuatro o cinco siglos.

Pero no me hago ilusiones sobre cuán compleja es esa tarea. El campo completo, si se dirige a este nivel, podría tomar fácilmente cuatro o cinco siglos de trabajo si se realiza de forma secuencial: elegir herramientas no es tan malo, pero su interacción está sujeta a una explosión combinatoria. Reducido, porque muchas combinaciones no son válidas, pero una explosión combinatoria no obstante.

Desearía que alguien escribiera un libro sobre programación que haga lo siguiente (y aún no existe, al menos que yo sepa):

  • Diseñado para programadores principiantes
  • Le dice con qué lenguaje de programación comenzar, no la misma respuesta que cada programador da, siendo “no importa con cuál comience”. Quiero que alguien me diga básicamente con qué idioma comenzar, ¡así que no tengo que decidir! Siempre decido por uno y me rindo y pruebo con otro porque creo que el otro podría ser mejor para mí. Si pudiera escuchar a un programador decirme con cuál comenzar, ¡no lo pensaría dos veces y sería genial!
  • Introduce el conocimiento básico del programador, como otros buenos libros para leer, qué puede hacer la programación, cómo decidir qué tipo de programación te gusta más y qué lenguajes son buenos para qué, qué aplicaciones de programación son las mejores para escribir código, etc.
  • ¡Un libro que te cuenta la trayectoria profesional! Entiendo que no todos son iguales, sino una ruta de programación general para darme una guía.
  • Explicando cómo conseguir un trabajo en la programación de una corporación. Como Google, Facebook, Microsoft, etc.
  • Me enseña el idioma inicial sobre el que escribí por primera vez, el que el autor quiere que aprenda primero, y me da instrucciones paso a paso sobre qué hacer y cómo aprenderlo, posiblemente dando tareas y desafíos para perfeccionar mis habilidades.
  • Una breve, BREVE, historia. No quiero aburrirme con charlas innecesarias por computadora. Solo brinde algunos hechos o historias interesantes aquí y allá con fines informativos.
  • ¡Me ayuda a crear algo de lo que pueda estar orgulloso! Quiero poder hacer algo genial al final del libro

Si escribe este libro, PROMETO que seré su primer cliente.

Interesante pregunta. Al mismo tiempo, puedo ser una persona muy buena y muy mala para responder esta pregunta. Eso es porque he tendido a evitar el uso de libros como herramienta en la programación. He disfrutado mucho más los MOOC y las series de videos como una forma de aprender. Sin embargo, estoy seguro de que, en muchos casos, un libro sería mejor que esas opciones debido a cómo puede elegir la información más necesaria, leerla tan rápido o completamente como sea necesario y seguir adelante.

Por esa razón, creo que agradecería que se escribiera un libro de programación sobre alguno de los siguientes: (Y si sabe que ya existe uno, puede mencionarlo en los comentarios)

  • Las mejores lecciones aprendidas de trabajar como desarrollador de software profesional.
  • Las lecciones aprendidas de la experiencia son extremadamente valiosas, y creo que siempre es bueno aprender de los éxitos y fracasos de los demás. También podría tratarse de “Consejos que desearía haber recibido antes de una carrera en software” (Una idea ligeramente diferente, pero aún en la categoría de aprender de la experiencia)
  • El futuro del campo de desarrollo de software y cómo mantenerse a la vanguardia.
    • Por supuesto, nadie puede predecir el futuro a la perfección. Sin embargo, aún sería muy valioso escuchar a un experto en el campo en el que piensan que el desarrollo de software irá en el futuro.
    • Por ejemplo, si parece que el desarrollo web está asumiendo el control, sería muy interesante e importante saberlo como persona que ingresa al campo. Sería una gran decepción para alguien pasar mucho tiempo aprendiendo una tecnología que estaba muriendo antes de comenzar a aprenderla.
  • Comenzando a programar en el siglo 21
    • El factor importante aquí es el punto de que solo están comenzando hoy. Eso significa que estarán en el campo durante muchos años en el futuro (por supuesto, si eligen seguirlo como una carrera).
    • Una gran preocupación, al menos creo, para las personas que solo comienzan a aprender hoy es “¿durará todo esto lo suficiente como para que yo pueda hacer una carrera con eso?” Por supuesto, se podría argumentar que esto podría decirse para cualquier campo, pero es particularmente cierto para el software ya que el campo es relativamente nuevo.
    • Lo más importante sería cómo aprender para que aún sea capaz de producir un trabajo significativo dentro de 30 años, lo que se relaciona con la última idea …
  • Cómo aprender a programar
    • En lugar de solo una herramienta de aprendizaje para la programación, puede proporcionar una herramienta de aprendizaje para elegir las herramientas de aprendizaje adecuadas. Parece, a través del tiempo que he pasado aprendiendo sobre programación, que aprender en este campo es bastante diferente a aprender en otros. Sería útil si un libro presentara eso de manera detallada, diciendo cómo exactamente se debe aprender la programación. Y tal vez esa forma no implique comprar otro libro y estudiarlo, pero está bien porque ya les vendió el libro que les dice cómo aprender.
    • Uno de los aspectos más importantes de esto sería cómo aprender de una manera que le permita continuar con sus habilidades básicas más de 30 años en el futuro, mientras sigue aprendiendo más tecnologías a medida que avanzan. (Por cierto, así es como se vincula con el ejemplo anterior)

    También puede ser una posibilidad que todas estas cosas se incluyan en un libro, convenientemente llamado “Software”, porque es posible que cada uno de esos temas por sí solo no sea suficiente para hacer un libro completo y significativo.

    Así que, en última instancia, el libro de programación que me encantaría ver sería “Cómo aprender a programar hoy. Consejos para durar una carrera desde mi experiencia como desarrollador de software profesional ”. Pero, por supuesto, quién sabe qué tan bien funcionaría ese libro, que es una de las razones por las que estoy en la programación y no en la escritura.

    El arte de la programación de computadoras, volúmenes 4, 5, 6 y 7.

    Donald Knuth comenzó a escribir la serie en 1962 y ha completado tres volúmenes con el cuarto publicado actualmente en incrementos. El lanzamiento del Volumen 5 está programado para 2025. Donald Knuth ya tiene 78 años, por lo que la probabilidad de que complete los cuatro volúmenes restantes es, lamentablemente, baja.

    Los volúmenes 1–3 han sido excelentes recursos de autoaprendizaje a lo largo de mi carrera. Justo el otro día tomé el volumen 1 y trabajé en algunos ejercicios más. Su estilo de escritura es claro y desarrolla las matemáticas en paralelo con la informática. Estos han sido, con mucho, los mejores libros de texto que he leído.

    “Computación cuántica para tontos”: un libro sobre los aspectos prácticos de escribir programas y usar y unir algoritmos para computadoras cuánticas, sin profundizar innecesariamente en la física (algo como lo que los libros de Scott Aaronson están haciendo para la informática teórica, pero para los programadores) .

    Actualmente tiene que aprender estas cosas de los documentos técnicos, que a menudo están dirigidos a otros científicos, y no se parecen en nada a los tutoriales de programación a los que estamos acostumbrados: no respetan el imperativo práctico (sí, el hardware aún no está allí, pero esto no debería ser un problema: todos tienen un simulador universal sentado en su escritorio).

    El pirata informático y el arquitecto o cómo equilibrar entre los dos extremos del espectro del programador, cuándo y cómo usar cada uno de ellos.

    Veo a muchas personas ser uno u otro, o elegir uno de estos “sombreros” en una situación y quedarse con él durante todo el proyecto, mientras que un poco de piratería puede acelerar el desarrollo de proyectos más empresariales y alguna estructura no funcionaría. No perjudica algunos proyectos que son solo un montón de líneas en los mismos archivos y que a veces producen un resultado esperado.

    Un libro de programación que nunca he visto es uno que describe métodos de depuración.

    En 1979, Brian Kernighan escribió esta breve declaración:

    La herramienta de depuración más efectiva sigue siendo un pensamiento cuidadoso, junto con declaraciones impresas juiciosamente colocadas.

    La depuración no parece haber cambiado mucho desde entonces. Tenemos IDE visuales y puntos de interrupción de depuración, etc., pero aún así es un poco más conveniente hacer lo que Kernighan describió.

    He estado programando por más de 30 años. Creo que ahora tengo bastante experiencia para encontrar la causa raíz de los errores y resolverlos. Pero incluso después de todo este tiempo, la depuración parece más intuición que ciencia. Nunca he visto a nadie romper la práctica de depuración en métodos y técnicas.


    Actualización: ¡Hola! ¡Encontré un libro que parece ser lo que sugerí arriba!

    Depurarlo! Encuentre, repare y prevenga errores en su código por Paul Butcher

    Los programadores profesionales desarrollan la habilidad de enfocarse infaliblemente en la causa raíz de un error. Pueden hacerlo porque han escrito mucho código con errores y luego han adquirido experiencia en la reparación. Este libro captura toda esta experiencia: úsela, y encontrará que escribe menos errores, y los que escribe serán más fáciles de cazar.

    Desearía que alguien escribiera un nuevo libro de ciencias de la computación / estructuras de datos / libro de algoritmos que aborde problemas prácticos, en algún lugar entre los libros de texto CS y los libros de lenguaje de programación / plataforma.

    Copié eso directamente una vieja pregunta mía: ¿Cuáles son algunos libros similares a Programming Pearls? Las respuestas me señalaron algunos libros, pero ninguno de ellos es como el original (1986 y luego con una segunda edición en 1999).

    Cómo hacer que los idiotas que piensan erróneamente que saben desarrollar software se callen y se vayan, idealmente, sin ninguna emoción negativa de ninguno de los extremos.