2011-12-12 16 views
16

Estoy aprendiendo C; Han pasado años y, aunque familiares, los matices se pierden a tiempo.Es "K & R C" todavía aplicable

Originalmente aprendido C de K & R. Sin embargo, ahora veo muchas personas nivelación crítica en K & R.

Un ejemplo principal es http://c.learncodethehardway.org/book/learn-c-the-hard-waych55.html#x61-27200055

Principales razones parecen ser que es de código el estilo es demasiado escueto, las prácticas no son aplicables en programas más grandes y conducen a fugas de memoria o están sujetas a ataques en sistemas compartidos de red accesible.

¿Las personas sienten que estas críticas son justas? ¿Le importan a alguien que está aprendiendo C? Si es así, ¿podría la gente recomendar un libro "moderno" C, preferiblemente disponible para Kindle?

+3

Más que nada, K & R es anterior a la estandarización del lenguaje, y es de una época en que el panorama de la computadora se veía bastante diferente. Puede ser una segunda lectura agradable, pero tal vez haya mejores libros para aprender correctamente, moderna C. –

+1

Voté para cerrar porque es subjetiva, pero solo FYI dejé de leer después de ver que la primera crítica se puede resumir como "esta función causará problemas si pasa parámetros no válidos ". Si crees que es un "defecto", debes cambiar a Java. – Jon

+0

@Kerrek SB - K & R 2nd. Ed. cubre el estándar C89. –

Respuesta

15

Mientras esté hablando de la 2da Edición, K & R sigue siendo muy relevante.

De hecho, diría que sigue siendo el mejor libro individual en C, tanto para aprendizaje como para referencia.

Dicho esto, también debe obtener una copia de Harbison & Steele "C: A Reference Manual". Es la mejor referencia actual en C, y la Quinta Edición cubre C99, que debe usar si puede.

Además, una vez que tienes un poco de C detrás de ti, recomiendo leer "Programación de Expert C", de Peter van der Linden.

+0

¿Qué hay de C11? ¿No hay ningún libro sobre eso? – Pacerier

+0

Bueno, K & R 2nd Ed. sigue siendo aplicable a C11, pero no, no conozco ningún libro que cubra C11."C: A Reference Manual (5th Edition)" de Harbison & Steele es el libro más actualizado que conozco, pero solo cubre C99. Todavía estoy esperando un sexto Ed. –

+0

Wikipedia escribe para [DragonFly BSD] (https://en.wikipedia.org/wiki/DragonFly_BSD) "Al igual que FreeBSD y OpenBSD, los desarrolladores de DragonFly BSD están reemplazando lentamente el código C de estilo de K & R con equivalentes más modernos, ANSI". ¿Esto significa que gran parte del código de Kernel para las implementaciones de BSD Linux es anterior a C89? –

2

Todavía es relevante y sigue siendo muy útil con respecto al aprendizaje del idioma. Aprender el idioma no requiere que implemente nuevas prácticas o estilos que ayuden en la legibilidad del código, etc.

Por ejemplo, la idea del código de auto documentación es que use variables detalladas y nombres de funciones para ayudar a explicar el propósito de una función o una variable. K & R se opone claramente a esto. Eso no significa que no pueda aprender el lenguaje C de K & R, simplemente significa que su estilo deberá ajustarse/actualizarse según la convención de nomenclatura que decida en el futuro.

No puedo recomendar "Expert C Programming" suficiente (según lo indicado por gregj).

+0

después de cambiar de C y ensamblador utilizo principalmente C++ y Java, así que creo que puedo aplicar algunas de las buenas prácticas genéricas de esos. ¿Podría sugerir referencias de buenas prácticas específicas de C o los libros que Gregory sugerirían lo cubren? – retrodev

+0

Señor, estoy confundido Aquí, no soy hablante nativo de inglés, ¿qué significa "No puedo recomendar el libro lo suficiente". significa, ¿sugieres Programación Expert C o no? –

+0

@SurajJain Sí, esa frase significa que no tengo suficientes formas de recomendar el libro. –

Cuestiones relacionadas