2010-08-27 14 views
16

Quiero entrar en el equipo de C++ en el trabajo. Su trabajo es escribir CGI en C++ (principalmente pero no limitado a). Sé básico C++. Leyendo la lista al C++ book guide pregunta sobre SO, tengo tres libros de un amigo (en realidad tuve el primero).Ideas de proyectos para ser bueno en C++

  1. El C++ Programming Language - Bjarne Stroustrup - para referencia
  2. C++ Plantillas La guía completa - David Vandevoorde/Nicolai M. Josuttis Diseño
  3. Moderno C++ - Andrei Alexandrescu

  1. Me gustaría saber si hay algún proyecto o idea que pueda decirme que pueda implementar para que pueda obtener bett er en eso.

  2. La configuración que necesito. Tengo una Macbook y una máquina de servidores dev de Ubuntu. Puedo bootcamp para instalar cualquier sistema operativo si es necesario.

  3. ¿Pueden darme también algunas sugerencias sobre cómo comenzar a escribir CGI (o cualquier tutorial)?


muchas gracias.

AJ

+6

¿Has programado mucho C++? Si no lo ha hecho, entonces _C++ Templates_ y _Modern C++ Design_ podrían estar un poco avanzados. Ambos son excelentes libros, pero en realidad no son para principiantes. –

+6

@James + @AJ: Yo diría que el libro de Bjarne Stroustrup tampoco es para principiantes ... –

+0

Una Macbook debería estar bien, solo instale Xcode y está listo para programar en C++. –

Respuesta

6

Permítanme agregarlo a su lista de material de lectura; el C++ FAQ Lite es absolutamente el mejor recurso para aprender los pormenores de C++. Es útil tanto como referencia para los veteranos y como una introducción a los principiantes. Recomiendo leer todo lo que pueda y pruebe pequeños ejemplos que demuestren cada característica mencionada antes de unirse a un proyecto real.

Una vez que se sienta algo cómodo con el idioma, le recomendaría echar un vistazo a Github y ver si hay algún C++ projects que necesite ayuda. En cuanto a las imágenes generadas por computadora o la interfaz de puerta de enlace común, ambas son independientes del idioma. Estos pueden escribirse en cualquier lenguaje de programación, aunque diferentes lenguajes de programación tendrán diferentes bibliotecas existentes para manejarlos. Sugiero que lea sobre el tema para comprender mejor el estándar/algoritmos (dependiendo de cuál de los dos haya querido decir). Una vez que esté más familiarizado con el tema, debería estar en una mejor posición para comprender la documentación de las bibliotecas relevantes.

En cuanto al entorno de desarrollo, creo que Ubuntu es el más fácil de configurar, ya que casi toda la configuración se puede reducir a una serie de comandos apt-get install. Por ejemplo:

sudo apt-get install build-essential 

Independientemente del sistema operativo que utilice, es probable que desee para crear y ejecutar el código en un entorno predecible, reproducible. También debo señalar que el entorno en el que se desarrolla no necesita ser el mismo en el que se construye y ejecuta el código. Por ejemplo, puede escribir todo su código en Mac OS X, pero compilar y ejecutar su código en un contenedor Docker que esté ejecutando una instancia de Ubuntu con su configuración de compilación/ejecución preestablecida y reproducible.

En términos de recursos para implementar CGI en C++ (y para otros códigos), consulte la página C++ resources en mi sitio web. Enumera varias herramientas para redes, gráficos por computadora y otras tareas de C++, así como bibliotecas de propósito general como Boost y Qt.

+0

Estoy bastante seguro de que quería decir gráficos de computadora CGI – Anycorn

+0

@aaa, oh. ¿Por qué los gráficos de computadora son "CGI" y no "CG"? –

+0

@Michael: Imágenes generadas por computadora. Sin embargo, yo también creo que el OP significa Common Gateway Interface. Ciertamente es difícil de decir. –

2

en mi opinión, si se hace algún pequeño proyecto utilizando

puede acceder a los temas avanzados de C++ como plantillas de expresión. el proyecto incluso no tiene que hacer nada útil, siempre que sea posible juntar piezas para producir algún resultado.

si conoce algo de C++, puede pasárselo en grande presionando al límite de idiomas solo con el fénix.

en cuanto a las ideas, CGI es probable que sea pesado en las matemáticas, intente, por ejemplo, escribir algoritmo de integración paralela usando plantillas de expresión.

por ejemplo, puede crear una sintaxis como esta:

integrate(x*x + sin(x), 0, 100, threads(4)); 
+1

Pero él quiere algunas ideas ... –

4

La mejor manera de mejorar en C++ es ... escribir código C++. Comience con un raytracer simple sin dependencias externas (solo escriba salida a un archivo PPM).

  1. Creo que este es un problema lo suficientemente interesante y le permitirá empezar a trabajar con el núcleo del lenguaje,
  2. La falta de dependencias reducirá las distracciones potencialmente complejos modismos biblioteca de terceros que no se puede apreciar todavía y cosas molestas como bibliotecas y enlaces. Además, tendrás menos peculiaridades de C++ en tu cara.

Constrúyalo después de que tenga más experiencia. Vuelva atrás, refactorice su código, agregue características más complejas, bibliotecas de terceros (por ejemplo, escriba una salida JPEG, comience a usar bits de refuerzo, como punteros inteligentes).

Enjuague, repita.

2

Lea el libro 'Effective C++' de Scott Meyers. Es excelente y le dará buenos consejos sobre mejores prácticas y cosas para evitar.

Cuestiones relacionadas