¿Qué puede gustarnos del lenguaje c?

En un día como hoy el título viene que ni pintado: What’s to love
about C?
.

Por lo demás, un recordatorio de algunas de las cosas que nos proporciona
este lenguaje, que a veces descartamos demasiado rápido:

– Access to the hardware
– Guaranteed simple flow
– Clear and unambiguous
– A macro preprocessor
– Conditional compilation
– Libraries and API
– Small to tiny binaries
– Speed

Personalmente tengo una relación de amor-odio con la programación y me da pereza escribir (o retocar) programas en c, pero tampoco es algo que dejaría de lado sin más.

Algunas particularidades de C que olvidamos

Estaba terminando de leer un recomendado de Mig 21, concretamente Deep C (and C++) cuando me encuentro en la pila dependientes de publicar otro (que probablemente también encontré gracias a él): [PDF] Finding and Understanding Bugs in C Compilers que trata justamente de eso: el estándar de C es complicado y tiene sus cosillas indefinidas, intedeterminadas y (de vez en cuando) malinterpretadas. Los autores han creado Csmith, que genera programas aleatorios en C acordes con el estándar C99 y les sirve para comprobar que los compiladores (y otras herramientas) efectivamente hacen lo que tienen que hacer.

A mi, en su día cuando lo lei me recordó aquel clásico Reflections on Trusting Trust de Ken Thompson; también me sirvió para desempolvar un poco el C y recordar cosillas (en la línea que sugiere la primera presentación).

Siguiendo en esta línea, en Lo que todo programador de C debería saber sobre el “comportamiento indefinido” (se ve que es un tema que le gusta) podíamos acceder a más información en esta línea:

A Guide to Undefined Behavior in C and C++, Part 1.
A Guide to Undefined Behavior in C and C++, Part 2. Y, finalmente:
A Guide to Undefined Behavior in C and C++, Part 3.

Y, otra serie de 3:

What Every C Programmer Should Know About Undefined Behavior #1/3,
What Every C Programmer Should Know About Undefined Behavior #2/3 y, finalmente:
What Every C Programmer Should Know About Undefined Behavior #3/3.

Definitivamente, buenas lecturas para entretenerse en esta semana en la que, tal vez, tengan algún festivo más que en otras…

Para aprender C

Durante mucho tiempo cuando alguien quería aprender C el libro que le recomendaban invariablemente era el The C Programming Language de Kernighan y Ritchie. No estoy seguro de que sea el más recomendable para una aprendiz (sobre todo si a la vez tiene que aprender a programar) pero me hizo gracia ver esta loa en Programming Books, part 4: The C Programming Language.

¿Cuál recomendaría yo? Recomenbada, más bien, porque hace tiempo que nadie me pregunta por un libro para aprender C: a mi me lo recomendó un compañero profe y era el que solía decir, C: A Software Engineering Approach, de Darnell y Margolis, sin quitarle el mérito al otro. Seguramente, cualquiera que programe en C habitualmente debería leerlo también.

Aprender C en Harvard gratis

Lo vi en Learn C programming at Harvard for free.

El curso está en Computer Science 50: Introduction to Computer Science I, con sus vídeos (en flash y QuickTime), mp3, notas, transparencias…

Aunque el título tenía que ver con el C, por lo que veo en el temario, hay una mezcla de algoritmia, web, algo de seguridad…

Más sobre cadenas seguras en c

En el pasado hablamos del tema en Más cadenas seguras en C (y allí hay más enlaces).

El otro día en Sacelib: Gestión de cadenas y bloques de memoria más segura por Cisco teníamos la oportunidad de descubrir la inciativa de esta empresa, Safeclib, aunque no veo mucha información más por ahí. Habrá que echarle un ojo.