2010-02-20 5 views
5

Casi todos los libros (relativamente) nuevos sobre programación c que he visto no parecen adherirse al estándar C99, o lo cubren en un capítulo adicional. Procedente de un fondo Java, el estándar C99 hizo que la migración (bueno, todavía migrando ^^) fuera mucho más fácil para mí, y esto probablemente también se aplique a otros idiomas.¿Por qué los nuevos libros C no se adhieren al estándar C99?

Parece que C99 aún no ha llegado a la mayoría de los desarrolladores de C. ¿Pero por qué?

+0

Por favor, dé ejemplos. ¿Qué nuevos libros C estás leyendo? –

Respuesta

13

Respuesta corta: el soporte del compilador tarda en instalarse y los programadores c son conservadores y cambian de comportamiento lentamente.

+0

Para una respuesta corta, diría que es bastante buena. – ChaosPandion

+2

También un lote inteligente, y no absorbido :) –

3

El riesgo de cambiar a un nuevo compilador en una base de código existente generalmente se desconoce, pero puede ser bastante doloroso, es mejor cambiar solo cuando tienes meses para eliminar cualquier error o cambio. Y para bases de código realmente antiguas, a veces es mejor no cambiar nunca.

Yo estaría dispuesto a apostar que la mayoría de los proyectos que utilizan C no están dispuestos a cambiar a C99 en absoluto, ya que no hay casi ninguna ventaja para una gran base de código existente y un poco de potencial inconveniente. Trabajé en una gran casa de software que verificaba los compiladores en el árbol fuente al lado del código y nunca compiladores de conmutadores para un producto.

+0

¿Pero qué compiladores usan para compilar esos compiladores registrados? :-) –

+0

@R: los compiladores eran registros binarios, no registros de origen. –

11

Sospecho que es principalmente porque MSVC no intenta soportar C99, y es muy probable que nunca lo haga. Hay algunos compiladores integrados en el mismo barco, pero apenas son lo suficientemente comunes como para importar mucho de forma individual. AFAIK todos los demás al menos están intentando implementar C99 tanto como sea posible.

No hay muchas razones en la práctica para no usar las funciones seleccionadas de C99, pero si va a aprender y escribir en un estándar C, y solo uno, entonces debe ser C89.

Además, probablemente sea bastante difícil y confuso escribir un texto introductorio en C que comienza diciendo "OK, hay dos estándares diferentes, y voy a usar tres colores de texto diferentes: uno para C89, uno para C99, y uno para ambos ". Probablemente también sea más difícil escribir sobre C99 para todo un libro, y luego "retomar" mucho de lo que dijo en un apéndice sobre C89, que escribir sobre C89 y luego agregarlo en un apéndice sobre C99. .

Todas las especulaciones, sin embargo. Realmente tendría que preguntarle a los autores de los libros que está leyendo (o quizás en algunos casos ir contra todos sus instintos de programación, y lea el prólogo ;-))

+0

No me gusta el argumento de que si solo va a aprender y escribir en un estándar, debe ser C89. gcc admite la generación de código para casi cualquier plataforma de cualquier relevancia posible, entonces ¿por qué no usar el estándar moderno, C99? –

+1

@R. Si tienes una mejor explicación, adelante. No digo que todas esas personas sean * sensatos * para usar el compilador de Microsoft para C, solo digo que hay suficientes para influir. Cuando me puse a escribir "código C portátil", no he tenido la opción de decirle a ciertos clientes que cambien compiladores, o que compile mis bits por separado del resto de su proyecto. Así que he usado C89. Es un poco como tener que escribir páginas web que funcionen en IE6; hay mucho beneficio en decirle a una proporción de su público que son idiotas. Al menos C89 no es realmente horrible. –

Cuestiones relacionadas