Y los ganadores son:

Y los ganadores son:

La semana pasada, lancé un cuestionario. El precio era ganar uno de los cinco cupones para el libro "Modern C++ for Absolute Beginners" de Slobodan Dmitrović.

Tu desafío fue responder las siguientes preguntas:

  • ¿Cuál fue su mayor desafío al aprender C++? Si pudieras retroceder el tiempo, ¿qué harías diferente ahora?
  • ¿Qué consejo le daría a los principiantes en C++?

Antes de presentar, en nuestra opinión, las cinco mejores respuestas, quiero agradecer a los más de 20 participantes que brindaron respuestas muy interesantes. Cada uno tenía una perspectiva diferente. Para abreviar, estos son los cinco ganadores.

  • Nico Liberato Candio
  • Ivica Bogosavljevic
  • Gabriel Valenzuela
  • Dominik Cubelic
  • Dietmar Schulz

Enviaré sus direcciones de correo electrónico a apress y ellos se comunicarán con usted.

Aquí están las respuestas citadas. Arreglé algunos errores tipográficos.

¿Qué fue ¿Cuál es su mayor desafío al aprender C++? Si pudieras retroceder el tiempo, ¿qué harías diferente ahora?

Nico Liberato Candio

En mi opinión, uno de los mayores desafíos para aprender C++ es superar el "miedo" al lenguaje mismo; Recuerdo que en los años anteriores estaban sustancialmente ausentes en la literatura libros o recursos para hacer que el idioma fuera generalmente accesible y fácil de aprender. Los libros de C++ (excepto el buen libro Tour of C++, de Bjarne) son complejos y demasiado avanzados y detallados para un principiante absoluto.

Retrocediendo en el tiempo, priorizaría formas sencillas y accesibles de aprender el idioma, a través de un enfoque práctico (videos de hackers + ejercicios, recursos ausentes en ese momento, Udacity, etc.). Probablemente me concentraría más en los fundamentos de manera práctica (E/S, Clases y OOP, cadenas, STL, etc.) y luego comenzaría a tomar los temas más avanzados (plantillas, lambdas, etc.).

Ivica Bogosavljevic

Plantillas sin duda. Trabajo como ingeniero de rendimiento y las plantillas son una parte indispensable de eso. Puede tener varias versiones de la misma función donde cada una está optimizada para un caso específico sin ninguna duplicación de código. Puedo hacer código polimórfico rápido en tiempo de compilación al tener un contenedor separado para cada tipo y las plantillas me permiten tener varias funciones para cada uno de ellos.

Si pudiera retroceder en el tiempo, definitivamente aprendería mejor las plantillas. Plantillas variadicas, funciones recursivas con plantillas en tiempo de compilación, etc. Escribí un contenedor de matriz personalizado para objetos polimórficos que usa plantillas variadicas que es más rápido que cualquier cosa disponible en STL (puedo proporcionar el enlace si desea verlo).

Gabriel Valenzuela

Para mí, el mayor desafío es comprender la gestión de la memoria. C++ deriva de C, uno de los primeros lenguajes de programación que hace una abstracción de Assembler. C vino a ayudar a la gestión de la memoria usando las funciones calloc(), malloc() y free(), con esta base e introduciendo el Paradigma Orientado a Objetos (OOP) vino C++, siguiendo la línea de C e introduciendo las nuevas características que la modernidad poner a disposición.
Cuando aprendí C++ por primera vez, fue en mi universidad, primer año de ingeniería y hay muchas cosas que haría de manera diferente. Obtenga más información sobre nuevos estándares, aprenda más sobre compiladores y tenga una mejor comprensión de lo que significa un lenguaje compilado, aprenda punteros inteligentes y vea por qué son más eficientes que los punteros sin formato entre otros temas.

Dominik Cubelic

Como recién comencé a aprender C++, mi mayor desafío es encontrar recursos que sean buenos y que aún sean válidos y actualizados, y diferenciar toda la información mixta que recibo.
Si pudiera retroceder el tiempo, definitivamente aprendería C++ antes.

Dietmar Schulz

La introducción de .NET y C# me hizo muy afortunado. Maldije a C++ y realmente pensé que C# y .NET resolverían los problemas con C++ sobre punteros colgantes y pérdidas de memoria. Herramientas comoboundchecker y bugtrapper ya no serán necesarias.
--> ¡Qué tontería! Por supuesto, el desarrollo con C# se hizo más rápido y también caímos más rápido en las pistas conocidas de referencias cíclicas, también referencias nulas.
Y luego, debido a la protección de nuestra propiedad intelectual, todavía teníamos que usar C++ para estos módulos. Las partes vinculantes entre C# y C++ se implementaron luego en el C++ administrado de Microsoft... Frustrante.

¿Qué consejo le daría a los principiantes en C++?

Nico Liberato Candio

Priorizar el enfoque práctico, comenzando desde lo básico:seguir un programa basado en el 50% del tiempo dedicado a la teoría (aprender I/O por ejemplo) y luego aplicar la teoría con ejercicios prácticos.

Ivica Bogosavljevic

C++ es difícil. El lenguaje es complejo, hay muchas peculiaridades que aprender. Pero exactamente por esa razón, es rápido y potente. Así que no te preocupes, dominarás las cosas más comunes rápidamente y aprenderás otras cosas cuando llegue el momento.

Gabriel Valenzuela

Ten paciencia. Aprender C++ puede ser como escalar una montaña, la meta parece tan lejana e inalcanzable, pero paso a paso (por más pequeño que sea) estamos un poco cerca de terminar nuestro camino. Y otro consejo, equivocarse no significa fracasar, mejor dicho, se aprende más de nuestros errores que de nuestros aciertos.

Dominik Cubelic

Bueno, como soy un principiante, los consejos que creo que funcionan mejor son:lee mucho y codifica código código.

Dietmar Schulz

No comience con C simple y transfiera eso a C++, use STL y otras bibliotecas tanto como sea posible en lugar de desarrollar el contenedor usted mismo. En el uso de punteros, ¡siempre tenga en cuenta la propiedad! Siempre mire las advertencias que emite su compilador en el modo de lanzamiento, ¡puede haber sugerencias muy importantes que no recibe en las compilaciones de depuración!

Una vez más. Muchas gracias por sus excelentes respuestas.

Modernos C++,