Soy un principiante y tengo poco conocimiento en programación.
¿Sería bueno si aprendo directamente C ++ de libros que cubren nuevos C ++ 11 o debería estudiar a través de los mejores libros antiguos de C ++?
¿Debo tener poco conocimiento sobre C ++ antes de aprender C ++ 11? o puedo comenzar directamente desde allí?
¿Causaría problemas si empiezo directamente desde C ++ 11? Si no, entonces sugiera algunos libros sobre C ++ 11.
Programmers — Stack Exchange is a site for professional programmers...
En ese caso, ¿te importaría guiarme al sitio para los programadores principiantes? También soy un novato de codificación y voy a tener algunas preguntas básicas ...Respuestas:
Hay muchas mejoras de usabilidad que hacen que C ++ 11 sea más comprensible para un principiante, especialmente uno que tiene experiencia en otros lenguajes con esas características. Otros cambios en C ++ 11 solo son de interés para usuarios avanzados, por lo que es probable que se sienta abrumado si elige un libro diseñado principalmente para enseñar las diferencias. Asegúrese de que cualquier libro que obtenga esté diseñado para principiantes completos en C ++.
Dicho esto, es probable que eventualmente tenga que aprender la vieja forma, ya que hay un montón de código existente, e incluso el nuevo código C ++ 11 contendrá la vieja forma de hacer las cosas si el programador así lo elige. Escribo C ++ para ganarme la vida, y mi empresa aún no ha llegado a evaluar compiladores compatibles con C ++ 11, y mucho menos usando uno en producción.
fuente
No necesita usar C ++ anterior para comenzar a usar C ++ 11, hay nuevas características en C ++ 11 pero su uso es opcional. Saber cómo usar las características de C ++ 11 podría ser una ventaja, ciertamente no sería una desventaja cuando se trabaja con bases de código heredadas (anteriores a 11) una vez que se conocen las idiosincrasias de las versiones anteriores.
Aprender C ++ sería un buen lugar para comenzar a aprender y el Apéndice B le enseñará las características de C ++ 11 después de que haya aprendido los conceptos básicos.
Puedo ver por qué algunas personas han sugerido Java / CSharp, etc., como lenguajes alternativos más fáciles, pero aprendí un poco de C ++ antes de pasar a CSharp y no soy peor programador por eso, por el contrario, las habilidades de programación son mucho más profundas que el lenguaje sintaxis / funcionalidad y con una base sólida en C ++ puede aprender cualquier otro lenguaje imperativo de OOP fácilmente.
fuente
Es difícil de decir.
Old C ++ es más un campo minado, y es bueno aprender a navegar como una bestia. También le hará comprender por qué las cosas se hacen como están y cuáles son las implicaciones de las diferentes construcciones.
Por otra parte, el viejo C ++ no es lo que quieres cuando escribes código.
Pero, una vez más, el viejo C ++ es lo que mucha industria seguirá produciendo durante 20 años más.
Me encanta C ++ 11, pero por ahora solo se puede usar en startups. No en bases de código heredadas grandes. Y saltar directamente a C ++ 11 podría dejarlo con habilidades sin desarrollar en partes desagradables de C ++. Lo cual será contraproducente una vez que algunas construcciones avanzadas de C ++ 11 se filtren o se bloqueen porque se usa de una manera sintácticamente correcta, pero lógicamente incorrecta.
fuente
A pesar de muchas mejoras en
C++11
,C++
todavía no es un lenguaje fácil. Java, aunque no es tan fácil como algunos piensan, sigue siendo un lenguaje más fácil con un rendimiento muy bueno (a menudo casi tan rápido comoC++
) y ofrece mejores IDE (tal vezVisual C++
sea tan bueno como los IDE de Java actuales pero no hay suerte aquí en Linux), mucho biblioteca estándar más completa (el JDK), más bibliotecas (por ejemplo , Hibernate , Spring , JEE , Lucene , etc.) y sin pérdidas de memoria (bueno, casi ninguna; aún puede construir una pérdida de memoria en Java, pero es más difícil hacerlo que enC++
). Para ser justos, con los modernosC++11
, es mucho más fácil evitar los puerros de memoria.C ++ 11 tiene muchas características interesantes como lambdas, palabra clave automática, semántica de movimiento y mucho más. Definitivamente es un idioma mucho mejor de lo que
C++98
era. Vea este resumen de Herb Sutter sobre las nuevas características enC++11
: Elementos deC++
estilo moderno .En resumen, creo que todos deberían aprender al menos algo
C++
. Si usted ha estado programando enJava
,Scala
,Ruby
oPython
en la última década y nunca tocadoC
oC++
, ahora conC++11
Creo que es hora de aprenderC++11
y mejorar sus habilidades de programación mientras lo hace.Probablemente no usaré
C++
mucho en el trabajo en los próximos años y cuando necesite un lenguaje más potente que elJava
, probablemente iré a Scala, pero examinaré más de cercaC++11
y trataré de aprender y comprender las nuevas características, particularmente los de multiproceso y concurrencia.fuente
Respira hondo y lee este artículo de Peter Norvig.
¿Has leído eso? Ok, si eres un principiante, debes comenzar en pequeños pasos. -inserción de idioma aquí- puede venir más tarde, echa un vistazo a Coursera o Udacity para algunos cursos de introducción a la informática para principiantes.
Una vez completado esto, te aconsejaría que trabajes lentamente a través del lenguaje de programación The C de K&R si estás configurado en un lenguaje 'C'.
Trabaja en lo básico, el resto llegará a tiempo.
fuente
Los libros introductorios recientes sobre C ++ también cubren cada vez más C ++ 11. Leí Sam's Teach Yourself C ++ después de trabajar con lenguajes de script pero no C / C ++ durante casi diez años y lo encontré realmente útil. Rápidamente me familiaricé con las ideas centrales de C ++ (incluida una gran cantidad de STL) y me di cuenta de una gran cantidad de detalles que son diferentes en C ++ 11.
Como algunos otros carteles han mencionado, C ++ 11 es en muchos sentidos más fácil que los estándares más antiguos con adiciones de estilo de scripting como
auto
,for(int &i : m_vector){}
etc. Entonces, si su "poco conocimiento" proviene de lenguajes como Python o Matlab, encontrará C ++ 11 algo más "natural" que los estándares anteriores.También quisiera señalar que, por ahora, la compatibilidad del compilador para C ++ 11 está ( casi ) completa, por lo que tener un código "demasiado actualizado para compilar" ya no es un problema.
En resumen, hazlo.
fuente
Cuando mi tiempo, C era considerado un requisito previo de C ++, especialmente para aquellos principiantes de programación. Porque tienes que descubrir qué hace un lenguaje y por qué se ha diseñado así. C tiene muchas ideas geniales y suficientes sobre lenguaje de programación, que nunca estarán desactualizadas. Por lo tanto, creo que este es el mejor comienzo.
Y después de tener un punto de vista básico con respecto a los temas de programación, es posible que deba elegir qué hacer como el próximo movimiento, lo que significa, elegir un idioma para aprender lo más profundamente que pueda. No importa qué tan profundo sea, generalmente puede decidir qué tan profundo puede ser para cualquier otro idioma, lo que significa que, sin importar cuántos idiomas haya aprendido, el más profundo siempre será el primero que haya desenterrado. Para mí, realicé una investigación sobre Java e hice algunos modelos de Java por mi cuenta para comprender mejor la funcionalidad de su núcleo.
Después de eso, es posible que pueda aprender lo que quiera, porque tiene una comprensión total de la tecnología del lenguaje de programación. He comenzado a aprender C #, Go, Python e incluso Scala y he realizado muchos proyectos por diversión / trabajo. El récord personal es de 3 meses desde que comenzó a aprender un idioma hasta convertirse en 1.0 jefe de un proyecto en desarrollo.
En mi caso, han pasado más de 15 años desde mi primer programa y ni siquiera puedo recordar de qué se trata. Creo que si trabajas lo suficiente, definitivamente mejorarás y serás más rápido que yo.
fuente
Como principiante, creo que primero debe pasar por los conceptos de C ++ porque C ++ 11 y todo es como una nueva versión, pero C y C ++ son los básicos para cualquier tipo de desarrollo. Una vez que haya aprendido C ++, la mayoría de los conceptos se borrarán automáticamente.
fuente
C ++ es un lenguaje realmente genial y poderoso. Sin embargo, también asigna mucha responsabilidad al programador.
Si eres completamente nuevo en programación, hazte la vida más fácil y comienza con C #. Su sintaxis se basa en C ++, pero el manejo de errores es mucho más fácil para los principiantes para ayudarlo cuando las cosas van mal.
Si se siente cómodo con los métodos, las clases, la herencia y desea desarrollarse en un entorno en el que administrar la memoria y los recursos del sistema es más importante que la productividad, entonces C ++ es una buena opción, y comenzaría aprendiendo el estándar actual. Tenga en cuenta que C ++ requiere que comprenda la memoria y la administre activamente. Comete errores aquí, y todo lo que obtienes es un núcleo volcado, o tus datos contienen bytes que no tienen sentido. Y, a menudo, el punto en el que encuentra el problema no está relacionado con la causa real.
fuente
¿Por qué quieres comenzar con C ++?
Yo personalmente recomiendo contra C ++ como primer idioma. Es complicado, complejo, difícil ... simplemente un nivel mucho más bajo y más "inseguro" que la mayoría de los otros lenguajes de programación.
Aconsejo elegir c #, java, python o javascript ... y un buen libro en el camino. Tendrás un tiempo mucho más agradable con estos.
fuente