¿El producto de qué empresa es el lenguaje C?
La razón por la que el lenguaje C se llama "C" es por la segunda letra de "BCPL" (la primera letra se usa para nombrar el lenguaje B que se inventó antes). Cuando el lenguaje C alcanzó su apogeo, apareció una versión llamada C con Clase, que era la primera versión de C ++. La palabra clave de clase y las clases se agregaron al lenguaje C. En ese momento, muchas versiones de C querían agregar la palabra clave de clase. al lenguaje C. Más tarde, el Comité de Estándares de C decidió darle un nuevo nombre a esta versión de C. En ese momento, se recopilaron muchos nombres y finalmente se adoptó la opinión de uno de ellos para reflejarlo. el operador ++ en el lenguaje C Con el avance del lenguaje C, se llamó C++ y se estableció el Comité de Estándares de C++. El Dr. Bjarne Stroustrup de AT&T Bell Labs en los Estados Unidos inventó e implementó C++ a principios de la década de 1980 (originalmente este lenguaje se llamaba "C con clases"). Al principio, C ++ apareció como una versión mejorada del lenguaje C. A partir de la adición de clases al lenguaje C, se agregaron constantemente nuevas características. Gradualmente se están agregando 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) promulgó 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 ++. A partir de entonces, el estándar se actualizará cada cinco años según las necesidades reales. La próxima actualización del estándar está programada originalmente para 2009. En la actualidad, generalmente lo llamamos estándar. C ++ 0x, pero debido a la falta de nuevas características La disputa es feroz. A excepción de las nuevas modificaciones que se han determinado básicamente en el Informe técnico 1 (tr1), el estándar completo aún está lejos. Desafortunadamente, debido a la complejidad del lenguaje C++ y sus largos años de evolución, no existe ningún compilador que cumpla completamente con este estándar hasta ahora (2010).
Edite los componentes de este párrafo
De acuerdo con la descripción en la primera cláusula de la tercera edición de Effective C++, C++ ahora consta de los siguientes cuatro "sublenguajes": 1 Sublenguaje C. C ++ admite casi todas las funciones del lenguaje C, principalmente la parte c89. Solo hay diferencias muy sutiles en la sintaxis con respecto al lenguaje C (como los valores izquierdo y derecho de las expresiones entre corchetes; consulte la literatura estándar de C ++ para obtener más detalles). ). 2. Lenguaje C++ orientado a objetos. El lenguaje C++ originalmente no tenía funciones de diseño orientadas 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ó versiones que admiten funciones orientadas a objetos. 3. Lenguaje de programación genérico. La poderosa función de plantilla de C++ (pero fácilmente fuera de control) le permite completar una gran cantidad de trabajo en tiempo de compilación, mejorando así en gran medida la eficiencia del tiempo de ejecución. 4. STL (Biblioteca de plantillas estándar de C++, Biblioteca de plantillas estándar). Con el desarrollo continuo de STL, 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 muy popular. Además, se están desarrollando y probando nuevas funciones que se implementarán en C++ 0x incluidas en TR1 y otras.
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, y con una eficiencia cercana a la del lenguaje C, ocupa una gran parte de los lenguajes de desarrollo utilizados en la industria; la segunda etapa es desde 1995 hasta; 2000. En la primera etapa, debido al surgimiento de la Biblioteca de plantillas estándar (STL) y más tarde Boost y otras bibliotecas de programas, la programación genérica ocupó una proporción cada vez mayor en C++. Por supuesto, al mismo tiempo, debido a la aparición de lenguajes como Java y C # y la caída a gran escala de los precios del hardware, C ++ se vio afectado hasta cierto punto en la tercera etapa; Actualmente, debido a la programación de producción y las plantillas representadas por bibliotecas como Loki y MPL, con el surgimiento de la metaprogramación, C ++ ha alcanzado un nuevo pico en su historia de desarrollo. La aparición de estas nuevas tecnologías y su integración con tecnologías originales han hecho que C ++. Uno de los lenguajes de programación más complejos entre los principales de hoy.
Edite este libro introductorio
C++ es un lenguaje. Solo su sintaxis, características y bibliotecas de clases estándar ya son un curso muy avanzado, así que antes de comenzar a aprender Al hacer esto, debes. Primero debemos sentar una base sólida. Hay muchos libros de Visual C++ en el mercado. Aunque pueden dedicar de 1 a 2 capítulos a presentar las características básicas de C++, nunca lo ayudarán a comenzar. Por lo tanto, los principiantes que aprenden C++ deben elegir libros que se centren en el lenguaje C++ en sí, no en Visual C++, MFC o API de Windows.
Aprender C++ debe comenzar de fácil a difícil y avanzar paso a paso. En el pasado, la gente solía decir que deberías aprender el lenguaje C antes de aprender C++. De hecho, eso no es necesario. Aunque los lenguajes C++ y C están relacionados, siguen siendo dos lenguajes diferentes. Por supuesto, es beneficioso haber aprendido otros lenguajes de programación antes de aprender C++. Eso hará que aprender C++ sea más rápido; después de todo, los conceptos de muchos lenguajes informáticos son similares. Los principiantes sin base deben calmarse y no impacientarse. No es fácil convertirse en un maestro de C++, requiere mucho esfuerzo. La elección de los libros de texto introductorios depende principalmente de la propia situación del alumno. Si ya tiene experiencia en el aprendizaje de lenguajes de alto nivel, se recomienda utilizar "Programación C ++" de Tan Haoqiang. Tenga en cuenta que esta es la edición de 2004. La edición de 2006 del libro es una versión castrada y está orientada a objetos desde el principio. 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. El contenido de la cuarta edición de este libro de Tan Haoqiang es relativamente regular y la organización es muy clara. Si tiene una base en otros lenguajes de alto nivel, probablemente pueda obtener una descripción general de C++ en medio año. El libro del profesor Tan Haoqiang se ha convertido en un libro de texto en los principales colegios y universidades de todo el país y goza de relativo reconocimiento. Si está comenzando a aprender C ++ desde cero, se recomienda utilizar "Fácil de aprender C ++" de Pan Jiajie. Este libro es un libro nuevo 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 la explicación es más animada e interesante, lo que puede despertar el interés por aprender. Por lo tanto, es bueno que los principiantes que no tienen conocimientos básicos elijan este libro. Pero si quieren convertirse en maestros rápidamente, leerlo puede no ser suficiente. En cuanto a después de leer los libros introductorios, deberías leer algunos libros de alto nivel. 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 admitir directa y ampliamente una variedad de estilos de programación (programación procesal, 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 que los programadores tomen decisiones equivocadas. · C++ está diseñado para ser lo más compatible posible con C, proporcionando así una transición fluida de C a C++. · C++ evita características específicas de la plataforma o que no son de aplicación general. · C++ no utiliza funciones que generen gastos generales adicionales. · C++ está diseñado para no requerir un entorno de programación complejo. Para garantizar la simplicidad del lenguaje y un funcionamiento eficiente, muchas características de C++ se proporcionan en forma de bibliotecas (como STL) u otras formas, en lugar de agregarse directamente al lenguaje en sí. Respecto a estos 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:
(Hecho Este no es un programa C++ que cumple con el estándar 98 [ISO C++], y este programa no puede ejecutarse en la mayoría de los compiladores. Si desea compilar este programa en un compilador más antiguo, debe cambiar stdio.h a iostream.h )
#include
int main()
{
printf("¡Hola mundo!\n ");
devuelve 0;
}
(Lo anterior es el código del lenguaje C, el lenguaje C++ es una versión de nivel superior del lenguaje C) p>
Cuando se utiliza un compilador que es compatible con el estándar C++98 (ISO/IEC 14882-1998), también es posible el siguiente programa:
#include
int main()
{
cout << "¡Hola mundo!" << endl; p>
}
Cuando se utiliza un compilador compatible con STL de C++, debe ser:
#include
using namespace std; /p>
int main()
{
cout<<"¡Hola mundo!"< } De acuerdo con las regulaciones ISO C++, la función principal solo puede tener la forma int main(void) { p> .. } y int main(int argc,char * argv[]) . { ... } Sin embargo, en los compiladores de Microsoft Visual Studio anteriores a Visual C++ 2003, void main() p> { ... } también es compatible, pero esto 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, que se deriva de él, se ha convertido en un lenguaje de programación popular de propósito general. Editar el rendimiento de este código En general, se cree que el costo de desarrollo de usar Java o C# es menor que el de C++. Sin embargo, si puede analizar completamente las diferencias entre C++ y estos lenguajes, encontrará que esta oración es verdadera condicionalmente. Esta condición es: el tamaño y la complejidad del software son 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 oración básicamente puede seguir siendo 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 naturaleza de ingeniería de software de C++. Mientras que Java y C# hablan de ingeniería de software, C++ 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 se esfuerzan por ocultarlo. La calidad del lenguaje en la ingeniería de software depende de la capacidad de abstracción del lenguaje. De orientado a procesos a orientado 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 de la ingeniería de software. Como resultado, 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 debido a que la programación genérica es más abstracta, las aplicaciones van muy por detrás de la orientada a objetos). Edite este ejemplo de aplicación Qué programas están escritos en C++: los núcleos de Windows de los tres sistemas operativos principales están escritos en lenguaje C y ensamblador, y las funciones avanzadas de nivel superior están escritos 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++ (mucho hardware también usa C++). Las siguientes son algunas aplicaciones de C++: Amazon: software para comercio electrónico a gran escala Apple: OS X está escrito en una combinación de lenguajes, pero algunas partes importantes son C++ (por supuesto, las partes principales son el lenguaje ensamblador y el lenguaje C). AT&T: El mayor proveedor de telecomunicaciones de EE. UU. o Sistemas de aprovisionamiento o Sistemas para una rápida recuperación de la red después de una falla Autodesk: Gran cantidad de aplicaciones en el dominio CAD Ericsson: o Plataforma de servidor o TDMA-CDMA HLR o GSM-TDMA-CDMA. gateway de movilidad Google: motor de búsqueda web, etc. HP: Aquí hay una pequeña fracción de las aplicaciones C++ de HP: o C, C++, compiladores Fortran90 y enlazadores para la nueva plataforma HP IA64 (estos suman más de 1 millón de líneas de código C++: IBM: o OS/400.o). K42: un núcleo de sistema operativo de uso general, código abierto y alto rendimiento para multiprocesadores coherentes con caché Intel: compiladores y optimizadores de software de análisis de rendimiento Vtune, una gran cantidad de software de diseño y fabricación de chips JPL (Jet Propulsion Lab, NASA): conducción autónoma del rover de Marte. sistema (incl. análisis de escenas y planificación de rutas). ¡C++ en Marte! También mucho software de soporte "en tierra" (es decir, Microsoft: o Windows XP o Windows NT (NT4 y 2000) o Windows 9x (95, 98). , Yo) Microsoft Office (Word, Excel, Access, PowerPoint, Outlook) Internet Explorer (incluido Outlook Express) Visual Studio SQL Mozilla: navegador Firefox y cliente de correo Thunderbird (código abierto) MySQL: servidor MySQL (alrededor de 250.000 líneas de C++) y MySQL Cluster Posiblemente la base de datos de código abierto más popular del mundo Nokia: o Puentes de estaciones de radio/Internet de comunicaciones móviles: FlexiGGSN (Nodo de soporte GPRS de puerta de enlace) y FlexiSGSN (Nodo de soporte de servidor GPRS) o MSC/HLR Sun: o HotSpot Java Virtual. La máquina está escrita en C++ Sistema operativo Symbian: justificación: "[...] usando C++ para todo el código del sistema, desde el núcleo hacia arriba". Este es uno de los sistemas operativos más extendidos para teléfonos móviles. KDE desde Linux está escrito en C++. : Creo que sería casi más fácil enumerar los sistemas que no están escritos en C++. El software escrito en C++ también incluye VLC, el famoso reproductor de vídeo de código abierto, LAMMPS, el famoso software de simulación de dinámica molecular, que incluye parte del código Fortran; Edite este consejo de programación Utilice nuevo y eliminar para la asignación y liberación de memoria dinámica Los operadores nuevo y eliminar son Los nuevos operadores en C++ proporcionan asignación y liberación dinámicas Funciones de almacenamiento. Su función es equivalente a las funciones malloc() y free() del lenguaje C, pero su rendimiento es superior. Usar new tiene las siguientes ventajas sobre malloc(): (1) new calcula automáticamente el tamaño del tipo que se asignará sin usar el operador sizeof, lo cual es menos problemático y puede evitar errores. (2) Devuelve automáticamente el tipo de puntero correcto sin conversión forzada 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 enteros eliminar[] p; //Eliminar esta matriz (2) int* p=new int / /Asignar dinámicamente un número entero e inicializar Usar funciones en línea en lugar de llamadas a macros Para funciones de uso frecuente, el lenguaje C recomienda usar llamadas a macros en lugar de llamadas a funciones para acelerar la ejecución del código. y reducir los gastos generales de llamadas. Sin embargo, las llamadas macro tienen muchos inconvenientes y pueden provocar efectos secundarios indeseables. Por ejemplo, la macro: #define abs(a)(a)<0?(-a):(a)), cuando se usa abs(i++), esta macro saldrá mal. 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 delante del tipo de retorno de la función. Por ejemplo: inline int Add(int a, int b);// Declare Add() como una función en línea para que cuando el compilador encuentre la función Add(), ya no realice una llamada a la función, sino que incruste directamente la función 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);//Imprimir caracteres chinos en la posición actual void PutHz(int x,?int y,?char * str);//Ingresar números en x, y El uso de la sobrecarga de funciones puede ayudar. programadores Maneja problemas más complejos y evita el uso de nombres de funciones complicados como intabs(), fabs(), dabs(), etc., al mismo tiempo, en programas grandes, hace que los nombres de funciones sean fáciles de administrar y usar, sin tener que devanarse los sesos para lidiar con ellos. Al mismo tiempo, debe tenerse en cuenta que dos funciones con el mismo tipo de datos de parámetro pero diferentes tipos de retorno de función no se pueden sobrecargar. Utilice referencias en lugar de punteros para la transferencia de parámetros En lenguaje C, si una función necesita modificar el valor de una variable utilizada como parámetro, el parámetro debe declararse como un puntero. tipo. Por ejemplo: void Add(int *a) { (*a)++ } Al llamar, use Add(&x); //donde x es int o un tipo que se pueda convertir a int, como unsigned int, pero en este momento, el compilador generalmente recibe 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 en las situaciones anteriores para que el programa sea más claro y fácil de entender. Una referencia es un alias de una variable y operar con la referencia equivale a operar con la variable original. Por ejemplo, una función que usa referencias se define como: void Add(int& a) {a++; //a es una referencia a un número entero}. Al llamar, use Add(x); diferente de la función anterior que usa punteros. La funcionalidad 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, por ejemplo: void PutHzxy(char *str,int x=-1, int y=-1){ if (x==-1) x=wherex(); if(y==-1) x=wherex(); moveto(x,y); PutHx(str);} Hay tres formas de llamar a la función PutHzxy( ), por ejemplo: PutHzxy("C++ Language");//Utilice los parámetros predeterminados y genere PutHzxy("C++ Language",10,10) en la posición actual;//No utilice los parámetros predeterminados PutHzxy("C++ Language" ,10) ;//Utilice parámetros predeterminados para y y especifique la posición de x. En circunstancias normales, una función debe tener la mayor flexibilidad posible. El uso de parámetros predeterminados proporciona a los programadores una manera efectiva de lidiar con una mayor complejidad y flexibilidad, por lo que los parámetros predeterminados se usan ampliamente en códigos 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 que comience a definir parámetros predeterminados, no podrá especificar parámetros no predeterminados. De lo contrario, cuando omite uno de los parámetros, el compilador no puede saber si personalizó este parámetro o si utilizó los parámetros predeterminados para definir parámetros no predeterminados. 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, Biblioteca de plantillas estándar), el código STL se divide ampliamente en tres categorías: algoritmo (algoritmo), contenedor (contenedor) e iterador (iterador), e incluye algunas clases de herramientas como auto_ptr. Casi todo el código utiliza clases de plantilla y funciones de plantilla, lo que proporciona mejores oportunidades de reutilización de código que las bibliotecas tradicionales compuestas de funciones y clases. #include Editar este método de desarrollo Hay una gran cantidad de programadores en el mundo Unix Enfoque tradicional no IDE para el desarrollo de software. Generalmente, es la siguiente combinación: 1. Compilador: gcc, clang, etc. 2. Editor: generalmente vim/emacs 3. Make: gnu make o bsd's pmake, etc. Las funciones y el uso son básicamente los mismos 4. Gestión de versiones : cvs, svn, git, etc. 5. Lectura de código: cscope, ctags, lxr, etc. Editar este párrafo entorno de desarrollo 1.Visual Studio (Visual C++) 2 .Borland C++ Builder 3.Eclipse (Myln + CDT + Mingw32 + GCC) 4.Dev-C++ (Mingw32 + GCC) 5.Code::Blocks (se puede usar con una variedad de núcleos de compilación) 6.Codelite 7.C- Gratis Como se muestra arriba, las actualmente populares series GNU GCC y Visual Studio de Microsoft tienen una cadena de compilación básica, y otros IDE son derivados