C++ es un lenguaje imperativo orientado a
objetos derivado del C. En realidad un superconjunto de C, que nació para
añadirle cualidades y características de las que carecía. El resultado es que
como su ancestro, sigue muy ligado al hardware subyacente, manteniendo una
considerable potencia para programación a bajo nivel, pero se la han añadido
elementos que le permiten también un estilo de programación con alto nivel de
abstracción. Estrictamente hablando, C no es un subconjunto de C++; de hecho es
posible escribir código C que es ilegal en C++. Pero a efectos prácticos, dado
el esfuerzo de compatibilidad desplegado en su diseño, puede considerarse que
C++ es una extensión del C clásico. La definición "oficial" del
lenguaje nos dice que C++ es un lenguaje de propósito general basado en el C,
al que se han añadido nuevos tipos de datos, clases, plantillas, mecanismo de
excepciones, sistema de espacios de nombres, funciones inline, sobrecarga de operadores, referencias, operadores para manejo de memoria
persistente, y algunas utilidades adicionales de librería (en realidad la librería Estándar C es un subconjunto de la librería
C++)
El comité para el estándar ANSI C fue formado en 1983 con el
objetivo de crear un lenguaje uniforme a partir del C original, desarrollado
por Kernighan y Ritchie en 1972, en la ATT. Hasta entonces el estándar lo
marcaba el libro escrito en 1978 por estos dos autores1. El lenguaje C++ se
comenzó a desarrollar en 1980. Su autor fue Bjarne
Stroustrup, también de la
ATT. Al comienzo era una extensión del lenguaje C que fue denominada C with
classes. Este nuevo lenguaje comenzó a ser utilizado fuera de la ATT en 1983. El
nombre C++ es también de ese año, y hace referencia al carácter del operador
incremento de C (++). Ante la gran difusión y éxito que iba obteniendo en el
mundo de los programadores, la ATT comenzó a estandarizarlo internamente en 1987. En 1989 se formó un comité ANSI (seguido algún
tiempo después por un comité ISO) para
estandarizarlo a nivel americano e internacional. En la actualidad, el C++ es
un lenguaje versátil, potente y general. Su éxito entre los programadores
profesionales le ha llevado a ocupar el primer puesto como herramienta de
desarrollo de aplicaciones. El C++ mantiene las ventajas del C en cuanto a
riqueza de operadores y expresiones,
flexibilidad, concisión y eficiencia. Además, ha eliminado algunas de las
dificultades y limitaciones del C original. La evolución de C++ ha continuado
con la aparición de Java, un
lenguaje creado simplificando algunas cosas de C++ y añadiendo otras, que se
utiliza para realizar aplicaciones en Internet. Hay que señalar que el C++ ha
influido en algunos puntos muy importantes del ANSI C, como por ejemplo en la
forma de declarar las funciones, en los punteros a void, etc. En efecto, aunque
el C++ es posterior al C, sus primeras versiones son anteriores al ANSI C, y
algunas de las mejoras de éste fueron tomadas del C++. C++ es a la vez un
lenguaje procedural (orientado a algoritmos) y orientado a objetos. Como
lenguaje procedural se asemeja al C y es compatible con él, aunque ya se ha dicho
que presenta ciertas ventajas. Como lenguaje orientado a objetos se basa en una
filosofía completamente diferente, que exige del programador un completo cambio
de mentalidad. Las características propias de la Programación Orientada a
Objetos (Object Oriented Programming, u OOP) de C++ son modificaciones mayores
que sí que cambian radicalmente su naturaleza.
Antes, mencionar que tanto C como C++ son lenguajes compilados, y no
interpretados. Esta diferencia es muy importante, ya que afecta mucho a muchos
aspectos relacionados con la ejecución del programa. En un lenguaje
interpretado, el programa está escrito en forma de texto, es el propio programa
fuente. Este programa fuente es procesado por un programa externo, el
intérprete, que traduce el programa, instrucción a instrucción, al tiempo que
lo ejecuta. En los lenguajes interpretados no existen programas ejecutables
directamente por el ordenador. El intérprete traduce, en tiempo real, cada
línea del programa fuente, cada vez que se quiere ejecutar el programa. El los
lenguajes compilados el proceso de traducción sólo se hace una vez. El programa
compilador toma como entrada el código fuente del programa, y da como salida un
fichero que puede ser ejecutado por el ordenador directamente. Una vez
compilado, el programa ejecutable es autónomo, y ya no es necesario disponer
del programa original ni del compilador para ejecutarlo. Cada opción tiene sus
ventajas e inconvenientes, y algunas características que son consideradas una
ventaja, pueden ser un inconveniente en ciertas circunstancias, y viceversa.
§ Los lenguajes interpretados son
fácilmente modificables, ya que necesitamos tener el el código fuente
disponible en el ordenador. En los compilados, estos ficheros no son
necesarios, una vez compilados.
§ Los lenguajes interpretados necesitan
un programa externo, llamado intérprete o a veces máquina virtual, o framework.
Este programa actua como intermediario entre el fuente y el sistema operativo.
En los compilados ese papel lo desempeña el compilador, pero al contrario que
con el intérprete, una vez ha hecho su trabajo, no es necesario que esté
presente para ejecutar el programa.
§ Estas dos características, lógicamente,
hacen que los programas compilados requieran menos espacio de memoria que los
interpretados (si contamos el espacio usado por el intérprete), y en general,
los compilados son más rápidos, ya que sólo se compilan una vez, y el tiempo
dedicado a esa tarea no se suma al de ejecución.
Entre los lenguajes interpretados están: BASIC (Código
de instrucciones de propósito general para principiantes), Java, PHP. Muchos lenguajes de
script, etc. Entre los lenguajes compilados están: C, C++, Pascal.
¿Qué clase de programas y aplicaciones se pueden crear
usando C y C++? La respuesta es muy sencilla: TODOS. Tanto C como C++ son
lenguajes de programación de propósito general. Todo puede programarse con
ellos, desde sistemas operativos y compiladores hasta aplicaciones de bases de
datos y procesadores de texto, pasando por juegos, aplicaciones a medida, etc.
Un
ejemplo de código
Este es el clásico programa hola mundo, la idea está
centrada en el nacimiento de un nuevo programa de manos de su creador.
#include <iostream.h>;
using std;
int main()
{
cout<<"Hola mundo"<<endl;
return 0;
}
No hay comentarios:
Publicar un comentario