¿Qué empresa produce C++?

El lenguaje C se llama "C" debido a la segunda letra de "BCPL" (la primera letra se usa para nombrar el lenguaje B previamente inventado). En la cima del desarrollo del lenguaje C, apareció una versión llamada C con clase, que fue la primera versión de C ++. En ese momento, muchas versiones de C querían agregar el concepto de clases al lenguaje C. Más tarde, el comité de estándares de C decidió darle un nuevo nombre a esta versión de C. Se solicitaron muchos nombres y finalmente uno de ellos fue adoptado. Usar el operador ++ en lenguaje C para representarlo es un avance del lenguaje C, por eso se llama C++ y se estableció el Comité de Estándares de C++. AT&T. El Dr. Bjarne Straustrup de Bell Labs inventó e implementó C++ (originalmente llamado "C con clases") a principios de los años 1980. C++ apareció originalmente como una versión mejorada del lenguaje C. Desde la incorporación de clases al lenguaje C, se han seguido agregando nuevas funciones. Poco a poco se fueron añadiendo al estándar funciones virtuales, sobrecarga de operadores, herencia múltiple, plantillas, excepciones, RTTI y espacios de nombres. En 1998, la Organización Internacional de Normalización (ISO) publicó el estándar internacional ISO/IEC 1988-1998 para el lenguaje de programación C++. C++ es un lenguaje de programación estándar internacional, a menudo llamado ANSI/ISO C++. 1998 es el primer año en que se estableció el Comité de Estándares de C++. El estándar se actualizará cada cinco años según las necesidades reales. La próxima actualización estándar estaba prevista inicialmente para 2009. Actualmente generalmente llamamos estándar C++ 0x. Pero debido a la intensa controversia sobre las nuevas características, está completo salvo nuevas modificaciones en el Informe Técnico 1 (TR 1). Lo que es aún más lamentable es que debido a la complejidad y la evolución a largo plazo del lenguaje C++, hasta ahora (2010) no existe ningún compilador que cumpla plenamente con este estándar.

Edita los componentes de este párrafo.

Según la primera cláusula de la tercera edición de C++ vigente, C++ ahora consta de los siguientes cuatro "sublenguajes": 1 y el sublenguaje C. C ++ admite casi todas las funciones del lenguaje C, principalmente la parte c89, y solo es ligeramente diferente en sintaxis del lenguaje C (como los valores izquierdo y derecho de las expresiones entre corchetes; consulte el documento estándar de C ++ para detalles). 2. Lenguaje C++ orientado a objetos. Originalmente, el lenguaje C++ no tenía capacidades de diseño orientado a objetos. Sin embargo, con la introducción del concepto de programación orientada a objetos y el desarrollo de lenguajes como Java, el lenguaje C++ también desarrolló una versión que admite funciones orientadas a objetos. 3. Lenguaje de programación general. Las poderosas capacidades de plantilla de C++ (pero fácilmente fuera de control) le permiten realizar una gran cantidad de trabajo en tiempo de compilación, lo que mejora en gran medida la eficiencia del tiempo de ejecución. 4.STL (Biblioteca de plantillas estándar de C++). A medida que STL continúa desarrollándose, se ha convertido gradualmente en una parte indispensable de la programación en C++. Su eficiencia puede ser menor que la del código nativo ordinario, pero su seguridad y estandarización lo hacen popular. Además, se están desarrollando y probando nuevas funciones que se implementarán en C++ 0x incluidas en TR1.

Editar este párrafo Desarrollo del lenguaje

El desarrollo del lenguaje C++ se puede dividir aproximadamente en tres etapas: La primera etapa va desde la década de 1980 hasta 1995. En esta etapa, el lenguaje C ++ es básicamente un lenguaje tradicional orientado a objetos. Con una eficiencia cercana a la del lenguaje C, ocupa una parte considerable de los lenguajes de desarrollo utilizados en la industria. La segunda etapa es de 1995 a 2000. En esta etapa, debido al surgimiento de la Biblioteca de plantillas estándar (STL) y más tarde la biblioteca Boost, la programación genérica ocupaba una proporción cada vez mayor en C++. Por supuesto, al mismo tiempo, debido a la aparición de Java, C # y otros lenguajes y la caída a gran escala de los precios del hardware, C ++ se vio afectado hasta cierto punto en la tercera etapa, a partir de 2000; Debido a la producción de bibliotecas representadas por Loki, MPL y otras bibliotecas. Con el surgimiento de la programación y la metaprogramación de plantillas, C ++ ha alcanzado un nuevo pico en la historia del desarrollo. La aparición de estas nuevas tecnologías y su integración con tecnologías originales han convertido a C++ en el miembro más complejo de los principales lenguajes de programación.

Edita este libro introductorio.

C++ es un lenguaje y su sintaxis, características y bibliotecas de clases estándar ya son cursos muy avanzados, por lo que cuando comienzas a aprender, primero debes sentar una base sólida. Hay muchos libros sobre Visual C++ en el mercado. Aunque puede llevar 1 o 2 capítulos presentar las características básicas de C++, definitivamente no lo ayudará a comenzar. Por lo tanto, los principiantes deben elegir libros sobre el lenguaje C++ en sí, no libros sobre Visual C++, MFC o API de Windows.

Aprender C++ debe ir de fácil a difícil, paso a paso. Solía ​​decirse que primero debías aprender C y luego C++. De hecho, no es necesario. Aunque C++ y C están relacionados, siguen siendo dos lenguajes diferentes. Por supuesto, es muy beneficioso aprender otros lenguajes de programación antes de aprender C++. Eso hará que aprender C++ sea más rápido. Después de todo, muchos conceptos en los lenguajes informáticos son similares. Para los principiantes sin base, deben calmarse y no impacientarse. No es fácil convertirse en un maestro de C++, requiere mucho esfuerzo. Desde la perspectiva de la elección de libros de texto introductorios, depende principalmente de la propia situación del alumno. Si tiene experiencia en el aprendizaje de lenguajes de alto nivel, le recomiendo la programación en C++ de Tan Haoqiang. Tenga en cuenta que se publicó en 2004. El libro publicado en 2006 fue castrado y originalmente estaba orientado a objetos. Aunque C y C++ son similares, como se mencionó anteriormente, C y C++ deben aprenderse como dos lenguajes, por lo que falta un poco el contenido del libro de 2006. La cuarta edición del libro de Tan Haoqiang es muy regular y está bien organizada. Si tiene una base en otros lenguajes de alto nivel, probablemente pueda tener una comprensión general de C++ en medio año. El libro del profesor Tan Haoqiang se ha convertido en un libro de texto en las principales universidades de todo el país y goza de relativo reconocimiento. Si está aprendiendo C++ desde cero, le recomiendo Easy to Learn C++ de Pan Jiajie. Este libro fue publicado en 2008. Escuché que fue escrito por un estudiante mientras estudiaba. Una versión electrónica gratuita de este libro está disponible para descargar en línea. Este libro está dirigido principalmente a principiantes y también es animado e interesante, lo que puede aumentar el interés por aprender. Por lo tanto, es beneficioso para los principiantes que no tienen ninguna base elegir este libro. Incluso si quieren convertirse en maestros rápidamente, leer este libro puede no ser suficiente. En cuanto a los libros introductorios, deberías leer algunos libros avanzados. Por ejemplo

Edite los principios de diseño de este párrafo

C++ está diseñado para ser un lenguaje de programación multipropósito de tipo estático que es tan eficiente y portátil como C. C++ está diseñado para directamente y admite ampliamente varios estilos de programación (programación programática, abstracción de datos, programación orientada a objetos, programación genérica). C++ está diseñado para dar a los programadores más opciones, incluso si esto puede llevar a decisiones equivocadas por parte del programador. C++ fue diseñado para ser lo más compatible posible con C, proporcionando así una transición fluida de C a C++. C++ evita limitaciones de plataforma o funciones no universales. C++ no utiliza funciones que generen una sobrecarga adicional. C++ está diseñado sin un entorno de programación complejo. Para mantener el lenguaje simple y eficiente, muchas características de C++ se proporcionan en bibliotecas (como STL) u otras formas, y no se agregan directamente al lenguaje en sí. Respecto a este tipo de temas, el padre de C++ hizo una declaración detallada en "El diseño y evolución del lenguaje C++". Programa Hola Mundo

Cuando se utiliza un compilador que es compatible con el estándar C89 (también conocido como ANSI C), el siguiente programa muestra "¡Hola, mundo!" y luego finaliza la operación:

(En realidad, este no es un programa C++ que cumple con el estándar 98 [ISO C++] y no se ejecutará en la mayoría de los compiladores. Si desea compilar este programa en un compilador anterior, debe cambiar stdio.h a iostream. h)

# include & ltstdio.h & gt

int main()

{

printf("¡Hola mundo! \n ");

Devuelve 0;

}

(Lo anterior es código de lenguaje C, y el lenguaje C++ es una versión superior del lenguaje C.

)

El siguiente procedimiento también es posible cuando se utiliza un compilador compatible con el estándar C++98 (ISO/IEC 14882-1998):

# include & ltiostream.h & gt

int main()

{

cout & lt& lt"¡Hola mundo!"& lt& ltendl

Devuelve 0 ;

}

Cuando se utiliza un compilador compatible con C++ STL, debe ser:

# include & ltiostream & gt

Usar Namespace std

int main()

{

cout & lt& lt"¡Hola mundo!"& lt& ltendl

Devuelve 0;

}

Según ISO C++, la función principal solo puede ser

int main(void)

{

...

}

y

int main(int argc, char * argv[])

{

...

}

Sin embargo, en los compiladores de Microsoft Visual Studio anteriores a Visual C++ 2003,

void main ()

{

...

}

También es compatible, pero no es correcto ni estándar. Esta forma de escribir hará que el código del programa pierda sus características multiplataforma. Cada año los profesionales estipulan la sintaxis de C++, que es una de las razones por las que C++ es superior a otros lenguajes de programación. Java, derivado de C++, se ha convertido en un lenguaje de programación popular.

Edite el rendimiento del código de este párrafo

En términos generales, el costo de desarrollo de usar Java o C# es menor que el de C++. Sin embargo, si puedes analizar completamente las diferencias entre C++ y estos lenguajes, encontrarás que esta oración es condicional. Esta condición es que el tamaño y la complejidad del software sean relativamente pequeños. Si no hay más de 30.000 líneas de código efectivo (excluyendo el código generado por el generador), esta frase puede ser básicamente cierta. De lo contrario, a medida que aumente la cantidad y complejidad del código, las ventajas de C++ serán cada vez más obvias. Lo que marca esta diferencia es la ingeniería de software de C++. Cuando Java y C# hablan de ingeniería de software, C++ en realidad ha elevado silenciosamente la ingeniería de software a un nivel sin precedentes. La mayoría de la gente ignora esto y las grandes empresas intentan ocultarlo. La calidad de un lenguaje en ingeniería de software depende de sus capacidades de abstracción. De la orientación a procesos a la orientación a objetos, la capacidad de abstracción del lenguaje ha dado un salto cualitativo, pero en la práctica, la gente descubre que la orientación a objetos no puede resolver todos los problemas en la ingeniería de software. Por lo tanto, las élites introdujeron y ampliaron gradualmente la programación genérica para resolver problemas de ingeniería de software de nivel superior. (De hecho, los orígenes de la programación genérica y orientada a objetos se remontan a 1967, pero la aplicación de la programación genérica va muy por detrás de la orientada a objetos).

Edite este ejemplo de aplicación.

Qué programas están escritos en C++: el kernel de Windows de los tres principales sistemas operativos está escrito en lenguaje C y ensamblador, y las funciones avanzadas de nivel superior están escritas en C++. Casi todos los juegos en línea, como World of Warcraft, el motor de búsqueda Baidu y la mayor parte del software que utilizamos, están escritos en C++ (muchos hardware también usan C++). Las siguientes son algunas aplicaciones de C++: Amazon: software para grandes empresas de comercio electrónico Apple: OS x está escrito en un lenguaje mixto, pero varias partes importantes están en C++ (por supuesto, la parte central es el lenguaje ensamblador y C). AT&T: El mayor proveedor de telecomunicaciones de Estados Unidos. o Sistema de aprovisionamiento o Sistema de recuperación rápida de la red después de un fallo Autodesk: Un gran número de aplicaciones importantes en el campo del CAD Ericsson: o Plataforma de servidor. o TDMA-CDMA HLR o GSM-TDMA-CDMA Mobile Gateway Google: Buscador web, etc. HP: Aquí una pequeña selección de aplicaciones HP C++: o Compiladores C, C++, Fortran90 y enlaces para los nuevos procesadores de la plataforma HP IA64 (estos agregaron más de 1 millón de líneas de código C++).

IBM: o OS/400. o K42: Un kernel de sistema operativo de uso general, código abierto y alto rendimiento para multiprocesadores coherentes con caché. Intel: o Software de análisis de rendimiento Vtune o Software de diseño y fabricación de chips Compilador y optimizador JPL (NASA Jet Propulsion Laboratory) o Sistema de conducción autónoma Mars Rover (incluido análisis de escenas y planificación de rutas). ¡C++ en Marte! También hay una gran cantidad de software de soporte "sobre el terreno" (es decir, en la Tierra). Microsoft: o Windows XP o Windows NT (NT4 y 2000) o Windows 9x (95, 98, Me) o Microsoft Office (Word, Excel, Access, PowerPoint, Outlook) o Internet Explorer (incluido Outlook Express) o Visual Studio o SQL Mozilla: navegador Firefox y cliente de correo electrónico Thunderbird (código abierto) MySQL: servidor MySQL (alrededor de 250.000 líneas de C++) y MySQL Cluster. Posiblemente las bases de datos de código abierto más populares del mundo Nokia: o Comunicaciones móviles Radio/Internet Bridge: FlexiGGSN (Gateway GPRS Support Node) y FlexiSGSN (Server GPRS Support Node). o MSC/HLR Sun:o La máquina virtual Hotspot Java está escrita en C++ Symbian OS: Justificación: "[...] use C++ para todo el código del sistema, comenzando con el kernel. Este es uno de los sistemas operativos móviles más extendidos". KDE de Linux está escrito en C++. Sistemas telefónicos: Creo que el software escrito en C++ es casi tan fácil de enumerar como un sistema que no está escrito en C++. C++ también incluye VLC, un conocido reproductor de vídeo de código abierto; LAMMPS, un conocido software de simulación de dinámica molecular, que incluye algunos códigos Fortran;

Edite este consejo de programación

Use nuevo y Asignación dinámica de memoria y liberación de eliminación

Los operadores nuevo y eliminar son operadores nuevos en C++, que proporcionan la función de asignar y liberar almacenamiento dinámicamente. Su función es equivalente a las funciones malloc() y free() del lenguaje C, pero su rendimiento es aún mejor. En comparación con malloc (), usar new tiene las siguientes ventajas: (1) new calcula automáticamente el tamaño del tipo a asignar, sin usar el operador sizeof, lo cual es más conveniente y puede evitar errores. (2) Devuelve automáticamente el tipo de puntero correcto sin forzar la conversión del tipo de puntero. (3) Puede utilizar nuevo para inicializar el objeto asignado. Ejemplos de uso: (1) int * p; p = new int[10]; //Asignar una matriz de 10 enteros eliminar[]p;; //Eliminar esta matriz (2) int * p = new int( 100); // Asigne dinámicamente un número entero e inicialícelo

Utilice funciones en línea en lugar de llamadas a macros

Para funciones de uso frecuente, el lenguaje C recomienda utilizar llamadas a macros en lugar de llamadas a funciones. acelere la ejecución del código y reduzca la sobrecarga de llamadas. Sin embargo, las macrollamadas tienen muchas desventajas y pueden tener efectos secundarios inesperados. Por ejemplo, macro:# defineabs (a) (a) < 0? (-a):(a), esta macro provocará un error al utilizar abs(i++). Por lo tanto, en C ++, se deben usar funciones en línea en lugar de llamadas de macro, lo que no solo puede lograr el propósito de las llamadas de macro, sino también evitar las desventajas de las llamadas de macro. Para utilizar una función en línea, simplemente coloque la palabra clave en línea antes del tipo de retorno de la función. Por ejemplo: inline int Add(int a, int b); //Declara Add() como una función en línea, de modo que cuando el compilador encuentre la función Add(), no realizará ninguna llamada a la función, sino que incrustará la función directamente. código para acelerar la ejecución del programa.

Usar sobrecarga de funciones

En lenguaje C, los nombres de dos funciones no pueden ser iguales, de lo contrario provocará errores de compilación. En C++, dos funciones con el mismo nombre de función pero diferentes tipos de datos de parámetros se interpretan como sobrecarga.

Por ejemplo: void PutHz(char * str); // Genera caracteres chinos void PutHz(int x,? int y,? char * str); // Ingresa números en x, y y usa la sobrecarga de funciones para ayudar a los programadores a manejar más Para problemas complejos, evite usar nombres de funciones complejos como intabs (), fabs () y dabs () al mismo tiempo; en programas grandes, los nombres de funciones son fáciles de administrar y usar, y no es necesario atormentarlos; cerebros para lidiar con nombres de funciones. Al mismo tiempo, debe tenerse en cuenta que los tipos de datos de los parámetros son los mismos, pero no se pueden sobrecargar dos funciones con diferentes tipos de retorno.

Utilice referencias en lugar de punteros para pasar parámetros.

En lenguaje C, si una función necesita modificar el valor de una variable utilizada como parámetro, entonces el parámetro debe declararse como un tipo de puntero. Por ejemplo: void Add(int * a){(* a)++;} use add(&; El dispositivo normalmente dará una advertencia. Para programas complejos, el uso de punteros es propenso a errores y el programa es difícil de leer. En C++, se pueden utilizar referencias en lugar de punteros para que el programa sea más claro y fácil de entender. Las referencias son alias de variables. Las operaciones sobre referencias son equivalentes a las operaciones sobre variables originales. Por ejemplo, una función que usa referencias se define como void add(int & a) { a++; //a es una referencia entera} y se llama usando Add(x); //donde x es int. La función anterior usa punteros. La función es la misma, pero el código es más conciso y claro.

Usar parámetros predeterminados

En C++, las funciones pueden usar parámetros predeterminados, como void puthzxy (char * str, int x =-1, int y =-1){ if( x =-1)x = donde x(); if(y = =-1)x = donde x(); moveto(x, y);} Hay tres formas de llamar a la función PutHzxy( ), como :PutHzxy("lenguaje c++"); //Utilice los parámetros predeterminados para generar PutHzxy("lenguaje C++", 10, 10) en la posición actual //No utilice los parámetros predeterminados PutHzxy("lenguaje C++"; , 10); //Usa y El parámetro predeterminado especifica la posición de x. Por lo general, una función debe ser lo más flexible posible. El uso de parámetros predeterminados proporciona a los programadores una forma eficaz de abordar problemas más complejos y flexibles, por lo que los parámetros predeterminados se utilizan ampliamente en el código C++. Cabe señalar que todos los parámetros predeterminados deben aparecer a la derecha de los parámetros no predeterminados. Es decir, una vez definidos los parámetros predeterminados, los parámetros no predeterminados no se pueden describir. De lo contrario, cuando omita uno de los parámetros, el compilador no sabrá si personalizó ese parámetro o si definió un parámetro no predeterminado utilizando el parámetro predeterminado. Por ejemplo: Void Puthzxy (char * str, int x =-1, int y =-1) // Correcto Void Puthzxy (int x =-1, int y =-1, char * str) // Incorrecto.

Usando STL

STL (Biblioteca de plantillas estándar), el código STL se divide aproximadamente en tres categorías: algoritmos, contenedores e iteradores, incluidas algunas herramientas como auto_ptr. Casi todo el código utiliza clases de plantilla y funciones de plantilla, lo que brinda mejores oportunidades para la reutilización del código que las bibliotecas tradicionales compuestas de funciones y clases. # include & ltvector & gt//Incluir archivos de encabezado relacionados/typedefstd::vector

Editar el modelo de desarrollo de este párrafo

En el mundo Unix, hay una gran cantidad de programadores usando software tradicional Desarrollar usando métodos que no sean IDE. La combinación general es la siguiente: 1. Compilador: gcc, clang, etc. 2. Editar: vim/emacs 3. Crear: gnu make o pmake de bsd, etc. Las funciones y el uso son básicamente los mismos. 4. Gestión de versiones: cvs, svn, git, etc. 5. Lectura de códigos: cscope, ctags, lxr, etc.

Editar este entorno de desarrollo

1.Visual Studio (Visual C++) 2.

Borland C++ Constructor 3. Eclipse (Myln + CDT + Mingw32 + GCC) 4. Dev-C++ (Mingw32 + GCC) 5. Código::Bloques (se puede usar con múltiples núcleos de compilación) 6. Código 7. C-Free es como se muestra arriba. Las populares series GNU GCC y Visual Studio de Microsoft tienen cada una una cadena de compilación básica, y otros IDE son derivados.