¿Debo aprender C antes de aprender C ++?

Visité el día de apertura de un departamento de CS de la universidad hoy y en el recorrido de los laboratorios nos sentamos a jugar con un par de proyectos del último año de estudiantes de pregrado. Uno fue particularmente bueno, una especie de juego de asteroides FPS. Decidí echar un vistazo al directorio src para encontrar que se hizo en C ++ (la mayoría de los otros proyectos eran aplicaciones Java 3D).

No he hecho ninguna C antes pero he revisado algún código C antes. Por lo que vi en el código .cpp en este juego, no se veía muy diferente.

Estoy interesado en aprender C o C ++ pero probablemente aprenderé el otro más adelante. ¿Hay alguna ventaja para mí aprendiendo uno antes que el otro y, de ser así, cuál?

No es necesario aprender C antes de aprender C ++.

Son idiomas diferentes . Es una idea falsa común que C ++ depende de alguna manera de C y no es un lenguaje completamente específico por sí mismo.

El hecho de que C ++ comparte mucha de la misma syntax y mucha de la misma semántica, no significa que tenga que aprender C primero.

Si aprende C ++ eventualmente aprenderá la mayor parte de C con algunas diferencias entre los idiomas que aprenderá con el tiempo. De hecho, es muy difícil escribir correctamente C ++ porque los progtwigdores intermedios de C ++ tienden a escribir C / C ++. Eso es cierto ya sea que hayas comenzado con C o que hayas empezado con C ++.

Si conoce C primero, entonces eso es bueno más que aprender C ++. Comenzarás conociendo una parte del lenguaje. Si no conoce C primero, no tiene sentido enfocarse en un idioma diferente. Hay muchos buenos libros y tutoriales disponibles que le ayudarán a no saber nada y cubrirán todo lo que aprenda de C, que también se aplica a C ++.

Por favor, ve un razonamiento adicional en esta respuesta .

Me encanta esta pregunta, es como preguntar “¿qué debo aprender primero, hacer snowboard o esquiar”? Creo que depende si quieres hacer snowboard o esquiar. Si quieres hacer ambas cosas, debes aprender ambas cosas.

En ambos deportes, te deslizas por una colina sobre la nieve usando dispositivos lo suficientemente similares como para provocar esta pregunta. Sin embargo, también son lo suficientemente diferentes para que aprender uno no te ayude demasiado con el otro. Lo mismo con C y C ++. Si bien parecen ser idiomas suficientemente similares en syntax, la configuración mental que necesita para escribir el código OO frente al código de procedimiento es lo suficientemente diferente para que tenga que comenzar desde el principio, sea cual sea el idioma que aprenda en segundo lugar.

Aprendí C primero, y tomé un curso en estructuras de datos que usaba C, antes de aprender C ++. Esto ha funcionado bien para mí. Un curso de estructuras de datos en C me dio una sólida comprensión de los indicadores y la gestión de la memoria. También hizo obvios los beneficios del paradigma orientado a objetos, una vez que aprendí lo que era.

Por otro lado, aprendiendo C primero, he desarrollado algunos hábitos que inicialmente me obligaron a escribir código C ++ incorrecto, como el uso excesivo de punteros (cuando las referencias C ++ lo harían) y el preprocesador.

C ++ es realmente un lenguaje muy complejo con muchas características. En realidad, no es un superconjunto de C. Más bien, hay un subconjunto de C ++ que consiste en las construcciones básicas de progtwigción procedural (bucles, ifs y funciones), que es muy similar a C. En su caso, comenzaría con eso, y luego trabajaría para llegar a conceptos más avanzados. como clases y plantillas.

Lo más importante, en mi humilde opinión, es estar expuesto a diferentes paradigmas de progtwigción, como procedimental, orientado a objetos, funcional y lógico, desde el principio, antes de que su cerebro se congele en una sola forma de mirar el mundo. Por cierto, también recomendaría que aprendieras un lenguaje de progtwigción funcional, como Scheme. Realmente expandiría tus horizontes.

Voy a estar en desacuerdo con la mayoría aquí. Creo que deberías aprender C antes de aprender C ++. Definitivamente no es necesario, pero creo que hace que aprender C ++ sea mucho más fácil. C está en el corazón de C ++. Todo lo que aprenda sobre C es aplicable a C ++, pero C es mucho más pequeño y fácil de aprender.

Recoge K & R y léelo. Es corto y le dará un sentido suficiente del idioma. Una vez que tenga los conceptos básicos de los punteros y las llamadas de función hacia abajo, puede pasar a C ++ un poco más fácil.

Creo que deberías aprender C primero, porque aprendí C primero. C me dio una buena comprensión de la syntax y los errores con cosas como punteros, todo lo cual fluye hacia C ++.

Creo que C ++ hace que sea fácil resumir todos esos problemas (¿necesita una matriz que no se desborde cuando usa el operador [] y un índice dudoso? Claro, haga una clase de matriz que verifique los límites) pero necesita saber qué ellos son mordidos por ellos antes de que entiendas por qué las cosas se hacen de ciertas maneras.

Cuando todo está dicho y hecho, la forma en que normalmente se enseña C ++ es “C ++ es C con objetos, aquí está C y aquí funciona todo esto OO”, por lo que es probable que aprendas C básica antes de cualquier C ++ real si seguir la mayoría de los textos de todos modos.

C es un lenguaje imprescindible para la ingeniería de software. C ++, Java, python, no lo son. Primero debes aprenderlo sin ninguna duda.

Si decide aprender ambos (y como otras personas lo han mencionado, no hay necesidad explícita de aprender ambos), aprenda C primero. Pasar de C a C ++ se siente como una progresión natural; ir hacia otro lado se siente como atar deliberadamente una mano a la espalda. 🙂

En el proceso de aprender C ++ aprenderás la mayor parte de C también. Pero tenga en cuenta que gran parte del código C ++ no es válido. C. C ++ fue diseñado para ser compatible con el código C, por lo que yo diría que primero aprenda C ++. Brian escribió una gran respuesta con respecto a esto.

Aprender C te obliga a pensar más en algunos temas, como la administración de memoria explícita e implícita o los tamaños de almacenamiento de los tipos de datos básicos en el momento de escribir el código.

Una vez que hayas alcanzado un punto en el que te sientes cómodo con las características y características incorrectas de C , probablemente tendrás menos problemas para aprender y escribir en C ++.

Es muy posible que el código C ++ que ha visto no se parezca mucho al C estándar, pero puede ser porque no estaba orientado a objetos y no usaba excepciones, orientación a objetos, plantillas u otras características avanzadas.

No.

En general, es más útil aprender C ++ porque está más cerca de los lenguajes más modernos basados ​​en OO, como Eiffel o C #.

Si su objective es aprender C ++, primero aprenda C ++ moderno y estándar. Deje los mallocs a un lado.


Pero Steve Rowe tiene un punto …

Habiendo observado personas que aprendieron primero Java, luchan con los conceptos de indicadores y administración de la memoria en C ++, diría que aprender C primero es una buena idea, para comprender estos dos conceptos, aislados de las complejidades de otros C ++ caracteristicas.

Al igual que las respuestas a muchas otras preguntas en la vida, depende. Depende de cuáles sean sus intereses y objectives de progtwigción. Si desea progtwigr aplicaciones de escritorio, quizás con una GUI, entonces C ++ (y OOP) es probablemente una mejor manera de hacerlo. Si está interesado en la progtwigción de hardware en algo que no sea un chipset x86, entonces C es a menudo una mejor opción, generalmente por su velocidad. Si quieres crear un nuevo reproductor multimedia o escribir una aplicación comercial, elegiría C ++. Si quieres hacer simulaciones científicas de colisiones de galaxias o dinámica de fluidos, contempla el poder de C.

Creo que aprender C primero es una buena idea.

Hay una razón por la cual los cursos de ciencia ficción todavía usan C.

En mi opinión, es para evitar todo el “hacinamiento” del tema que conlleva la obligación de exigir OOP.

Creo que la progtwigción de procedimientos es la forma más natural de aprender primero la progtwigción. Creo que eso es cierto porque al final del día es lo que tienes: líneas de código que se ejecutan una detrás de la otra.

Muchos textos de hoy están impulsando un enfoque de “los objetos primero” y comienzan a hablar sobre los automóviles y los cambios de marchas antes de que introduzcan matrices.

Mis dos centavos:

Sugiero aprender C primero, porque:

  • es un lenguaje fundamental: muchos idiomas descienden de C
  • más plataformas admiten el comstackdor C que C ++, ya sean sistemas integrados, chips GPU, etc.
  • según el índice TIOBE, C sigue siendo aproximadamente 2 veces más popular que C ++.

Creo que c es un lenguaje de progtwigción realmente agradable, es compacto y algo fácil de aprender. pero si solo quieres aprender c ++ comienza con c ++. pero te sugiero que aprendas ambas cosas. y si quieres hacer eso; Creo que es mejor comenzar con c. como se dijo antes: es pequeño y algo fácil de aprender. podría ser un buen paso hacia un lenguaje de progtwigción más complejo como c ++. (dado que c le proporciona algunos conceptos básicos)

buena suerte.

Algunos libros en C ++ suponen que el lector tiene un conocimiento mínimo de C, pero el idioma que elija no es incorrecto, porque muchos lenguajes de progtwigción se basan parcialmente en C / C ++ y para el aprendizaje futuro, otros idiomas serán un poco más fáciles.