Introducción al C.
1. Objetivos de este documento.
El objetivo principal de este documento es dar al principiante una idea de lo que es programar en C/C++. Es por ello que el nivel de este es bajísimo y he tratado de seleccionar símiles y palabras sencillas para ilustrar las ideas de forma que, hasta el mas lego en la materia, por excasos que sean sus conocimientos y/o su edad, sea capaz de entender lo que en el se expone con un mínimo esfuerzo.
Este documento ha sido desarrollado con el fín de cubrir una sección en el curso GNU-C organizado a partir de la lista de correo de SLUG y que ahora cuenta con su propia lista de correo en [lista gnu-c].
Para cualquier comentario (por favor, abstenganse del estilo de "tu introducción es una m*erda" que no llevan a ninguna parte), pueden dirigirse a mi dirección de correo electrónico (marauder@galaxycorp.com).
2. Brevísima historia del C.
La história del lenguaje C está fuertemente ligada a los sistemas operativos Unix. Este sistema fue desarrollado con al intención de ser fácil de utilizar por los programadores. Con esta idea, a finales de los 60 principios de los 70, Ken Thompson, un programador de sistemas de los Laboratorios Bell, desarrolla el lenguaje B, el cual sería el precursor del C. Habitualmente se citan cuatro lenguajes que se entienden fueron los antepasados del C actual: Algol68, CPL, BCPL y B. No nos detendremos en su estudio mas profundo porque no es objeto de este documento.
Finalmente, en 1.972, Dennis Ritchie, también de Laboratorios Bell, desarrolla el primer lenguaje C. La idea es mantener la simplicidad al tiempo que no se pierde el contacto con la máquina. C es por ello un lenguaje de bajo nivel (hay controversia en este aspecto, algunos autores hablan de lenguaje de medio nivel), por su cercanía al hardware que no está tan presente en otros lenguajes.
El C tiene sus detractores, como no podía ser de otra manera, sin embargo lo que nadie puede negar es que es uno de los lenguajes de programación mas extendidos (hay quién afirma que el que mas). Además, la historia del C está tremendamente ligada a la de los sistemas operativos UNIX y, por tanto, la mayor parte del software desarrollado para dichos sistemas está hecho en C.
3. Compiladores C.
Un compilador es un programa que traduce las instrucciones del código fuente (el que nosotros introducimos, en este caso en Lenguaje C) por otras en lenguaje máquina (el que entiende el ordenador).
Compiladores C existen para todas las plataformas (o al menos el escribiente a la fecha de redactar este pequeño artículo desconoce alguna para la que no exista compilador). Existen varias compañías que desarrollan compiladores C, entre ellas Borland, Watcom, Micro$oft... sin embargo, uno de los compiladores C que ha recibido mejor crítica ha sido el GNU C (gcc), que aparte de ser totalmente gratuito, tiene sus fuentes a disposición del público bajo licencia GNU. El gcc es el compilador que se empleará a lo largo de este curso. En principio carece de un front-end propio agradable como pueda ser el IDE de Borland, sin embargo existen alternativas como el WPE o el XWPE que proporcionan una interface clónica de la de los compiladores Borland y son configurables para emplearlos con otros compiladores. El utilizar o no uno de estos front-ends dependerá en gran medida de los gustos personales de cada programador, en mi caso particular me permitiré utilizarlo ;-).
4. Depuradores.
Un depurador es un programa que nos ayuda a eliminar errores de nuestro código que no se detectan en tiempo de ejecución. Sea como sea el caso es que se utilizan muchas veces mas tiempo que el propio compilador a lo largo de un proyecto.
Archiconocidos son los depuradores de Borland para los programadores bajo DOS o bajo Windows. En LiNUX disponemos de uno especialmente barato y eficiente, el GNU Debuger (gdb), mas barato imposible... ;-) También "adolece" de un front-end integrado, sin embargo esta carencia se suple con creces con el xgdb o el ddd, ambos basados en X y que ofrecen una interface de depuración cómoda hasta mas no poder. En mi caso me quedo con el ddd.
5. C o C++?
C++ se define en ocasiones como un C mas avanzado, implementa un sistema de programación orientada a objetos que, al parecer, no es del gusto de todo el mundo pero aún así se utiliza bastante. Mención merece el Objetive-C, otra implementación de C orientado a objetos que, al parecer, hace las delicias de unos cuantos aunque es menos conocido entre "el populacho". El escribiente nunca hizo nada en Objetive-C así que se abstiene de opinar ni de concretar mas en el asunto.
Y con esto termino esta pobre introducción al curso GNU-C deseando suerte al personal y esperando que todos aprendamos mucho, y pinchando un poquito para ver si salimos adelante, "carayo" ;-)
Salud.
MaraudeR+