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 .
- Tengo dos ideas en mente, un sello discográfico y una compañía de medios. ¿Debo crear 2 compañías o hacer que la compañía de medios sea una subsidiaria del sello discográfico?
- He leído muchas cosas que dicen que Trump es diferente de lo que está en las elecciones. Si es así, ¿por qué elige parecer realmente estúpido?
- Estoy pensando en un taller para niños desfavorecidos. ¿Qué tipo de educación debo promover?
- Me mudaré en mayo y buscaré un lugar para alquilar un apartamento de una habitación. Las áreas en las que sugirieron vivir están en Mercer Island, Redmond, Bellevue, Kirkland, Greenlake, East Lake o Wallingford. ¿Qué área sería mejor y cuánto podría costar?
- Mis exámenes universitarios son del 4 de mayo y aún no he comenzado mis estudios debido a una enfermedad. Ahora estoy en mucha tensión. ¿Que tengo que hacer ahora?
- 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.
- 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.
- 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!