¿Cuál es el propósito de aprender C++?
c++ [ Editor] Descripción general de C++ La palabra C++ es Generalmente se pronuncia como "C plus plus" en el círculo de programadores de China continental, mientras que entre los programadores occidentales, C ++ se pronuncia como "C plus plus". "C más más", "CPP". C++ es un lenguaje de programación de propósito general que admite múltiples paradigmas de programación y presenta verificación de tipos de datos estáticos. Admite una variedad de estilos de programación, como programación de procedimientos, abstracción de datos, programación orientada a objetos, creación de iconos y otra programación general.
Una breve historia de C++
C se llama "C" porque hace referencia a un lenguaje llamado B. Los diseñadores de C creyeron que C era una mejora de B, por lo que lo llamaron C. Cuando el lenguaje C alcanzó su apogeo, apareció una versión llamada C con Class, que fue la primera versión de C ++ y agregó la palabra clave class y clases al lenguaje C. En ese momento, muchas versiones del lenguaje C esperaban agregar el concepto de clases al lenguaje C; más tarde, el Comité de Estándares del Lenguaje C decidió nombrar esta versión Clase de lenguaje C. En ese momento, se recopilaron muchos nombres y finalmente se adoptó una de las opiniones. Para reflejar que era un avance del lenguaje C, se agregó el operador ++ al lenguaje C, por lo que se llamó C ++. al mismo tiempo, se estableció el Comité de Estándares de C++; p>
Bjarne Stroustrup (Dr. Straustrup) de AT&T Bell Labs en Estados Unidos tomó la decisión de crear la primera versión de C++ en el siglo XX, que fue la primera versión de C++. El Dr. Bjarne Stroustrup de AT&T Bell Laboratories en los Estados Unidos inventó e implementó C++ (originalmente el lenguaje se llamaba "C con clases") a principios de los años 1980. C++ comenzó como una mejora del lenguaje C. Primero agregó clases al lenguaje C y luego continuó agregando nuevas funciones. Gradualmente se agregaron 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 1488-1998 para el lenguaje de programación C++. Este es el estándar internacional para el lenguaje de programación, a menudo denominado ANSI/ISO C++. 1998 fue el primer año del Comité de Estándares C++, y el estándar se actualiza cada cinco años según sea necesario, con la próxima actualización programada para 2009. La próxima actualización del estándar será en 2009 y actualmente generalmente nos referimos al estándar como C++0x. Desafortunadamente, debido a la complejidad del lenguaje C++ y su evolución a lo largo de los años, hasta ahora (2009), sólo el compilador del entorno de desarrollo CTP Visual C++ 2010 es totalmente compatible con el estándar.
Además, en lo que respecta al aprendizaje de C++, se puede considerar un lenguaje independiente; no depende de C. Podemos aprender C++ directamente sin aprender C. Según una reseña del libro "Thinking in C++", la diferencia de eficiencia entre C++ y C suele ser de más o menos el 5%. Por lo tanto, algunas personas creen que C++ puede reemplazar completamente el lenguaje C en la mayoría de las situaciones (sin embargo, todavía usamos el lenguaje C en microcontroladores y otros lugares donde se requiere un uso cuidadoso del espacio y la manipulación directa del hardware).
[Sublenguaje Según el primer artículo de la tercera edición de "Effective C++", C++ ahora consta de los siguientes cuatro "sublenguaje":
1. funciones de C, solo diferencias sutiles de sintaxis (por ejemplo, valores l y valores r de expresiones entre corchetes; consulte C ++ para obtener más detalles). lvalues y rvalues, consulte la documentación estándar de C ++ para obtener más detalles).
2 C++ orientado a objetos.
2. C++ orientado a objetos. C++ es conocido ante todo como un lenguaje orientado a objetos, una característica que no se discutirá en detalle aquí.
3. Lenguaje de programación general. Las poderosas capacidades de plantilla de C++ (pero fácilmente fuera de control) le permiten realizar la mayor parte de su 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 evolucionando, gradualmente se ha convertido en una parte integral de la programación en C++. Su eficiencia puede ser menor que la del código ingenuo ordinario, pero su seguridad y estandarización lo hacen popular. [Edite este párrafo] Desarrollo del lenguaje El desarrollo del lenguaje C++ se puede dividir aproximadamente en tres etapas: La primera etapa duró desde la década de 1980 hasta 1995. En esta etapa, C ++ es básicamente un lenguaje orientado a objetos basado en tipos tradicionales. Su eficiencia es cercana al lenguaje C y ocupa una parte considerable de los lenguajes de desarrollo utilizados en el campo industrial desde 1995; 2000 Durante esta fase, la programación general asumió cada vez más el peso de C++. Por supuesto, al mismo tiempo, debido a la aparición de Java, C # y otros lenguajes y la fuerte caída de los precios del hardware, C ++ también se vio afectado hasta cierto punto en la tercera etapa, desde 2000 hasta 2000; Actualmente, debido a la generación de bibliotecas de programación representadas por Loki, MPL y otras. Con el surgimiento de la programación formal y la metaprogramación de plantillas, C ++ ha marcado el comienzo de otro nuevo pico en su historia de desarrollo La aparición de estas nuevas tecnologías y la integración con tecnologías originales. han convertido a C ++ en uno de los lenguajes de programación más maduros de la actualidad. [Edite este párrafo] Introducción a C++ C++ es un lenguaje cuya sintaxis, características y biblioteca de clases estándar lo convierten por sí solo en un curso muy avanzado, por lo que es muy importante comenzar con una buena base. Hay muchos libros de Visual C++ en el mercado y, aunque pueden dedicar 1 o 2 capítulos a las características básicas de C++, esto nunca le ayudará a empezar. Por lo tanto, los principiantes que aprenden C++ deben elegir libros que se centren específicamente en el lenguaje C++ en sí, en lugar de libros sobre Visual C++, MFC o la API de Windows.
El aprendizaje de C++ debe hacerse paso a paso, de fácil a difícil. Se ha dicho en el pasado que debes aprender C antes de aprender C++. De hecho, esto no es necesario. C++ y C, aunque relacionados, siguen siendo dos lenguajes diferentes. Por supuesto, existen ventajas al aprender otros lenguajes de programación antes de aprender C++. Aprender C++ será más rápido de esta manera; después de todo, los conceptos de muchos lenguajes informáticos son similares. Los principiantes sin base cero deben calmarse y no impacientarse. Convertirse en un maestro de C++ no es tan fácil y requiere mucho trabajo duro.
Desde la perspectiva de la elección de 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, le recomiendo "Programación C ++" de Tan Haoqiang. Cabe señalar que las ediciones 04 y 06 del libro son ediciones castradas y están orientadas a objetos. Aunque C y C++ son similares, se ha dicho antes que C y C++ deben aprenderse como dos lenguajes, por lo que falta un poco el contenido de la edición 06 del libro. El contenido del libro de la cuarta edición de Tan Haoqiang está relativamente organizado y es muy claro. Si ya tiene una base en otros lenguajes de alto nivel, se estima que podrá tener una comprensión general de C++ en medio año. Este libro del Sr. Tan Haoqiang se ha convertido en un libro de texto para los principales colegios y universidades de todo el país y goza de relativamente reconocimiento.
Si está aprendiendo C++ desde cero, se recomienda utilizar "Aprenda C++ fácilmente" de Pan Jiajie. Este libro es un libro nuevo publicado en 2008. Escuché que fue escrito por un estudiante mientras estudiaba. Este libro está disponible en una versión electrónica gratuita en línea. Este libro está dirigido principalmente a principiantes. Las conferencias son animadas e interesantes, lo que puede mejorar el interés por aprender. Por lo tanto, es bueno que los principiantes que no tienen conocimientos básicos elijan este libro si quieren convertirse rápidamente en maestros, leerlo puede no ser suficiente.
Después de leer el libro introductorio, deberías leer algunos libros de alto nivel. Por ejemplo, "Lenguaje de programación C++" e "Introducción a C++" también pueden desarrollarse en diferentes direcciones, como STL, MFC y API. Si está interesado en otros lenguajes, también puede consultar C# y Java, que son similares en sintaxis y muchos conceptos a C++. [Editar] Principios de diseño de C++ 6?1 C++ está diseñado para ser un lenguaje de programación de propósito general y tipado estático que es tan eficiente y portátil como el lenguaje C. 6.1 C++ está diseñado para ser simple y claro, con amplio soporte para una variedad de estilos de programación (programación de procedimientos, abstracción de materiales, programación orientada a objetos, programación general). 6.1 C++ está diseñado para brindar a los programadores más opciones, incluso si esto puede llevar a que los programadores tomen decisiones equivocadas. 6.1 C++ está diseñado para ser lo más compatible posible con C, proporcionando una transición fluida de C a C++. 6.1 C++ Evite el uso de funciones que sean específicas de la plataforma o no universales. 6.1 C++ no utiliza funciones que imponen una sobrecarga adicional. 6.1 C++ está diseñado para eliminar la necesidad de entornos de programación complejos.
Por razones tales como mantener el lenguaje simple y funcionando eficientemente, muchas características de C++ se proporcionan en bibliotecas (como STL) u otras formas, en lugar de agregarse directamente al lenguaje mismo. El libro "El diseño y evolución del lenguaje C++" escrito por el padre de C++ analiza este tema en detalle. [Edite este párrafo] El programa C++ Hello World utiliza un compilador que cumple con el estándar C89 (también conocido como ANSI C. El siguiente programa mostrará "¡Hola, mundo!" y luego finalizará:
(). De hecho, este no es un programa C++ compatible con el estándar 98 [ISO C++]
(De hecho, este no es un programa C++ compatible con el estándar 98 [ISO C++] y no se ejecutará en la mayoría de los compiladores.
Para compilar este programa en un compilador anterior, cambie iostream a iostream.h)
#include
int main()
{
printf("¡Hola mundo!\n");
return 0;
}
Usado con el estándar C++98 (ISO /IEC 14882-1998), también puede ejecutar el siguiente programa:
#include
int main()
{
cout << "¡Hola mundo!" << endl;
return 0;
}
cuando Cuando se usa C++ Compilador compatible con STL, este sería:
#include
usando el espacio de nombres std;
int main()
{
cout<< "¡Hola mundo!"< return 0; } Según 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 Studio anteriores a Visual C++ 2003, void main() { ... } Este estilo de escritura también se admite, pero es incorrecto y no cumple con los estándares. Esta forma de escribir hará que el código del programa pierda su naturaleza multiplataforma. [Los datos de EvansData muestran que en toda la comunidad de desarrollo, la proporción de desarrolladores que utilizan C++ como herramienta cayó del 76% en la primavera de 1998 al 46% en el otoño de 2004. La última encuesta de Forrester muestra que C++, Microsoft VisualBasic y Java son los lenguajes elegidos para los sistemas de productos de muchas empresas. Una encuesta realizada a 100 empresas reveló que C/C++, Visual Basic y Java se utilizan en el 59%, 61% y 66% de los sistemas de producción, respectivamente. Tradicionalmente, la gente siempre ha creído que la ventaja de C++ en comparación con algunos de los lenguajes de moda actuales, como Java y C#, radica en el rendimiento de los programas en ejecución. Esta visión está incompleta. Si una persona cree firmemente en esto, significa que no conoce ni comprende completamente C++ y tal o cual lenguaje. Al mismo tiempo, las personas que sostienen esta opinión suelen ser engañadas de alguna manera (los principales culpables son, por supuesto, las empresas ricas y poderosas). Para estas empresas, oscurecen las diferencias fundamentales entre C++ y tal o cual lenguaje y refuerzan una diferencia que a la mayoría de los programadores no les importa mucho hoy en día: el rendimiento. Porque con la rápida mejora del rendimiento de la CPU, el rendimiento ya no es un problema. Esto se denomina "anulación de rendimiento". Muchos programadores poco sofisticados creen que esto es cierto. Como resultado, las grandes empresas se salen con la suya. En general, se cree que Java o C# son menos costosos de desarrollar que C++. Sin embargo, si analiza exhaustivamente las diferencias entre C++ y estos lenguajes, encontrará que existen condiciones para esta afirmación. Esta condición es: el tamaño y la complejidad del software son relativamente pequeños. Esta afirmación es básicamente cierta si el código efectivo no excede las 30.000 líneas (excluyendo el código generado por el generador). 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. La razón de esta diferencia es la naturaleza de 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. Esto es ignorado por la mayoría de la gente y las grandes empresas lo encubren de todas las formas posibles. La calidad de un lenguaje en ingeniería de software depende de su nivel de abstracción. 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 de propósito general 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, su aplicación va muy por detrás de la de la programación orientada a objetos). [Edite este párrafo] Aplicaciones en lenguaje C++: Qué programas están escritos en C++: Los tres sistemas operativos principales, Windows, Linux y Unix, tienen núcleos escritos en C y ensamblador, y el nivel superior avanzado. Las funciones están escritas en C++. Casi todos los juegos en línea (como World of Warcraft), el motor de búsqueda Baidu (Baidu.com) y la mayor parte del software que utilizamos están escritos en C++ (el hardware también utiliza mucho C++). Aplicaciones C++ enumeradas por Bjarne Stroustrup, el padre de C++: Amazon.com: software de comercio electrónico a gran escala Apple: OS X es un mezcla de lenguajes Escrito en C++, pero con varias partes importantes. AT&T: El mayor proveedor de telecomunicaciones de Estados Unidos. oSistema de aprovisionamiento oSistema rápido de recuperación de red tras fallo Autodesk: Un gran número de aplicaciones importantes en el campo CAD Ericsson: o Plataforma de servidor. o TDMA-CDMA HLR o GSM-TDMA-CDMA Mobility Gateway Google: buscador en Internet, etc. HP : La siguiente es una pequeña muestra de la aplicación C++ de HP. o Compiladores C, C++, Fortran90 y enlazador para la nueva plataforma HP IA64 (que contiene más de 1 millón de líneas de código C++ en total). IBM: oOS/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 Compiladores y optimizadores o Una amplia gama de software de diseño y fabricación de chips JPL (Laboratorio de Propulsión a Chorro de la NASA): sistema de conducción autónoma del rover de Marte (incluido análisis de escena y planificación de rutas). 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 (~250.000 líneas de C++) y clúster MySQL. Posiblemente la base de datos de código abierto más popular del mundo MySQL: MySQL Server (~250.000 líneas de código C++) y MySQL Cluster. Posiblemente la base de datos de código abierto más popular del mundo Nokia: o Estaciones de radio móviles/puentes de Internet: FlexiGGSN (Gateway GPRS Support Node) y FlexiSGSN (Server GPRS Support Node). Nodo de soporte del servidor GPRS). o MSC/HLR Sun: o Máquina virtual HotSpot Java escrita en C++ Symbian OS: Motivo: "[...] Comenzando desde el kernel , todo el código del sistema usa C++". Es uno de los sistemas operativos móviles más utilizados KDE para Linux está escrito en C++. Sistemas telefónicos: Creo que es casi más fácil enumerar sistemas que no están escritos en C++.