que - ¿Qué tecnologías necesitan saber los programadores de C++?
para que sirve c++ (10)
La forma popular de usar C ++ en el espacio móvil implicaría aprender el desarrollo del sistema operativo Symbian.
C ++ fue el primer lenguaje de programación en el que realmente me metí, pero la mayor parte de mi trabajo fue académico o para programación de juegos. La mayoría de los trabajos de programación en los que vivo requieren programadores Java o .NET y tengo una idea bastante buena de las tecnologías que necesitan además del lenguaje básico. Por ejemplo, un programador Java podría necesitar conocer EJB, Servlets, Hibernate, Spring y otras tecnologías, bibliotecas y marcos.
Sin embargo, no estoy seguro acerca de C ++. En situaciones de la vida real, para la programación empresarial general, ¿qué deben saber los programadores de C ++ más allá de las características del lenguaje? Cosas como la API Win32, ciertas bibliotecas, frameworks, tecnologías, herramientas, etc.
Editar: Estaba pensando en la biblioteca estándar también cuando dije el lenguaje básico, lo siento si fue incorrecto o no. Me preguntaba si existen requisitos de dominio más específicos similares a todas las tecnologías que los programadores de Java o .NET podrían necesitar para saber lo que los programadores de C ++ necesitan saber en general. Estoy de acuerdo en que la biblioteca estándar y Boost son esenciales, pero ¿hay algo más allá o es diferente para cada empresa / proyecto / dominio?
Además del material que todos enumeran, tenga en cuenta que el programador C ++ tiene espacio en el mercado de sistemas integrados (mucho más que la mayoría de los otros lenguajes de alto nivel). La familiaridad con los sistemas integrados y el desarrollo pueden abrirle muchas puertas y oportunidades de trabajo donde no competir tan fuertemente con el desarrollo de Java, por ejemplo. Así que aprender a codificar el código compacto (compacto después de compilado) y las técnicas de poco uso de memoria es una buena apuesta.
Biblioteca de plantillas estándar
Desarrollador de C ++ tiene que grok std y aumentar las bibliotecas.
La lista de otras tecnologías depende en gran medida del tipo de proyecto. Seguramente tendrá alguna interacción con SO, por lo que deberá conocer la API de su entorno.
En cuanto al acceso a datos y otras cosas, hay toneladas para diferentes soluciones. C ++ es mucho más rico que algunos lenguajes administrados en ese sentido. El 99% de los viejos sistemas populares tienen una interfaz C / C ++.
Después de aclarar un poco su pregunta en el comentario de mi respuesta, puedo recomendar:
- Buen navegador de códigos (SourceInsight o Understand For C ++, por ejemplo)
- Herramientas de análisis estático (Link, KlockWork Inforce, etc.)
- MySQL / SQLite (Encontré estos DB en una gran cantidad de proyectos C ++)
- Tecnologías de interfaz de usuario (OpenGL / GLUT, DirectX, GDI, Qt, etc.)
En cuanto a cada idioma, creo que hay tres niveles de conocimiento interconectados:
- Domina tu lenguaje. Todo programador debe (hacer lo que sea necesario) dominar la sintaxis. Buenas referencias para lograr esto son:
- El lenguaje de programación C ++ por Bjarne Stroustrup.
- Eficaz serie C ++ de Scott Meyers.
- Conozca sus bibliotecas extensamente.
- STL es definitivamente una necesidad, ya que se ha incluido en la biblioteca estándar de C ++ , por lo que saber que está muy cerca del punto 1: tienes que dominarlo.
- Conocer el impulso puede ser muy interesante, como una biblioteca multiplataforma y genérica.
- Conozca las bibliotecas con las que debe trabajar, ya sea Win32 API , OCCI , XPCOM o UNO (solo algunos ejemplos aquí). No necesita saber una biblioteca de base de datos si desarrolla componentes puramente gráficos ...
- Desarrolla tu conocimiento de patrones. No se pueden evitar los patrones de diseño: elementos del software reutilizable orientado a objetos aquí ...
Si estás usando gcc definitivamente deberías saber gdb. En realidad, debe ser competente con el depurador local para el compilador que esté utilizando. Aparte de eso, existe una gran variedad de bibliotecas que permiten que recoger una API sea más útil que una específica. Sugeriría aprender doxygen sin embargo.
Sin ningún orden específico
- COM / ATL
- DirectX
- MFC y Win32
- STL
- GDI
- AUMENTAR
tecnologías que debe conocer como programador de C ++ (y, por lo tanto, más conocedor técnicamente que los programadores menores;)):
problemas de rendimiento: lo que hace que las cosas vayan despacio, cómo encontrar y solucionar esos problemas. También me refiero a cosas como cambio de contexto, líneas de caché, búsquedas optimizadas, uso de memoria y restricciones, y cosas similares que a tu desarrollador promedio de VB / C # no le interesan.
problemas de enhebrado: cómo aprovechar al máximo una aplicación de subprocesos múltiples, cómo detectar y corregir abusos de la misma.
comunicaciones de bajo nivel, especialmente poder conectarse a sistemas oscuros que nadie más ha escrito en un juego de herramientas (especialmente comunicaciones de radio), latencia y administración del ancho de banda.
De lo contrario, para herramientas específicas: depende de a qué se dirija, el desarrollador de Windows será diferente de Linux, diferente de incrustado.
Esto dependerá en gran medida de la plataforma utilizada y otras restricciones. Como regla general, un buen programador (C ++) es (o debería ser) capaz de aprender una API específica de la plataforma en muy poco tiempo. Para C ++, es mucho más importante entender las diferentes cadenas de herramientas (por ejemplo, un programador de Windows también debe conocer la cadena de herramientas de GCC) y las diferencias en los compiladores. El programador también debe comprender las limitaciones y el comportamiento dependiente de la plataforma del lenguaje.
En cuanto a las bibliotecas, los programadores de C ++ absolutamente necesitan saber STL y Boost. Sin discusión.
Si está utilizando linux, Valgrind es una herramienta muy útil para comprobar cómo trata su programa el acceso a la memoria.