Historia del lenguaje C

Año estándar C
1972 El nacimiento de una lengua
1978 K & R C
1989 ANSI C (C89)
1990 ISO C (igual que C89)
1999 C99
2011 C11
2017 C17 (corregido C11)
2018 C18 (igual que C17)

El lenguaje de programación C fue desarrollado entre 1969 y 1973 en Bell Labs . Según Ritchie , el período más activo de creatividad se produjo en 1972 . El idioma se llamó "C" (C es la tercera letra del alfabeto inglés ) porque muchas de sus características se originan en el antiguo idioma " B " (B es la segunda letra del alfabeto inglés). Hay varias versiones diferentes del origen del nombre de la lengua bi. Ken Thompson apunta al lenguaje de programación BCPL , pero también existe el lenguaje Bon , también creado por él. Ritchie sugiere que el nombre del idioma puede haber sido derivado del nombre de la esposa de Thompson, Bonnie [1] .

Para 1973, el lenguaje C se había vuelto lo suficientemente fuerte como para que la mayor parte del kernel de UNIX , originalmente escrito en ensamblador PDP-11 /20, fuera reescrito en C. Fue uno de los primeros núcleos del sistema operativo escrito en un lenguaje distinto al ensamblador; antes eran solo Multics (escrito en PL/1 ) y TRIPOS (escrito en BCPL).

Razones para el desarrollo

Existen varias leyendas respecto al desarrollo de C y su relación con el sistema operativo UNIX , entre ellas las siguientes:

Según una leyenda, el desarrollo de C fue el resultado del hecho de que sus futuros autores amaban un juego de computadora como el popular juego Asteroids (Asteroides)[ fuente? ] . Llevaban mucho tiempo jugándolo en el servidor principal de la compañía , que no era lo suficientemente potente y debía dar servicio a un centenar de usuarios. Thompson y Ritchie sintieron que carecían de control sobre la nave espacial para evitar golpear algunas de las rocas. Así que decidieron portar el juego a un PDP-7 gratuito en la oficina. Sin embargo, esta computadora no tenía un sistema operativo , lo que los obligó a escribir uno. Al final, decidieron portar este sistema operativo a la oficina PDP-11 , lo cual fue muy difícil, porque su código estaba íntegramente escrito en ensamblador . Se sugirió usar algún tipo de lenguaje portátil de alto nivel para que el sistema operativo pudiera transferirse fácilmente de una computadora a otra. El lenguaje B, que originalmente querían usar para esto, se vio privado de la funcionalidad que podría usar las nuevas características del PDP-11. Por lo tanto, se decidieron por el desarrollo del lenguaje C.

Hay otra leyenda. La primera computadora para la que se escribió originalmente UNIX estaba destinada a ser un sistema automático de llenado de documentos. La primera versión de UNIX fue escrita en lenguaje ensamblador. Más tarde, para reescribir este sistema operativo, se desarrolló el lenguaje C.[ fuente? ] .

K&R C

En 1978, Brian Kernighan y Dennis Ritchie publicaron la primera edición de El lenguaje de programación C. Este libro, conocido por los programadores como "K&R", sirvió durante muchos años como una especificación de lenguaje informal. La versión del lenguaje C que se describe en él a menudo se denomina "K&R C". La segunda edición de este libro trata sobre el estándar ANSI C más reciente , que se describe a continuación.

K&R introdujo las siguientes funciones de lenguaje:

K&R C a menudo se considera la parte más importante del lenguaje que debe admitir un compilador de C. Durante muchos años, incluso después del lanzamiento de ANSI C, se consideró el nivel mínimo al que los programadores deberían adherirse si querían lograr la máxima portabilidad de sus programas, porque no todos los compiladores eran compatibles con ANSI C, y también se necesitaba un buen código K&R C. cierto para ANSI C.

Desde la publicación de K&R C, se han agregado varias funciones al lenguaje, respaldadas por compiladores de AT&T y algunos otros fabricantes:

Estándares lingüísticos

ISO C

A fines de la década de 1970, C comenzó a suplantar a BASIC como el lenguaje principal para la programación de microcomputadoras . Fue adaptado para su uso en la PC de IBM en la década de 1980 , lo que llevó a un aumento dramático en su popularidad. Al mismo tiempo, Björn Stroustrup y otros en Bell Labs comenzaron a trabajar para agregar capacidades de programación orientada a objetos a C. El lenguaje que finalmente crearon, C++ , tuvo un gran impacto en el desarrollo de software, pero nunca alcanzó la popularidad de [2] C, especialmente en sistemas tipo UNIX.

En 1983, el Instituto Nacional Estadounidense de Estándares (ANSI) formó un comité para desarrollar una especificación estándar para C. Al final de este largo y difícil proceso, en 1989 finalmente se aprobó como el "Lenguaje de Programación C" ANSI X3.159-1989 . Esta versión del lenguaje se llama ANSI C o C89. En 1990, la norma ANSI C fue adoptada con modificaciones menores por la Organización Internacional de Normalización (ISO) como ISO/IEC 9899:1990 .

Uno de los objetivos de este estándar era desarrollar un superconjunto de K&R C, incorporando muchas de las características del lenguaje que se crearon más tarde. Sin embargo, el comité de estándares también incluyó varias características nuevas, como prototipos de funciones (tomados de C++) y un preprocesador más sofisticado .

ANSI C ahora es compatible con casi todos los compiladores existentes. Casi todo el código C escrito en tiempos recientes se ajusta a ANSI C. Se garantiza que cualquier programa escrito solo en C estándar se ejecutará correctamente en cualquier plataforma que tenga una implementación C adecuada. Sin embargo, la mayoría de los programas están escritos de tal manera que solo se compilarán y ejecutarán en una plataforma en particular porque:

  1. utilizan bibliotecas no estándar , por ejemplo para pantallas gráficas;
  2. utilizan herramientas específicas de la plataforma;
  3. están diseñados para un cierto valor del tamaño de algunos tipos de datos o para una cierta forma de almacenar estos datos en la memoria para una plataforma en particular.

C99

Después de ser estandarizado en ANSI, la especificación del lenguaje C se mantuvo relativamente sin cambios durante mucho tiempo, mientras que C++ siguió evolucionando (en 1995, la Primera Enmienda Normativa introdujo el estándar C, pero casi nadie lo reconoció). Sin embargo, la norma fue revisada a fines de la década de 1990 , lo que condujo a la publicación de la norma ISO 9899:1999 en 1999 . Este estándar se conoce comúnmente como "C99". En marzo de 2000, ANSI lo adoptó y adaptó.

Algunas características nuevas de C99:

C11

El 8 de diciembre de 2011 se publicó un nuevo estándar para el lenguaje C (ISO/IEC 9899:2011) [3] . Principales cambios:

C18

Se presentó una versión preliminar de la norma como C17 (ISO/IEC 9899:2017) en 2017 [4] . En junio de 2018, el estándar se publicó como C18 (ISO/IEC 9899:2018) [5] [6] . El nuevo estándar elimina los defectos vistos en la versión anterior sin agregar nuevas características. Los nombres C17 y C18 suelen denominarse sinónimos [6] .

Notas

  1. Ritchie D. M. El desarrollo del lenguaje C. Apartados "Introducción" e "Historia: la ambientación".
  2. Índice de la comunidad de programación de abril de 2012 . Consultado el 2 de febrero de 2019. Archivado desde el original el 2 de julio de 2013.
  3. ISO/IEC 9899:2011 - Tecnología de la información - Lenguajes de programación - C . Consultado el 2 de febrero de 2019. Archivado desde el original el 27 de diciembre de 2011.
  4. ISO/CEI. ISO/IEC9899:2017 . Lenguajes de programación - C (enlace no disponible) (2017) . Consultado el 2 de febrero de 2019. Archivado desde el original el 24 de octubre de 2018. 
  5. ISO/IEC 9899:2018 - Tecnología de la información - Lenguajes de programación - C . www.iso.org . Consultado el 2 de febrero de 2019. Archivado desde el original el 10 de agosto de 2018.
  6. ↑ 1 2 Uso de la colección de compiladores GNU (GCC):  opciones de dialecto C . gcc.gnu.org. Consultado el 3 de diciembre de 2018. Archivado desde el original el 26 de marzo de 2014.

Literatura