Tengo conocimientos básicos de C / C ++. ¿Cómo puedo obtener experiencia en C / C ++ sin trabajar en una empresa?

Stroustrup: preguntas frecuentes

No tienes conocimiento de C / C ++. C / C ++ no es un lenguaje. O conoces C, o conoces C ++, o los conoces independientemente.

Un paralelismo que he observado en mi tiempo es que la gente parece creer que el cambio de C a C ++ (o viceversa) es como pasar de un automóvil a un automóvil manual: solo necesita aprender las partes nudosas en unos pocos sesiones, y estás listo. Esto no podría estar más lejos de la verdad. Un mejor paralelo sería decir “He conducido un kart, ahora aprenderé a conducir un semirremolque en un mes” (el idioma que usted sabe es el kart).

Contestaré esta pregunta para C ++, ya que no me puse en contacto con C hace mucho tiempo .

  1. Te sugiero que leas libros en La Guía y Lista de Libros Definitivos de C ++; Si no ha leído nada en esta lista *, comience con Un recorrido por C ++ (puede terminarlo en una tarde) y continúe de inmediato con Programación: Principios y práctica con C ++ (2a edición). De cualquier manera, lea A Tour of C ++: es el mejor recurso en C ++.

* Si su recurso presenta “Hola mundo” así, será mejor que lea Tour ++ y PPP.

#include

int main ()
{
std :: cout << "¡Hola, mundo!" << std :: endl;
}

El delincuente es endl . Su programa hello world debería verse así:

#include

int main ()
{
std :: cout << "¡Hola, mundo! \ n";
}

Otro indicador seguro de que su recurso es inferior a la media es si comienza a hablar sobre punteros o matrices en detalle después de unos pocos capítulos y difiere el vector y otras partes de la Biblioteca estándar de C ++ a la Parte III.

  1. Familiarícese con las guías isocpp / CppCoreGuidelines. Esto cambiará la forma en que escribes C ++, asegurándote de que estás usando correctamente C ++ en toda su extensión, y no abusar de las características basadas en mitos o mala educación.
  2. Comience a contribuir a un proyecto de código abierto. Aquí hay algunos que he recomendado a mis alumnos en el pasado. Cualquier cosa en negrita es una biblioteca / recurso en el que he invertido más de diez minutos.

Algoritmos

  • Implementación de la biblioteca estándar C ++ de LLVM , libc ++. Trabajar en esto ayudará a profundizar enormemente su comprensión de la biblioteca estándar de C ++. Debe consultar la documentación de LLVM sobre cómo comenzar. Esta presentación habla sobre cómo contribuir a LLVM. También debe suscribirse a las listas de correo relevantes, ya que son casi obligatorias para la contribución, y definitivamente son la mejor manera de comprender el estado actual de LLVM.
  • Implementación de la biblioteca estándar C ++ de GCC, stdlibc ++. Debe leer la documentación sobre cómo contribuir a GCC y suscribirse a las listas de correo relevantes.
  • Mejore la implementación de Microsoft de la Biblioteca de soporte de guías .
  • Implemente su propia versión de la Biblioteca de soporte de guías . Tenga en cuenta que este segundo enlace lo lleva a la especificación CppCoreGuidelines de GSL.
  • range-v3 , una biblioteca que funciona con pseudoconceptos y sirve como banco de pruebas de algoritmos para STL2.
  • contenedores, una biblioteca que funciona con el TS Concepts, y sirve como banco de pruebas para STL2. Necesitará un conocimiento profundo del Concepts TS y del borrador de trabajo Ranges TS.
  • cmcstl2 , la implementación del prototipo para el borrador de trabajo de Ranges TS, y posiblemente otras propuestas STL2. Estoy involucrado con algunas ramas en este proyecto.
  • Boost Programming Libraries , la biblioteca estándar de facto para C ++. Muchas de las bibliotecas de Boost se encuentran en nuevas versiones de C ++, comenzando con C ++ 11. Las bibliotecas Boost más recientes para terminar en C ++ son variantes, opcionales y sistema de archivos. Sus preguntas frecuentes hablan sobre cómo puede contribuir, aunque le recomiendo que evite enviar una biblioteca hasta que tenga una muy buena idea (son muy exigentes).
  • Thrust es aparentemente una biblioteca popular en paralelo escrita en C ++.
  • ComputeCpp de Codeplay es una excelente manera de aprender sobre OpenCL, SYCL y la programación heterogénea. Actualmente estoy aprendiendo sobre esto ahora.

Juegos:

Es posible que desee realizar algunas modificaciones en estos juegos para obtener algo de experiencia en su haber.

  • Doom 3
  • Quatter
  • monstruo-rpg-2

Gráficos:

  • OGRE3D, una biblioteca de gráficos 3D muy popular. OGRE documenta cómo puede contribuir.
  • Irrlicht Engine, otra biblioteca de gráficos de código abierto. Irrlicht también habla sobre cómo puede enviar parches o mejoras.
  • Aprenda OpenGL , si no está familiarizado con la programación gráfica moderna.
  • Aprendiendo programación moderna de gráficos 3D

Física:

  • Box2D
  • OpenDynamicsEngine (ODE)
  • NewtonGameDynamics
  • Bullet Physics. Esta es una lista de películas, juegos y software que emplean Bullet.

Motores de juego:

  • Desarrollo de motores de juego
  • CryENGINE , el sucesor de los motores de juego utilizados para desarrollar FarCry , Crysis , Crysis 2 y Crysis 3 . Creo que se utilizó para desarrollar RYSE: Hijo de Roma y Warface .
  • Torque2D
  • Torque3D
  • Primavera
  • Como se Juega

¡La mejor de las suertes!

La compañía le proporciona proyectos para trabajar y usted aprende de eso. Sin una compañía, te recomiendo tres opciones

Trabaja en tus propios proyectos

Cuando era estudiante, programé varias herramientas en C ++ para

– Juego en línea piratear o bot
– Hacer cosas de automatización

Registrarse para cursos en línea

Si no tiene idea sobre en qué proyecto debería trabajar, siempre puede buscar un curso C / C ++ que ofrezca algunas prácticas como: Aprenda C ++: Desarrollo de juegos maestros con C ++ en Udemy. Trabajarás con los instructores y aprenderás cómo terminar un proyecto. Más tarde, cuando tenga algunas ideas y podrá implementarlas.

Busque un proyecto de código abierto

Como la mayoría de las otras respuestas han mencionado, puede encontrar un proyecto de código abierto para trabajar.

Sin embargo, sinceramente, no creo que este sea un buen enfoque. La razón es que la mayoría de los proyectos de código abierto son muy complejos o demasiado simples para unirse. A menos que tenga un conocimiento decente del lenguaje y el diseño del software y pueda leer una gran base de códigos y sea lo suficientemente paciente como para trabajar en algo que no le guste.

Intenta inscribirte en algunos proyectos de código abierto en git hub.
Siempre están buscando ayuda, y puedes aprender mucho de ese tipo de experiencia, e incluso construir una buena red personal.
Pasé de escribir un emulador de juegos en C ++ a algunas bibliotecas personalizadas en Delphi y conocí a algunas buenas personas allí.

Salud

Escribir programas: decida algo que quiera hacer, como escribir un programa para catalogar a quién conoce o su biblioteca de DVD o algo así, y escribir un programa para realizar un seguimiento. Agregue características a medida que piensa en ellas. Luego póngalo en su currículum como si lo hiciera para la corporación XYZ. Es una mentira, pero igual lo hiciste, así que no es tanto una mentira como una apropiación indebida de detalles.