Adventik es una agencia digital de servicio completo. §1 Información general sobre la lengua. Etapas del diseño del programa. Apareció el lenguaje C del modelo de ciclo de vida de la aplicación.

lenguaje de programación c++

Última actualización: 28/08/2017

El lenguaje de programación C++ es un lenguaje de programación compilado de alto nivel. propósito general tipado estáticamente, que es adecuado para crear la mayoría varias aplicaciones. Hoy en día, C++ es uno de los lenguajes más populares y extendidos.

Tiene sus raíces en el lenguaje C, que fue desarrollado entre 1969 y 1973 en los Laboratorios Bell por el programador Dennis Ritchie. A principios de la década de 1980, el programador danés Bjarne Stroustrup, que entonces trabajaba en Bell Labs, desarrolló C++ como una extensión del lenguaje C. De hecho, al principio, C++ simplemente complementaba el lenguaje C con algunas capacidades de programación orientada a objetos. Y es por eso que el propio Stroustrup inicialmente lo llamó "C con clases".

Después nuevo idioma comenzó a ganar popularidad. Se le agregaron nuevas características que lo convirtieron no solo en una adición a C, sino en un lenguaje de programación completamente nuevo. Como resultado, "C con clases" pasó a llamarse C++. Y a partir de entonces, ambas lenguas comenzaron a desarrollarse de forma independiente la una de la otra.

C++ es un lenguaje poderoso que hereda ricas capacidades de memoria de C. Por lo tanto, C++ a menudo se utiliza en la programación de sistemas, en particular, al crear sistemas operativos, controladores, diversas utilidades, antivirus, etc. Por cierto, el sistema operativo Windows está escrito principalmente en C++. Pero sólo la aplicación de programación del sistema. de este idioma no limitado. C++ se puede utilizar en programas de cualquier nivel donde la velocidad y el rendimiento son importantes. A menudo se utiliza para crear aplicaciones gráficas, varias programas de aplicación. También se utiliza especialmente para crear juegos con una visualización rica y rica. Además, en Últimamente La dirección móvil está ganando impulso, donde C++ también ha encontrado su aplicación. E incluso en el desarrollo web, también puede utilizar C++ para crear aplicaciones web o algunos servicios de soporte que sirvan para aplicaciones web. En general, C++ es un lenguaje muy utilizado en el que puedes crear casi cualquier tipo de programa.

C++ es un lenguaje compilado, lo que significa que el compilador traduce fuente en C++ Archivo ejecutable, que contiene un conjunto de instrucciones de la máquina. Pero las diferentes plataformas tienen sus propias características, por lo que los programas compilados no pueden simplemente transferirse de una plataforma a otra y ejecutarse allí. Sin embargo, a nivel de código fuente, los programas C++ son en gran medida portátiles a menos que se utilicen algunas funciones específicas del sistema operativo. Y la disponibilidad de compiladores, bibliotecas y herramientas de desarrollo para casi todas las plataformas comunes le permite compilar el mismo código fuente C++ en aplicaciones para estas plataformas.

A diferencia de C, el lenguaje C++ permite escribir aplicaciones en un estilo orientado a objetos, representando un programa como una colección de clases y objetos que interactúan entre sí. Lo que simplifica la creación de grandes aplicaciones.

Principales etapas de desarrollo.

En 1979-80, Bjarne Stroustrup desarrolló una extensión del lenguaje C: "C con clases". En 1983, el lenguaje pasó a llamarse C++.

En 1985 se lanzó la primera versión comercial del lenguaje C++, así como la primera edición del libro "El lenguaje de programación C++", que representó la primera descripción de este lenguaje en ausencia de un estándar oficial.

Fue lanzado en 1989. una nueva version Lenguaje C++ 2.0, que incluía una serie de novedades. Después de esto, el lenguaje se desarrolló relativamente lentamente hasta 2011. Pero al mismo tiempo, en 1998, la organización ISO (Organización Internacional de Normalización) hizo el primer intento de estandarizar el idioma. El primer estándar se llamó ISO/IEC 14882:1998, o C++98 para abreviar. Posteriormente, en 2003, se publicó una nueva versión del estándar C++03.

En 2011 se publicó nuevo estándar C++ 11, que contenía muchas adiciones y enriqueció el lenguaje C++ con una gran cantidad de funciones nuevas. Después de esto, en 2014 se lanzó una pequeña adición al estándar, también conocida como C++14. Y está previsto otro lanzamiento clave del lenguaje para 2017.

Compiladores y entornos de desarrollo.

Para desarrollar programas en C++, necesita un compilador: traduce el código fuente en C++ a un archivo ejecutable, que luego puede ejecutar. Pero por el momento existen muchos compiladores diferentes. Pueden diferir en varios aspectos, en particular en la implementación de normas. Puede encontrar una lista básica de compiladores para C++ en Wikipedia. Se recomienda para el desarrollo elegir aquellos compiladores que estén desarrollando e implementando los últimos estándares. Por lo tanto, a lo largo de este tutorial utilizaremos principalmente el compilador g++ disponible gratuitamente desarrollado por el Proyecto GNU.

También puede utilizar IDE como Visual Studio, Netbeans, Eclipse, Qt, etc. para crear programas.

¿Por qué C++?

Actualmente, C++ se considera el lenguaje dominante utilizado para desarrollar productos de software comercial. En los últimos años, este dominio ha flaqueado ligeramente debido a afirmaciones similares de un lenguaje de programación como Java, pero el péndulo de la opinión pública ha oscilado en la otra dirección, y muchos programadores que abandonaron C++ por Java recientemente se apresuraron a volver a su antiguo afecto. En cualquier caso, los dos idiomas son tan parecidos que una vez que aprendes uno, automáticamente dominas el 90% del otro.

C# es un nuevo lenguaje desarrollado por Microsoft para la plataforma de redes. Esencialmente, C# es una variación de C++ y, a pesar de una serie de diferencias fundamentales, los lenguajes C# y C++ son aproximadamente un 90% iguales. Probablemente pasará mucho tiempo antes de que C# compita seriamente con C++; pero incluso si esto sucede, el conocimiento del lenguaje C++ será una ventaja significativa.

C++ es un lenguaje de programación de propósito general. Su ámbito natural de aplicación es la programación de sistemas, entendida en el sentido amplio de la palabra. Además, C++ se ha utilizado con éxito en muchas áreas de aplicación que van mucho más allá de este ámbito. Las implementaciones de C++ ahora están disponibles en todas las máquinas, desde las microcomputadoras más humildes hasta las supercomputadoras más grandes, y prácticamente en todos los sistemas operativos.

El surgimiento y evolución del lenguaje C++.

Bjarne Stroustrup es el desarrollador del lenguaje C++ y creador del primer traductor. Es empleado del Centro de Computación de Investigación de AT&T Bell Laboratories en Murray Hill (Nueva Jersey, EE. UU.). Recibió una Maestría en Matemáticas e Informática de la Universidad de Aarus (Dinamarca) y un Doctorado en Informática de la Universidad de Cambridge (Inglaterra). Se especializa en sistemas distribuidos, sistemas operativos, modelado y programación. Junto con M. A. Ellis es el autor. guía completa para el lenguaje C++ - "Guía C++ con notas".

Por supuesto, C++ le debe mucho al lenguaje C, que sigue siendo un subconjunto del mismo. También se han conservado todas las herramientas C de bajo nivel diseñadas para resolver los problemas más urgentes de programación de sistemas. C, a su vez, le debe mucho a su predecesor, el lenguaje BCPL. El comentario del lenguaje BCPL se ha restaurado en C++. Otra fuente de inspiración fue el lenguaje SIMULA-67; De allí se tomó prestado el concepto de clases (junto con las clases derivadas y las funciones virtuales). La capacidad de C++ para sobrecargar operadores y la libertad de colocar declaraciones dondequiera que aparezca un operador recuerdan al lenguaje ALGOL-68.

A partir de 1980 se utilizaron versiones anteriores del lenguaje, llamadas "C con clases". Este lenguaje surgió porque el autor necesitaba escribir programas de simulación controlados por interrupciones. El lenguaje SIMULA-67 es ideal para esto, dejando de lado la eficiencia. El lenguaje C con clases se utilizó para grandes problemas de modelado. En ese momento, se sometieron a estrictas pruebas las posibilidades de escribir programas en él, para los cuales el tiempo y los recursos de memoria eran críticos. Este lenguaje carecía de sobrecarga de operadores, referencias, funciones virtuales y muchas otras características. C++ se lanzó por primera vez fuera del grupo de investigación del autor en julio de 1983, pero muchas de las características de C++ aún no se habían desarrollado.

El nombre C++ (C plus plus) fue acuñado por Rick Mascitti en el verano de 1983. El nombre refleja la naturaleza evolutiva de los cambios en el lenguaje C. La notación ++ se refiere a la operación de crecimiento de C. El nombre ligeramente más corto C+. es un error de sintaxis. Además, ya se ha utilizado como nombre de un idioma completamente diferente. Los expertos en semántica de C consideran que C++ es peor que ++C. El lenguaje no se llama D porque es una extensión de C y no intenta resolver ningún problema eliminando las características de C. Otra interpretación interesante del nombre C++ se puede encontrar en el apéndice de .

Inicialmente, C++ fue concebido para que el autor y sus amigos no tuvieran que programar en ensamblador, C u otros. lenguajes modernos nivel alto. Su objetivo principal es simplificar y hacer que el proceso de programación sea más agradable para el programador individual. Hasta hace poco, no existía ningún plan sobre el papel para el desarrollo de C++. El diseño, la implementación y la documentación se desarrollaron en paralelo. Nunca ha habido un "Proyecto C++" o un "Comité de Desarrollo de C++". Por tanto, el lenguaje ha evolucionado y sigue evolucionando de tal forma que supera todos los problemas que enfrentan los usuarios. Las discusiones del autor sobre todos los problemas con sus amigos y colegas también sirven como impulso para el desarrollo.

Desde la publicación de la primera edición de este libro, el lenguaje C++ ha experimentado cambios y mejoras importantes. Esto se refiere principalmente a la resolución de ambigüedades en la sobrecarga, el enlace y la gestión de la memoria. Sin embargo, se han realizado cambios menores para aumentar la compatibilidad con el lenguaje C. También se han introducido algunas generalizaciones y extensiones importantes, como herencia múltiple, funciones miembro con especificaciones estáticas y constantes, miembros protegidos, plantillas de tipos y manejo de situaciones especiales. Todas estas extensiones y mejoras tenían como objetivo hacer de C++ un lenguaje en el que se puedan crear y utilizar bibliotecas. Todos los cambios se describen en .

Otras ampliaciones introducidas entre 1985 y 1991 (como herencia múltiple, funciones miembro estáticas y funciones virtuales puras) surgieron de la generalización de la experiencia de programación en C++ y no de otros lenguajes.

Las extensiones de lenguaje realizadas durante estos seis años tuvieron como objetivo principal aumentar la expresividad de C++ como lenguaje de abstracción de datos y programación orientada a objetos en general, y como medio para crear bibliotecas de alta calidad con tipos de datos definidos por el usuario en particular.

Alrededor de 1987, se hizo evidente que el trabajo de estandarización de C++ era inminente y que el trabajo debería comenzar de inmediato.

AT&T Bell Laboratories fue uno de los principales contribuyentes a este trabajo. Un centenar de representantes de unas 20 organizaciones estudiaron y comentaron lo que se convirtió en la versión moderna. Guia de referencia y materiales de origen para la estandarización ANSI. C++. Finalmente, por iniciativa de Hewlett-Packard, se formó el comité X3J16 dentro de ANSI en diciembre de 1989. Se espera que el trabajo de estandarización de ANSI (American Standard) C++ se convierta en parte integral Trabajo de estandarización por parte de ISO (Organización Internacional de Normalización).

C++ se desarrolló simultáneamente con el desarrollo de algunas clases fundamentales.

C++ (léase c-plus-plus) es un lenguaje de programación de propósito general compilado y tipado estáticamente en el que puede crear programas de cualquier nivel de complejidad.
Durante más de 20 años, este lenguaje ha estado entre los tres lenguajes de programación más populares y demandados. (Puedes verificarlo visitando el sitio web de TIOBE).
El lenguaje se originó a principios de la década de 1980, cuando Björn Stroustrup, empleado de Bell Labs, ideó una serie de mejoras al lenguaje C para sus propias necesidades.

Bjarne Stroustrup – creador del lenguaje C++

Stroustrup decidió ampliar el lenguaje C con las capacidades que se encuentran en el lenguaje Simula. C, al ser el lenguaje base del sistema UNIX en el que se ejecutan las computadoras Bell, es rápido, rico en funciones y portátil. Stroustrup agregó la capacidad de trabajar con clases y objetos. Como resultado problemas prácticos Las simulaciones resultaron factibles de resolver tanto en términos de tiempo de desarrollo (gracias al uso de clases similares a Simula) como en términos de tiempo de cálculo (gracias a la velocidad de C).
Así habla el propio desarrollador del lenguaje:



En 1998, un comité de estándares publicó el primer estándar de lenguaje, conocido como C++98. C++ continúa evolucionando para satisfacer las demandas actuales. Uno de los grupos que desarrolla el lenguaje C++ y presenta propuestas para mejorarlo al Comité de Estándares de C++ es Aumentar, que se dedica, entre otras cosas, a mejorar las capacidades del lenguaje agregándole funciones de metaprogramación. El último estándar se lanzó en 2017 y se llama C++17. El próximo estándar no tardará en llegar y se espera que aparezca en 2020.
Nadie posee los derechos del lenguaje C++; En marzo de 2016 se creó Rusia. grupo de trabajo RG21C++. El grupo se organizó para recoger propuestas para el estándar C++, enviarlas a un comité y defenderlas en las reuniones generales de la Organización Internacional de Normalización.
C++ es un lenguaje multiparadigma (de la palabra paradigma - estilo de escritura programas de computador), incluyendo una amplia gama varios estilos y tecnologías de programación. A menudo se clasifica como un lenguaje orientado a objetos, pero estrictamente hablando, este no es el caso. Durante el proceso de trabajo, el desarrollador tiene absoluta libertad para elegir las herramientas para que el problema resuelto utilizando un enfoque particular se resuelva de la manera más eficiente posible. En otras palabras, C++ no obliga al programador a adherirse a un solo estilo de desarrollo de programas (por ejemplo, orientado a objetos).
C++ tiene una rica biblioteca estándar que incluye contenedores y algoritmos comunes, E/S, expresiones regulares, soporte multiproceso y otras características. C++ ha influido en muchos lenguajes de programación, entre ellos: Java, C#, D. Dado que C++ pertenece a una familia de lenguajes basados ​​en la sintaxis del lenguaje C, puedes dominar fácilmente otros lenguajes de programación de esta familia: JavaScript, PHP. , Perl, Objective-C y muchos otros. etc., incluido el propio idioma principal: C. ()
Durante su existencia, el lenguaje C++ ha adquirido mitos persistentes que son fácilmente refutados (ver aquí: Parte 1 y Parte 2)

Historia del idioma y publicación de estándares.

1983

El creador del idioma es Björn Stroustrup., un empleado de Bell Labs, presentó una versión temprana del lenguaje C++ (“C con clases”)

1985

Primera versión comercial de C++, el lenguaje adquiere su nombre moderno

1986

Lanzamiento de la primera edición de The C++ Programming Language, un libro dedicado a C++ escrito por Björn Stroustrup

1998

Se ha ratificado el estándar internacional para el lenguaje C++: ISO/IEC 14882:1998 “Estándar para el lenguaje de programación C++”

2003
2005

Se ha publicado el Informe técnico de la biblioteca 1 (TR1). Si bien no forma parte oficialmente del estándar, el informe describe extensiones de la biblioteca estándar que deberían incluirse en la próxima versión del lenguaje C++.

2011

Lanzamiento de un nuevo estándar: C++11 o ISO/IEC 14882:2011; el nuevo estándar incluyó adiciones al núcleo del lenguaje y expansión de la biblioteca estándar, incluida la mayor parte de TR1

2014

Lanzamiento del estándar C++14 (“Estándar internacional ISO/IEC 14882:2014(E) Lenguaje de programación C++”); C++ 14 puede verse como una pequeña extensión sobre C++ 11, que contiene principalmente correcciones de errores y mejoras menores.

2017

El lanzamiento de un nuevo estándar: C++1z (C++17). Esta norma introdujo muchos cambios y adiciones. Por ejemplo, STD incluía bibliotecas del estándar C11, sistema de archivos, basado en boost::filesystem, una gran parte de la biblioteca experimental TS I.

2020

C++20 es el nombre no oficial del estándar ISO/IEC para el lenguaje de programación C++, que se espera que siga a C++17. Proyecto de norma N4800.

Filosofía C++

En su libro The Design and Evolution of C++ (2007), Björn Stroustrup describe los principios que siguió al diseñar C++ (abreviado):

  • Obtenga un lenguaje de propósito general con tipos de datos estáticos, la eficiencia y portabilidad del lenguaje C.
  • Admite directa e integralmente una variedad de estilos de programación.
  • Dar al programador libertad de elección, incluso si esto le da la oportunidad de elegir mal.
  • Mantenga la compatibilidad con C tanto como sea posible, haciendo posible una transición fácil desde la programación en C.
  • Evite discrepancias entre C y C++: cualquier construcción que sea válida en ambos lenguajes debe significar lo mismo en cada uno de ellos y conducir al mismo comportamiento del programa.
  • Evite funciones que dependan de la plataforma o que no sean universales.
  • "No pagues por lo que no usas": ninguna característica del idioma debería provocar una disminución en el rendimiento de los programas que no la usan.
  • No requiere un entorno de programación demasiado complicado.

C y C++

La sintaxis de C++ se hereda del lenguaje C. Aunque formalmente uno de los principios de C++ sigue siendo mantener la compatibilidad con el lenguaje C, en realidad los grupos de estandarización de estos lenguajes no interactúan y los cambios que realizan no. sólo que no se correlacionan, sino que a menudo se contradicen ideológicamente fundamentalmente. Por lo tanto, los elementos que los nuevos estándares C agregan al núcleo están en los elementos estándar C++ de la biblioteca estándar y no están en el núcleo en absoluto, por ejemplo, matrices dinámicas, matrices con límites fijos, funciones de procesamiento paralelo. Según Stroustrup, combinar el desarrollo de estas dos lenguas sería muy beneficioso, pero es poco probable que sea posible por razones políticas. Por lo tanto, la compatibilidad práctica entre C y C++ se irá perdiendo gradualmente.
EN en este ejemplo, dependiendo del compilador utilizado, se generará “C++” o “C”:

Programa 9.1

#incluir int main() ( printf("%s\n", (sizeof("a") == sizeof(char))? "C++" : "C"); devuelve 0; )

Esto se debe al hecho de que las constantes de caracteres en C son de tipo int y en C++ son de tipo char, pero los tamaños de estos tipos son diferentes.

Modelos de ciclo de vida de aplicaciones

Ciclo vital software- este es el período de tiempo que comienza desde el momento en que se toma una decisión sobre la necesidad de crear producto de software y finaliza en el momento de su total retirada del servicio. Este ciclo es el proceso de construcción y desarrollo de software. Existen varios modelos de ciclo de vida.
modelo en cascada El ciclo de vida (modelo de cascada inglés) fue propuesto en 1970 por Winston Royce. Prevé la implementación secuencial de todas las etapas del proyecto en un orden estrictamente fijo. La transición a la siguiente etapa significa la finalización completa del trabajo en la etapa anterior. Los requisitos determinados en la etapa de formación de requisitos se documentan estrictamente en forma de especificaciones técnicas y se registran durante todo el desarrollo del proyecto. Cada etapa culmina con la publicación de un conjunto completo de documentación suficiente para permitir que otro equipo de desarrollo continúe el desarrollo.
Etapas del proyecto según el modelo de cascada:

  1. Formación de requisitos;
  2. Diseño;
  3. Implementación;
  4. Pruebas;
  5. Implementación;
  6. Operación y mantenimiento.

En el modelo en cascada, la transición de una fase del proyecto a otra supone que el resultado de la fase anterior es completamente correcto. En proyectos grandes esto es casi imposible de lograr. Por tanto, este modelo sólo es adecuado para desarrollar un proyecto pequeño. (El propio W. Royce no se adhirió a este modelo y utilizó un modelo iterativo).
modelo iterativo
Una alternativa al modelo en cascada es el modelo de desarrollo iterativo e incremental (IID), que recibió de T. Gilb en los años 70. nombre del modelo evolutivo. El modelo IID implica dividir el ciclo de vida del proyecto en una secuencia de iteraciones, cada una de las cuales se asemeja a un "miniproyecto", que incluye todos los procesos de desarrollo aplicados a la creación de piezas de funcionalidad más pequeñas en comparación con el proyecto en su conjunto. El objetivo de cada iteración es obtener una versión funcional. sistema de software, incluida la funcionalidad definida por el contenido integrado de todas las iteraciones anteriores y actuales. El resultado de la iteración final contiene toda la funcionalidad requerida del producto. Así, con la finalización de cada iteración, el producto recibe un incremento - un incremento - en sus capacidades, que, por tanto, se desarrollan evolutivamente.


En la mayoría de las metodologías de desarrollo modernas se implementan varias variantes del enfoque iterativo:

Proceso de desarrollo: proceso unificado racional (RUP)

Proceso unificado racional (RUP)(proceso unificado racional) es una metodología de desarrollo de software mantenida por Rational Software (IBM). La metodología proporciona recomendaciones para todas las etapas de desarrollo: desde el modelado de negocio hasta las pruebas y la puesta en marcha. programa terminado. El lenguaje de modelado unificado (UML) se utiliza como lenguaje de modelado.
El ciclo de vida completo del desarrollo de un producto consta de cuatro fases, cada una de las cuales incluye una o más iteraciones.

  • Etapa inicial (Inception)
  • Determinar el alcance del proyecto y la cantidad de recursos necesarios. Se determinan los requisitos básicos, las limitaciones y la funcionalidad clave del producto. Se evalúan los riesgos. Planificación de acciones. Al final de la fase inicial, se evalúa la consecución del Hito del Objetivo del Ciclo de Vida, lo que presupone un acuerdo entre las partes interesadas para continuar con el proyecto.

  • Aclaración
  • Requisitos de documentación. Diseño, implementación y pruebas de arquitectura ejecutable. Aclaración de términos y costos. Reducir los riesgos clave. La finalización exitosa de la fase de desarrollo significa alcanzar el hito de la arquitectura del ciclo de vida.

  • Construcción
  • En la fase de "Construcción", se implementa la mayor parte de la funcionalidad del producto: se completa el diseño de la aplicación, se escribe el código fuente. La fase de construcción finaliza con el primer lanzamiento externo del sistema y el hito de la capacidad operativa inicial.

  • Introducción
  • En la fase de “Implementación”, un Versión definitiva producto y se transfiere del desarrollador al cliente. Esto incluye un programa de pruebas beta, capacitación de usuarios y determinación de la calidad del producto. Si la calidad no cumple con las expectativas del usuario o los criterios establecidos en la fase de Inicio, se repite nuevamente la fase de Implementación. Completar todos los objetivos significa alcanzar el hito del lanzamiento del producto y completar el ciclo de desarrollo completo.



« Tecnologías de la información. Ingeniería de sistemas y software. Procesos del ciclo de vida del software". Esta norma fue adoptada por la Agencia Federal de Regulación Técnica y Metrología de la Federación Rusa y es similar a la norma internacional ISO/IEC 12207:2008. este estándar, establece un marco general para los procesos del ciclo de vida del software que puede usarse para guiar la industria del software. La norma no ofrece modelo específico ciclo vital. Sus disposiciones son comunes a cualquier modelo, método y tecnología de ciclo de vida para la creación de software. Describe la estructura de los procesos del ciclo de vida sin especificar cómo implementar o completar las actividades y tareas incluidas en esos procesos.

Presentación para la lección.
Temas de mensajes
  • Fundación de Software Libre (FSF)
  • Licencias de software gratuitas
  • Software libre y código abierto
  • Historia del desarrollo de los lenguajes de programación.
  • La historia del lenguaje C y C++.
  • Historia
  • Crítica de C++
  • Historia de UNIX
  • Modelo de ciclo de vida del software en espiral.
  • UML (lenguaje de modelado unificado)
  • Marco de soluciones de Microsoft
  • IDE para programación C/C++ en Windows
  • Compiladores C/C++
  • Crear una aplicación de consola en Windows
Preguntas
  1. ¿Por qué no se utiliza el modelo en cascada de desarrollo de software en proyectos grandes?
  2. ¿Cuál es la diferencia entre los modelos de desarrollo iterativo y en cascada?
  3. Enumerar las etapas del desarrollo de software en la metodología Rational Unified Process (RUP)

Etiquetas: Historia de la estandarización C, ANSI C, ISO C, C99, C11, ISO/IEC C, C.

Orígenes

C y es un “producto derivado” derivado de la creación del sistema operativo UNIX, que fue desarrollado en Bell Laboratories por Ken Thompson, Denis Ritchie y compañía. Thompson escribió él solo la versión original de UNIX, que se ejecutaba en el DEC PDP-7, uno de los primeros miniordenadores con sólo 8.000 palabras de memoria principal (después de todo, era 1969).

Como otros sistemas operativos de la época, UNIX fue escrito en lenguaje ensamblador. Depurar programas en lenguaje ensamblador es una verdadera molestia y difícil de mejorar, y UNIX no fue la excepción. Thompson decidió que se necesitaba un lenguaje de alto nivel para un mayor desarrollo del sistema operativo y se le ocurrió un lenguaje B pequeño. Thompson tomó como base el lenguaje BCPL, un lenguaje de programación de sistemas desarrollado a mediados de los años 60. BCPL, a su vez, tiene su origen en ALGOL 60, uno de los primeros (y más influyentes) mayor influencia) idiomas.

Ritchie pronto se unió al proyecto UNIX y comenzó a escribir en B. En 1970, Bell Labs compró un PDP-11 para el proyecto. Como B estaba listo para ejecutarse en el PDP-11, Thompson reescribió parte de UNIX en B. En 1971 quedó claro que B no era del todo adecuado para el PDP-11, por lo que Ritchie comenzó a crear una versión ampliada de B. Al principio lo llamó NB (Nuevo B), pero cuando el lenguaje se volvió muy diferente de B, el nombre se cambió a C. En 1973, el lenguaje se había vuelto lo suficientemente estable como para que UNIX pudiera reescribirse en él. El cambio a C proporcionó una ventaja importante: la portabilidad. Al escribir un compilador de C para cada una de las máquinas de Bell Labs, el equipo de desarrollo pudo trasladar UNIX a ellas.

Estandarización

C continuó evolucionando en los años 70, especialmente entre 1977 y 1979, cuando se publicó el primer libro sobre C, The C Programming Language, escrito por Brian Kernighan y Denis Ritchie y publicado en 1978, que se convirtió en la biblia de los programadores de C. A falta de un estándar oficial, este libro, también conocido como K&R, o el "Libro Blanco", como les gusta llamarlo a los fanáticos de C, se ha convertido en el estándar de facto. En los años 70 había pocos programadores en C y la mayoría eran usuarios de UNIX. Sin embargo, en la década de 1980, C se expandió más allá de los estrechos límites del mundo UNIX. Los compiladores de C están disponibles en una variedad de máquinas que ejecutan diferentes sistemas operativos. En particular, C comenzó a extenderse en la plataforma IBM PC de rápido desarrollo.

Junto con el aumento de popularidad vinieron los problemas. Los programadores que escribieron nuevos compiladores tomaron como base el lenguaje descrito en K&R. Desafortunadamente, en K&R algunas características del lenguaje se describieron vagamente, por lo que los compiladores a menudo las interpretaron a su propia discreción. Además, el libro no hacía una distinción clara entre lo que es una característica del lenguaje y lo que es una característica del sistema operativo UNIX. Lo que empeoró la situación fue que después de la publicación de K&R, C continuó desarrollándose: se le agregaron nuevas funciones y se eliminaron las antiguas. Pronto surgió la evidente necesidad de una descripción completa, precisa y moderna del idioma. Sin tal estándar, comenzaron a aparecer dialectos del idioma, lo que interfería con la portabilidad, la mayor fortaleza del idioma.

El desarrollo del estándar C estadounidense comenzó en 1983 bajo los auspicios del Instituto Nacional Estadounidense de Estándares (ANSI). Después de muchas revisiones, la norma se finalizó en 1988 y se adoptó formalmente en diciembre de 1989 como ANSI X3.159-1989. En 1990, fue aprobada por la Organización Internacional de Normalización (ISO) como norma internacional ISO/IEC 9899:1990. Esta versión del lenguaje suele denominarse C89 o C90, para evitar confusiones con la versión original de C, que suele denominarse K&R C.

El lenguaje sufrió cambios menores en 1995 (los cambios se describen en un documento comúnmente llamado Enmienda 1). Se produjeron cambios más significativos en 1999, cuando se publicó la norma ISO/IEC 9899:1999. El lenguaje descrito en esta norma suele denominarse C99. Los términos "ANSI C", "ANSI/ISO C" e "ISO C", alguna vez utilizados para describir C99, tienen dos significados debido a la existencia de dos estándares.

En 2011, junto con la revisión del lenguaje C++, se lanzó el estándar C11. A pesar de la existencia del estándar '11, muchos compiladores todavía no soportan completamente ni siquiera las versiones C99, por lo que el uso del estándar C11 se indicará explícitamente.

Lenguaje C y UNIX

Lenguaje de programación CON(léase "C") se creó a principios de los años 70, cuando Ken Thompson y Dennis Ritchie de Bell Labs desarrollaron Sistema operativo UNDC. Primero crearon la parte del compilador. CON, luego lo usé para compilar el resto del compilador CON y finalmente usé el compilador resultante para compilar UNIX. El sistema operativo UNIX se distribuyó originalmente en código fuente para CON entre universidades y laboratorios, y el destinatario podría compilar el código fuente en el idioma CON en código máquina utilizando un compilador adecuado CON.

La distribución del código fuente hizo que el sistema operativo UNIX fuera único; el programador podría cambiar el sistema operativo y el código fuente podría transferirse de una plataforma de hardware a otra. Hoy en día, el estándar POSIX define el conjunto estándar de llamadas al sistema UNIX disponibles en CON, que debe implementarse en versiones de UNIX que sean compatibles con POSIX. C fue el tercer lenguaje que Thomson y Ritchie desarrollaron durante la creación de UNIX; Los dos primeros fueron, por supuesto, A Y EN.

Lenguaje ensamblador móvil C

Comparado con el idioma anterior: BCPL, idioma CON se ha mejorado agregando tipos de datos de longitudes específicas. Por ejemplo, el tipo de datos int podría usarse para crear una variable con una cantidad específica de bits (generalmente 16), mientras que el tipo de datos long podría usarse para crear una variable completa con una gran cantidad de bits (generalmente 32). A diferencia de otros lenguajes de alto nivel, CON podría trabajar con direcciones de memoria directamente utilizando punteros y referencias. Porque el CON conserva la capacidad de acceder directamente al hardware, a menudo se clasifica como un lenguaje de nivel medio o, en broma, se le llama "lenguaje ensamblador móvil".

C - lenguaje de programación estructurado

En cuanto a la gramática y la sintaxis, entonces CON es un lenguaje de programación estructurado. Mientras que muchos programadores modernos piensan en términos de clases y objetos, los programadores CON pensar en términos de procedimientos y funciones. EN CON Puede definir sus propios tipos de datos abstractos utilizando la palabra clave struct. De manera similar, puede describir sus propios tipos de enteros (enumeraciones) y dar otros nombres. tipos existentes datos usando palabra clave definición de tipo. En este sentido CON Es un lenguaje estructurado con los gérmenes de la programación orientada a objetos.

Estandarización del lenguaje C

lenguaje generalizado C en varios tipos Desafortunadamente, las computadoras (a veces llamadas plataformas de hardware) han dado lugar a muchas variaciones del lenguaje. Eran similares, pero incompatibles entre sí. Este fue un problema importante para los desarrolladores de programas que necesitaban escribir programas compatibles, que podría ejecutarse en múltiples plataformas. Quedó claro que se necesitaba una versión estándar. C. En 1983 ANSI (Comité Nacional Estadounidense de Estándares) formó el comité técnico X3J11 para crear un estándar de lenguaje C(para "proporcionar una definición del lenguaje inequívoca e independiente de la máquina"). En 1989 se aprobó la norma. ANSI se ha asociado con ISO (Organización Internacional de Estándares) para estandarizar C internacionalmente; En 1990 se publicó una norma conjunta denominada ANSI/ISO 9899:1990. Este estándar aún se está mejorando y cuenta con el respaldo de la mayoría de las empresas de desarrollo de compiladores.

Nacimiento de C++

Bjarne Stroustrup libera el potencial de la orientación a objetos CON transfiriendo capacidades de clase Simula 67 V CON. Inicialmente, el nuevo idioma se llamaba "C con clases" y solo entonces comenzó a llamarse C++. Idioma C++ Alcanzó popularidad después de ser desarrollado en Bell Labs, luego fue transferido a otras industrias y corporaciones. Hoy en día es uno de los lenguajes de programación más populares (y autorizados) del mundo. C++ hereda tanto el lado bueno como el malo CON.

Revelaciones de Bjarna Stroustrup

Bjarne Stroustrup: "Se me ocurrió C++, anotó su definición inicial y completó la primera implementación. Seleccioné y formulé criterios de diseño. C++, desarrolló sus características principales y fue responsable del destino de las propuestas para ampliar el lenguaje en el comité de estandarización. C++", escribe el autor del lenguaje de programación más popular. - "El lenguaje C++ le debe mucho al lenguaje C y el idioma C sigue siendo un subconjunto lenguaje C++(pero C++ ha solucionado varios defectos graves en el sistema de tipo C). También ahorré fondos C, que son de nivel suficientemente bajo para manejar las tareas más críticas del sistema. Idioma C, a su vez, le debe mucho a su predecesor, BCPL; Por cierto, el estilo del comentario // fue tomado de C++ de BCPL. Otra principal fuente de inspiración fue el lenguaje. Simula67. De allí se tomó prestado el concepto de clases (con clases derivadas y funciones virtuales). Un medio para sobrecargar a los operadores y la capacidad de colocar anuncios en cualquier lugar donde se pueda escribir una instrucción. algol68. "

¿Por qué C++?

Nombre C++ inventado por Rick Massitti. El nombre indica la naturaleza evolutiva de la transición hacia él desde C. "++" es una operación de incremento en C. Nombre un poco más corto C+ es un error de sintaxis; además, ya se ha utilizado como nombre para un idioma completamente diferente. Expertos en semántica C encuentra eso C++ peor que ++C. Títulos D el lenguaje no lo entendió porque es una extensión de C y no intenta solucionar sus problemas eliminando varias funciones.

¿Por qué se necesitaba C++?

Inicialmente lenguaje de programación c++ fue diseñado para que el autor y sus amigos no tengan que programar en ensamblador, C u otros lenguajes modernos de alto nivel. Su objetivo principal fue escribir buenos programas más simple y más agradable para el programador individual. Plan de Desarrollo C++ nunca existió en el papel; el diseño, la documentación y la implementación se realizaron simultáneamente. Por supuesto, la interfaz externa. C++ fue escrito en C++. Nunca ha habido un "Proyecto C++" o un "Comité de Desarrollo de C++". Es por eso C++ ha evolucionado y continúa evolucionando en todas direcciones para hacer frente a los desafíos que enfrentan los usuarios y a través de discusiones entre el autor y sus amigos y colegas.

Verdadero C++ orientado a objetos

EN lenguaje C++ Los principios de la programación orientada a objetos están totalmente respaldados, incluidos los tres pilares sobre los que se sustenta: encapsulación, herencia y polimorfismo. Encapsulación en C++ compatible mediante la creación de tipos de datos no estándar (personalizados) llamados clases. Idioma C++ apoya la herencia. Esto significa que puede declarar un nuevo tipo de datos (clase) que sea una extensión de uno existente.

A pesar de lenguaje de programación c++ con razón llamada continuación CON y cualquier programa viable en el idioma CON será compatible con el compilador C++, al pasar de CON A C++ Se ha dado un salto muy significativo. Idioma C++ se benefició de su afinidad con el lenguaje CON durante muchos años, ya que muchos programadores han descubierto que para aprovechar al máximo lenguaje C++, necesitan abandonar algunos de sus conocimientos previos y adquirir otros nuevos, a saber: estudiar nueva manera Conceptualización y resolución de problemas de programación. Antes de empezar a aprender C++, Stroustrup y la mayoría de los otros programadores que utilizan C++ considerar el aprendizaje de idiomas CON opcional.

Lenguaje de programación C++ Actualmente se considera el idioma dominante utilizado para desarrollar productos comerciales, el 90% de los juegos están escritos en C++ utilizando DirectX.

Literatura

Fuentes:

  • HMDeitel, PJDeitel "Cómo programar en C++"
  • Bjarne Stroustrup "El lenguaje de programación C++. Tercera edición".
  • Simon Robinson, Ollie Cornes, Jay Glynn y otros "C# para profesionales".
  • Jess Liberty "Aprenda usted mismo C++ en 21 días"
  • Stanislav Gornakov "DirectX, lecciones de programación en C++"