Mostrando entradas con la etiqueta Generalidades sobre C. Mostrar todas las entradas
Mostrando entradas con la etiqueta Generalidades sobre C. Mostrar todas las entradas

K&R

2009/12/06
Navegando me encontré con un libro fundamental que, lo juro, nunca he tenido en las manos. Hasta ahora.

Yo conocí C mediante mis apuntes de otros lenguajes y de pequeños manuales en la red -como éste blog-, y de fotocopias de un libro arcaico y poco claro de Herbert Schildt. Pero para conocer el lenguaje sin más esperas, al ritmo que a cada uno le convenga, y sobre todo, explicado por los autores (Ritchie es  un grande entre los grandes de esta ciencia), nada mejor que el libro.






Gracias a la web LuChOeDu, que lo pone al alcance de todos.

Estandarización

2009/06/11


Por muchos años, el estándar para C fue el llamado K&R (por las iniciales de Kernighan y Ritchie), debido al libro que contenía las "especificaciones primigenias" del lenguaje. Sin embargo, con el tiempo aparecieron cambios no oficiales que no se encontraban documentados por el estándar K&R.

Tal situación suponía una pérdida de la portabilidad del código de los programas, así que las acciones por evitar esto vinieron por parte de un grupo de vendedores de compiladores y de desarroladores de software, quienes en 1983 pidieron al Instituto Nacional Estadounidense de Estándares (ANSI, por sus siglas en inglés) crear un estándar para el lenguaje.
El instituto aprobó la petición, formó un comité técnico y trabajo en ello. El resultado: a finales de 1989 se aprobaba el estándar ANSI C, también llamado C89 y C90.

Se ofrecían mejoras al K&R, como el grupo de funciones comunes que pasó a ser la librería estándar. Ahora todos los compiladores de C deben de soportar esta librería, junto con especificaciones del propio compilador.

Porteriormente, se adaptaría de nuevo una estandarización sobre el ANSI C, esta vez llamado C99.

Otras generalidades

2009/06/06
C es un lenguaje estructurado

Es decir, utiliza bloques. Un bloque es un conjunto de sentencias relacionadas. La idea de subrutinas y variables locales sólo puede ser posible en un lenguaje estructurado.

Incluso es factible compilar por separado las rutinas, sin necesidad de que formen parte del programa -pero pudiéndose referenciar. Y es ése el concepto de librería-, de tal manera que se puedan crear librerías con funciones útiles a las que se puedan acceder desde cualquier otro programa por escribir.



Compilador

A diferencia de los lenguajes interpretados, en C es un compilador el que genera el código objeto (también código binaro, o código máquina: ceros y unos, pues) a partir del código fuente. Esto es: traducir de una vez y para siempre las instrucciones del programador, entendibles por el humano, a instrucciones que el ordenador ejecute. Después de esto, el código fuente no tiene relevancia sobre la ejecución de un programa, pudiéndose alterar sin consecuencias para el código objeto.

A menudo se utilizan los términos tiempo de compilación y tiempo de ejecución. Se refiere a tiempo de compilación cuando se trata de procesos que ocurren al compilar (normalmente, cuando el compilador revela errores sintácticos u otros). Se refiere a tiempo de ejecucuón al tratarse de lo que ocurra cuando el programa se está ejecutando (y es aquí cuando es posible distinguir fallos lógicos en el programa).



Para investigar:

-Lenguaje estructurado y lenguaje interpretado
-Intérprete y compilador

C como lenguaje de medio nivel

2009/06/04
  • Que C se considere como un lenguaje de medio nivel no quiere decir que sea peor, poco útil o menos poderoso que los de alto nivel. Nada más lejos del significado real de la expresión.
  • "Medio nivel" significa, por un lado, que es similar a los lenguajes de bajo nivel (ensambladores), por lo menos como representaciones simbólicas (instrucciones) del auténtico código máquina (ceros y unos), y por el otro lado, que contiene elementos de un lenguaje de alto nivel (estructuras de control, de decisión, etc).
  • Básicamente, un lenguaje de bajo nivel es el que está orientado especialmente a una máquina en particular (un procesador en específico, por ejemplo), mientras un lenguaje de alto nivel está orientado al programador, facilitando la lectura y comprensión del código, casi como leer en inglés. Asímismo, la portabilidad entre plataformas es -más o menos- proporcional al nivel del lenguaje empleado.

Para investigar:

-Lenguaje de medio nivel
-Lenguaje ensamblador
-Portabilidad