¿Cuáles son los peores libros que has leído sobre programación en C?

Solo tengo un curso de alemán en línea que no es malo en general, pero ni siquiera menciona el “goto”. Y si comienzan a suprimir ciertos aspectos de un idioma debido a razones ideológicas, no vale la pena mirar demasiado el resto de su contenido.

Lo importante de C es que no te impone. En cambio, le da la libertad que necesita en una determinada situación. Y te deja saber cuándo puedes usar eso y cuándo es mejor que lo hagas.

Y esto a veces se ve como una debilidad de C, pero en realidad es la principal fortaleza. No te limitas de ninguna manera. C nunca se interpone en tu camino, sea lo que sea que quieras hacer. Es un lenguaje que te permitirá hacer cosas terribles, pero te maneja como un adulto, no como un niño.

Entonces tiene todos los métodos para mantener limpio su código. Pero si necesita una solución goto, porque está trabajando en algo así como una máquina de estado, entonces obtiene su goto. Y las máquinas de estado son máquinas de goto. Estás saltando de un estado a otro. Eso es. Goto sencillo. No hay llamadas de subrutina en una máquina de estado. Eso es lo que significa estado. Si lo implementa así, está simulando una máquina de estados. Y eso quita la razón para usar uno.

Y si hace eso de manera diferente, su código perderá integridad, perderá gran parte de su eficiencia y no será tan fácil de entender.

Por lo tanto, si está viendo tutoriales sobre C, eche un vistazo si omiten el “goto” o si no lo hacen. Si lo hacen, no entendieron el lenguaje y toda su fuerza y ​​argumentan desde un estado de ideología, de paradigma de programación. Si entiende bien C, verá que en realidad está libre de él.

Obtienes todo el paradigma si quieres programar así. Pero no eres intimidado en uno. Y personalmente no me gusta si un idioma me maneja como un niño que tiene que ser educado.

Sé lo que hago, soy tan profesional como las personas que construyeron ese lenguaje y si quieren que el proceso educativo forme a la próxima generación de programadores, lo cual tiene que ser, lo confirmo por completo, entonces deberían tomar otro lenguaje para eso. Como Haskell o Scala o lo que sea que críen a continuación. No les gustará demasiado Python, porque nuevamente es una gran herramienta. A los maestros no les gustan las herramientas geniales. Les gustan los lenguajes que representan un cierto paradigma a la perfección, los lenguajes ideológicos, no los lenguajes prácticos.

Pero deja de lado mis herramientas profesionales. Manos fuera de mi “C”.

Necesito trabajar con ellos. Y debe buscar libros que lo manejen como adulto. “C” es una herramienta real. No es la herramienta que los maestros aman. No te educará, debes saber perfectamente lo que estás haciendo.

Para eso es: hacer una mierda. Y tu libro tiene que reflejar eso.

Constructivo: necesitas este tipo de libro:

Necesita un libro en C que primero lo ingrese en la sintaxis y la gramática y le muestre qué puede hacer con C y cómo puede hacerlo. Impacto completo con ejemplos.

Entonces debería tener un curso sobre las funciones básicas de la biblioteca y cómo usarlas, cuándo usarlas y cuándo no. Entonces ventajas y desventajas.

Y luego se le debe presentar cómo programar en C de diferentes maneras, cómo resolver problemas y cómo implementar ciertos algoritmos de manera eficiente, utilizando el paradigma de programación conocido y mostrando dónde están los beneficios y dónde están los costos.

Como un buen ejemplo para una máquina de estados. Un buen ejemplo del uso de gotos. Podrías unirte a eso con la programación de expresiones regulares. Tal vez no deberías hacerlo al principio, sino en alguna parte. Es importante hacer Para dar buenos ejemplos. “Programación por patrones” cae en esa categoría.

Como un buen ejemplo de programación imperativa. También la introducción de módulos y comenzar a encapsular datos con eso. Mantenga los datos dentro de esos módulos.

Con esa introducción a la programación de forma orientada a objetos. Ejemplo de cómo hacer una clase en C. O el colgante de eso.

El siguiente paso es hacer algunas cosas recursivas, mostrar cómo elaborar el paradigma funcional. Cómo puede trabajar con devoluciones de llamada y cómo mantener mutable al destinatario y evitar cambios de estado. Por diseño, no por la fuerza.

Y luego necesita introducir programación lógica, como lo hace Prolog. Pero en lugar de retroceder y cortar como en Prolog, debe presentarles a los estudiantes qué diferentes enfoques existen para resolver este rompecabezas. Eso no es implementable tan fácil en algo como Prolog pero fácil en “C”. Y mucho más moderno. Como el viejo algoritmo A * para resolver acertijos lógicos como ejemplo, donde Prolog fallaría miserablemente.

Y luego algunos ejemplos de operación de la máquina apiladora. Código de autocompilación, procesamiento paralelo con hilos y llamadas SIMD, OpenML y OpenCL / CUDA.

Finalmente, C como un lenguaje vinculante, donde los introduce en la canalización y la interconexión de cosas, cómo llama a los programas gráficos y bibliotecas y, por supuesto, a la programación del sistema.

Y en un capítulo adicional de ofuscación y cómo mantener su software claro y legible. Si tiene código ofuscado, cómo limpiarlo de manera eficiente.

Pero supongo que no hay ningún libro así. Pero desearía que lo fuera.

No es un libro, pero mi profesor compiló un material. Tenía muchos errores gramaticales y faltaban puntos clave de los temas. Muchos compañeros de clase enfrentan problemas debido al mal contenido del material. Utilizo libros de referencia como ANSI C o LET US C e incluso he ayudado a algunos de mis compañeros de clase con C.