Posteriormente se añadieron facilidades de programación genérica que se sumó a los otros dos paradigmas que ya estaban admitidos (programación estructurada y la programación orientada a objetos)
Sus características de lenguaje ++ es: Aprovechando que ayer Google lanzó Dar, su nuevo lenguaje de programación, quizás hoy sea un buen momento en Historia de la Tecnología para hablar de uno de los lenguajes de programación más importantes y que sigue siendo materia de estudio en muchas Universidades y Escuelas de Ingeniería del mundo: el lenguaje de programación C.
El lenguaje C es fruto de un lenguaje de programación anterior, el lenguaje B, desarrollado por Ken Thompson, en los Laboratorios Bell en 1970, con la idea de decodificar el sistema operativo UNIX que, hasta esa fecha, se programaba directamente en ensamblador, con el inconveniente de estar vinculado a máquinas concretas (según el juego de instrucciones de cada máquina). Por tanto, se hacía necesario un lenguaje que permitiese al programador abstraerse de la capa hardware y conseguir una mayor portabilidad del código, algo que se realizó en B (basándose en el BCPL de Martin Richard de 1967).
Poco más tarde, también en los Laboratorios Bell, se pone a trabajar en el diseño de un nuevo lenguaje de programación basado en el lenguaje B de Ken Thompson y al que aportó tipos y estructuras de datos que consiguiesen clarificar la programación y obtener un lenguaje mucho más eficiente, así nació el lenguaje de programación C. Rinche diseñó, desde 1970 a 1972 junto a Brian Jeringan, un lenguaje que permitía realizar una programación estructurada en la que se podían economizar las expresiones a usar y con el que los desarrolladores podrían contar con un buen conjunto de operadores y tipos de datos para programar tanto en alto como en bajo nivel de manera simultánea. Ente sus características:
§ Núcleo de lenguaje simple que incluye funciones matemáticas y de manejo de archivos proporcionadas por bibliotecas
§ Lenguaje flexible que permitía programar de manera estructurada y no estructurada
§ Inclusión de un sistema de tipos que impedía la realización de operaciones sin sentido
§ Acceso a memoria de bajo nivel mediante el uso de punteros
§ Conjunto reducido de palabras reservadas
§ Paso de parámetros a funciones por valor
§ Tipos de datos agregados (trust) que permitían combinar, bajo un mismo tipo, datos de tipos distintos y manejarlos como uno solo.
El lenguaje C ofrecía diversos tipos de datos: “CHAR” (carácter), “INT” (enteros), “FLOAT” (números reales en precisión simple), y “DOUBLE” (números reales en precisión doble) a los que posteriormente se añadieron los tipos “SHORT” (números enteros de tamaño menor a un INT), “LONG” (números enteros de tamaño mayor a un INT), “UNSIGNED” (Enteros sin signo), y “ENUMERACIONES” que junto a las estructuras, las uniones y las tablas y matrices componían un variado juego de tipos de datos con los que abordar múltiples problemas.