¿Es una mala idea aprender programación en C antes de aprender C ++?

Soy muy escéptico ante cualquier afirmación de que no se debe aprender C antes que C ++. A mi entender, mucha discusión sobre los estilos de programación es algo así como guerras religiosas: se basan en la fe y no hay datos reales que respalden sus afirmaciones. Están haciendo argumentos como si estuvieran basados ​​en hechos, cuando es más una cuestión de gustos.

Personalmente, aprendí C (en 1984) antes de aprender C ++ (en 1989). No puedo decir que lo haya sufrido. Pero entonces, estos son solo dos de las docenas de idiomas que he aprendido desde que comencé a programar en Algol en 1969.

Estas personas probablemente están siendo doctrinarias sobre el diseño orientado a objetos sobre un estilo declarativo, como si un estilo fuera mejor que otro. Están equivocados: cada estilo tiene sus fortalezas y debilidades, y es mejor que aprenda todos los estilos populares.

Aprender un lenguaje de programación para un programador es como aprender un nuevo instrumento musical para un músico. Aprender más idiomas no te convierte en un peor programador, al igual que aprender más instrumentos no te convierte en un mal músico. El problema aquí es que cada idioma, como cada instrumento es diferente, con sus propias idiosincrasias y expresiones idiomáticas, y debe aprender a programar en cada idioma idiomáticamente. Tienes que ganarte tus chuletas.

La única forma en que esta advertencia tiene sentido es que usted hace en medio de C ++ lo que estaba haciendo en medio de C. Los dos lenguajes son diferentes, tan diferentes como un silbato de una flauta. Aprenda a trabajar en ellos en su propio estilo y tome cada uno como lo que son.

Personalmente, solo estoy pasando por esto en el aprendizaje de Python. La programación en Python es diferente de la programación en Perl o incluso Basic. Tienes que aprender los modismos.

Pero en general, no, no está de más aprender tantos idiomas como puedas. Todo lo contrario: amplía tu experiencia.

Posiblemente.

Una desventaja posiblemente significativa de aprender C antes de C ++ es que el alumno puede desarrollar hábitos mentales que le impiden aprovechar al máximo las características de abstracción que C ++ le ofrece al programador, como clases, herencia, etc. Básicamente, trabajar con C lo alienta a pensar ‘cerca del metal’ y, a veces, puede estar demasiado cerca porque C ++ es casi totalmente compatible con C. Si escribe código en C ++ como lo hace en C, no está aprovechando las características en C ++.

Sugiero que enseñe Python después de que haya terminado de enseñar C. Los conceptos de orientación a objetos pueden ser más fácilmente entendidos por un novato en un lenguaje de alto nivel como Python.

Algunas personas dicen que si has aprendido C antes de C ++, entonces es más difícil porque primero debes olvidar C para aprender C ++.
Entiendo su punto de vista. Para no mezclar procedimientos con OOP y así escribir código de espagueti.
Pero es una sugerencia terrible que muestra que esas personas no tienen idea de los paradigmas de programación.

Algunas otras personas sugieren aprender C antes que C ++.
Pero esto no es un requisito porque C ++ no es Java o C #, donde todo es una clase y, por lo tanto, es posible que no comprenda completamente la diferencia entre procedimiento y OOP.
En C ++ puede escribir código de procedimiento casi puro (considerando que solo usa la sintaxis de C ++).
Debido a esto, y no con respecto al uso de clases incorporadas como istream, comprenderá la diferencia entre clases, objetos y código de procedimiento.

Entonces no, no tiene que aprender C, pero es informativo conocer los comienzos de C ++. Después de todo, primero se llamó C con clases .

Todo lo contrario.

Solía ​​enseñar a estudiantes que ya habían “aprendido” C ++, pero después de Java en lugar de C. Esto fue un gran desastre.

Resolverían todos los problemas en términos de alguna combinación de contenedores STL, y nunca usarían un puntero. Ahora no hay nada de malo en eso, y de hecho, en C ++ moderno, esa es a menudo la mejor manera. El problema es que lo hicieron porque es la única forma en que lo sabían y no tenían idea de lo que esos contenedores estaban haciendo debajo (lo que requiere conocimiento de nivel C), lo que inevitablemente condujo a problemas importantes (corrupción de memoria o problemas de rendimiento).

Por supuesto, como profesor, es mi trabajo arreglar esa brecha de conocimiento. Pero no importa con qué frecuencia intenté explicarles por qué se invalidaron sus iteradores, por qué ciertas cosas implicarían copiar en lugar de hacer referencia, estos no se pegarían. Debido a que su modelo mental era uno de objetos y contenedores, este nuevo conocimiento no tenía un lugar lógico, y una “falla de segmentación” son solo estos misteriosos errores aleatorios, el precio que paga por C ++.

En cambio, si aprende C primero, incluso si termina no usándolo directamente una vez que haga la transición a C ++, le hará comprender C ++ más profundamente, de modo que su código será de mayor calidad. Causará menos errores y tomará mejores decisiones de implementación. Lo más importante, aprender C ++ es más fácil, porque puedes representarlo en tu modelo mental en términos de menos conceptos básicos.

Lo mismo ocurre con el aprendizaje de C. Asegúrese de comprender cada concepto de C en términos de memoria. Te hará entender C más profundamente, y lo dominarás más rápidamente.

No será una mala idea. C y C ++ tienen muchas construcciones comunes. Su sintaxis es similar. Entonces la transición es fácil. Lo importante es que aprender un lenguaje de programación ayuda a familiarizarse con las cosas importantes que se utilizan para resolver un problema, como variables requeridas, procedimientos, bucles, etc. Por lo tanto, resultará beneficioso si tiene tiempo. Sin embargo, C ++ también tiene características orientadas a objetos que no están presentes en C. Sin embargo, no son difíciles de aprender. Como es el primer lenguaje de programación que va a aprender, le tomará un tiempo familiarizarse. Si puede aprender C en el tiempo disponible y luego pasar a C ++, entonces será un buen enfoque y aprenderá dos idiomas. (En realidad, C ++ es como un superconjunto de C, aunque hay algunas excepciones).

Los algoritmos básicos de nivel universitario tienen una implementación similar tanto en C como en C ++. Entonces aprender C no dolerá, de hecho ayudaría mucho. la única diferencia sería Nuevo en lugar de Malloc & Cout en lugar de Printf
Si profundizas, encontrarás diferencias.

Aprender C no puede convertir a nadie en un mal programador. De hecho, una vez que aprenda C, que es un lenguaje de bajo nivel y trata el hardware muy de cerca, podrá elegir lenguajes de alto nivel como Java y Python con mucha facilidad, ya que C le exige mucho esfuerzo. lo cual no es cierto para otros idiomas de nivel superior.

El único inconveniente es que desarrollará un hábito de codificación no orientado a objetos, que puede desaprender rápidamente y comenzar a explotar el poder de OOP.

Entonces, en general, PARA ELLA, no hay inconveniente en aprender C, ya que de todos modos aprenderá POO con C ++.

No hay nada particularmente malo en aprender C, luego aprender C ++. Ciertamente puedes aprender a usar C ++ (e incluso a usarlo bien) a pesar de conocer C.

Sin embargo, no creo que aprender C sea particularmente útil para aprender C ++. De hecho, más bien lo contrario: si bien es un obstáculo que se puede superar, es un obstáculo, no una ayuda.

Sin embargo, probablemente debería agregar otro punto: muchas clases que pretenden enseñar C ++ a menudo lo hacen excepcionalmente mal. Lo que muchos de ellos enseñan está mucho más cerca de C, con algunos pedazos de C ++ “arrojados” aquí y allá, por lo que no es aceptable para un compilador de C, pero tampoco hace un uso óptimo (incluso cercano) de C ++ . Si ese es el caso aquí, aprender C puede ayudarla fácilmente a pasar la clase, a pesar de que es un obstáculo para aprender a escribir bien C ++ (pero esa clase también dificultará aprender a usar bien C ++).

No lo creo. De hecho, se sugiere aprender C antes que cualquier otro lenguaje de programación.
Para ser verdad, estas cosas apenas importan, si sus conceptos son claros.
¡Solo haz lo que dice tu novia!

PD: Si es necesario, estudie C ++ primero y luego enséñele. Simplemente no dejes que su maestra favorita la abandone 🙂

En mi opinión, no. C ++ es un superconjunto de C. Si no conoce C, no conoce C ++ por completo.

Es cierto que hay técnicas que tendrías que desaprender (por ejemplo, funciones de devolución de llamada en plantillas C vs y funciones virtuales en C ++), pero conocer C te ayudará a comprender lo que sucede debajo del capó y algunos de los C ++ menos orientados a objetos que se encontrará

Además, si solo le estás enseñando C durante las vacaciones, dudo que realmente pueda ponerse en su camino. Si aprendiera a escribir funciones de devolución de llamada y cómo funcionaban, me impresionaría.

Aprendí C antes que C ++. Y asamblea antes de eso. Actualmente programando en Javascript principalmente.

No me preocuparía … ¡aprender algo de programación es mejor que no aprender nada! Es mejor aprender C antes que C ++ que no aprender C cuando podrías hacerlo, y luego aprender C ++.

Es difícil comenzar a usar OO cuando cambia de C a C ++, y es tentador volver a las funciones. Pero sigo pensando que C ++ es mucho más fácil si ya conoces algo de C.

¡De ningún modo! C es muy bueno para desarrollar conceptos básicos para otros lenguajes de nivel superior. La principal diferencia entre C y C ++ es que el primero es un ‘lenguaje de programación estructurado de nivel medio’, mientras que el segundo es ‘orientado a objetos’ y tiene un alcance y usabilidad mucho mejores. Sugeriría a cualquiera que domine C antes de dirigirse a C ++.

NO ES TODO … C es el lenguaje más básico y si puedes codificar en C puedes codificar en cualquier idioma. Debería aprender C ++ después de tener un control firme sobre C.

Absolutamente no. En mi opinión, es muy bueno y se beneficiará si aprende C antes que C ++ porque creo que c es la base de muchos lenguajes y si aprende C primero será muy fácil para usted aprender C ++ y tomará menos tiempo si ya aprendiste C.
Pero si tiene que aprender solo C ++ y después de eso no quiere aprender o no tiene interés en aprender más sobre programación, entonces no aprenda C, pero si lo toma en serio y tiene interés en programar, entonces debe aprender C.

De ningún modo. C ++ es solo C con clases (y plantillas y STL y … 🙂). Si es una principiante completa en programación, ya sea que enseñes C o C ++, estarás enseñando lo mismo. Porque cosas fundamentales como la sintaxis, las palabras clave, etc. son exactamente iguales en C y C ++

Si la pregunta fuera simplemente “qué idioma aprender primero”, definitivamente iría con C ++.
Sin embargo, considerando la tutoría ‘íntima’, diría que lo haga.
C es un lenguaje realmente difícil para comenzar a programar, pero con un tutor comprometido como usted, solo puede ayudar con sus clases de C ++.

Definitivamente lo vale. Hay algunas personas que predican programación orientada a objetos sobre todos los demás estilos; estos pueden sentir que C es herejía.

Animo a cualquier programador a descubrir su propio estilo preferido en lugar de seguir dogmáticamente el estilo preferido del día.

¡Entonces, aprende C primero! ¡Gran idea!

En mi opinión, para enseñar a alguien deberíamos ser superiores en esa materia.
¿Pero no hay nada malo en compartir el conocimiento? Hay mucha diferencia en enseñar y compartir conocimiento.

Sin conocer los fundamentos de C como punteros, estructuras, matrices, tampoco se puede entender C ++.

Hola,

Necesita aprender C antes que C ++. Eres todo lo contrario. En C ++, necesitará muchos conceptos de C, por lo que debe trabajar primero en C e intentar aclarar su base porque C requerirá en todas partes en el campo de la programación.

si te hace sentir mejor, mis habilidades en C ++ mejoraron mucho después de que aprendí algo de codificación “C”. Realizo el procesamiento de datos, por lo que abro y cierro principalmente archivos y proceso datos en matrices, análisis de Fourier, etc. Quizás hay algunas aplicaciones donde C ++ es muy superior a C, pero no veo ninguna para un estudiante de primer año.