Mi maestro dice que si aprendo C ++ podré compilar en C fácilmente, no es necesario aprenderlo. ¿Es esto cierto?

En mi opinión, tu maestro no estaba en lo correcto.

Ahora aquí está el por qué.

C y C ++ son lenguajes diferentes, la única similitud entre los dos es que la sintaxis de C es válida en C ++ (pero no al revés).

En general, la mayor diferencia entre los dos lenguajes es la “mentalidad” comúnmente utilizada por los programadores de C y C ++. El desarrollo de código en C requiere una mentalidad orientada a pensar en términos de procedimiento, así como una buena comprensión de la arquitectura de la computadora. El desarrollo de código en C ++ requiere una mentalidad orientada a pensar en términos orientados a objetos, y la comprensión de la arquitectura informática subyacente no es extremadamente importante.

En C ++, debe estar familiarizado con todas las bibliotecas de clases a su disposición, mientras que, en general, en C necesita poder recrear el propósito de muchas de las bibliotecas de clases de C ++ en C desde cero (como cómo escribir las suyas propias). lista doblemente enlazada en lugar de usar una clase de lista previamente escrita de una biblioteca). Sin embargo, dado que C tiende a usarse para la programación de sistemas y la interfaz de hardware, la ausencia de bibliotecas de clases no es muy importante. C ++ no es el mejor lenguaje para la programación de sistemas y la interfaz de hardware porque contiene muchas características que proporcionan poco o ningún valor a esas áreas de programación, pero C ++ sobresale por encima de C al hacer “programación de aplicaciones” e interfaces de usuario.

Dos lenguajes diferentes para diferentes áreas de programación que en general requieren dos mentalidades de programación diferentes. En mi humilde opinión, no mezcle los dos solo porque comparten algo de sintaxis entre sí.

Gracias por A2A.

C ++ es la versión actualizada y orientada a objetos del lenguaje C. Por lo tanto, C ++ no solo comparte muchas características de C sino que también ofrece nuevas características, como la orientación a objetos. Como resultado, la mayoría de los compiladores de C ++ también pueden compilar programas en C. El siguiente diagrama de Venn muestra cómo C y C ++ comparten características y cuán diferentes son:

Solo hasta cierto punto. Hay cierta superposición entre los dos lenguajes, pero muchas cosas que habrías hecho en C tienden a ser una mala práctica en C ++ (quizás aún sea posible pero no preferible). Algunas cosas en C ++ son simplemente imposibles de hacer de la misma manera en C, por ejemplo, no hay OOP automática. También algunas ideas en C ++ pueden usarse en C, aunque puede que no sea una muy buena idea allí.

Pero debería poder comprender qué hay en C si ha alcanzado un nivel decente de comprensión de C ++. Para el caso, lo mismo se aplica a casi cualquier otro lenguaje de procedimiento, especialmente aquellos con sintaxis similar. Aunque, como siempre, hay un sí, pero escondido en la hierba. Cada idioma tiene su propio conjunto de matices, modismos, conceptos preferidos, etc.

En cuanto a la compilación … la mayoría de los compiladores que manejan C ++ también pueden compilar C. Al menos los compiladores más actuales. Sin embargo, no es 100%, y lo contrario puede no ser válido en todos los casos. Pero lo más probable es que el compilador particular que está utilizando sea uno que maneja varios idiomas.

¡Si y no!

Sí, porque la sintaxis es la misma y C ++ trata a C como un subconjunto de sí mismo. Yo mismo mezclo y combino mucho los dos idiomas. Por ejemplo, incluso en las clases de C ++, prefiero la llamada printf al objeto cout debido a un mejor control sobre el formateo.

Sí, porque una vez que haya dominado C ++, puede obtener la C adecuada en solo unos días de aprendizaje y ajustes de estilo.

No, porque C no permitirá sus clases y objetos.

No, porque hay diferencias sutiles entre escribir C y C ++.

Sí, pero con pocas excepciones:

  1. c ++ es OOP (Programación Orientada a Objetos) y, por otro lado, la programación C es programación orientada a procedimientos. C se centra más en los procedimientos. C sigue un enfoque de arriba hacia abajo, es decir, el programa se compila o ejecuta de arriba a abajo, mientras que los programas c ++ siguen abajo -acercamiento.

2. En C, la estructura se puede crear con struct y Unions, mientras que en C ++, las clases se utilizan para resolver el problema.

Aunque C ++ es la versión extendida de C. Así que ve con c ++ y c te seguirá.

Sí, por supuesto que puede. Todos los idiomas difieren solo en algún aspecto. Solo tienen una sintaxis diferente. Pero el concepto sigue siendo el mismo. C ++ es una extensión de c, así que si conoce el concepto de c ++. Entonces puede aprender c fácilmente. lo que quiere .U puede hacer a cualquiera primero y luego podrá comprender fácilmente a los demás.

Creo que tu maestro puede estar hablando de tu trabajo de curso específico. En el aprendizaje a nivel universitario, cualquiera puede ser suficiente para poder saltar a otro, pero a medida que su experiencia y dimensión crezcan, pronto se dará cuenta de que esta afirmación es en gran medida falsa. Aquí hay algunas diferencias básicas entre los dos que pueden dificultar que su programa compile:

  • Puede sobrecargar una función en C ++, pero no en C.
  • Puede usar espacios de nombres en C ++, pero no en C.
  • Puede tener varios nombres de variables para apuntar a una misma dirección de memoria en C ++, pero no en C.
  • Puede usar plantillas en C ++, pero no en C.
  • Por lo tanto, tiene acceso a STL en C ++, pero no en C.
  • int * a = malloc (sizeof (int) * 50); // Esto se compilará en C, pero no en C ++.
  • Puede usar el tipo booleano nativo en C ++, pero no en C.

Hay muchos mas.

Bueno, C ++ sin usar OO (incluidos los destructores, lo que significa que tampoco hay RAII), plantillas (sin colecciones ni iteradores …), excepciones (códigos de error o goto ), sobrecarga de operadores y funciones ( dump_Foo(struct Foo *) , dump_Bar(struct Bar *) , etc.) y algo más que seguramente olvidé es un subconjunto de C ++ que está bastante cerca de C y obviamente se usará de formas completamente diferentes a las de C ++ normal.

Probablemente podrá leer y comprender correctamente el código C, pero no estoy seguro de que pueda escribirlo muy fácilmente: es una mentalidad diferente, donde el alias es la norma y el vacío * es la cura para todos ( y probablemente también el correcto).

Por otro lado, si aprende C primero, tenderá a usar ese estilo también en C ++ (que es el camino que muchos programadores de C ++ siguieron en el momento en que todos sabían que C y C ++ aún no estaban estandarizados), que es probablemente peor que no poder escribir C complejo desde el principio.

Voy a acortar mi respuesta ya que no quiero desarrollar una fama de “programador grosero” para mí aquí en Quora.

No, no podrá hacerlo como lo afirma el llamado maestro, a menos que limite su línea de trabajo a un rango simple de “tarea de curso de CS”. C y C ++ están definitivamente relacionados y muy cerca unos de otros lenguajes, pero al final son “diferentes”. Creo que Java podría estar más cerca de C ++ en algunos conceptos, pero eso también es limitado.

Es como decir “si sabes francés, puedes hablar español”. Tal vez pueda “escuchar y comprender partes del” español, pero esto no lo convierte en un orador … Aquí se aplica la misma analogía.

More Interesting

Necesito proporcionar una copia original certificada de mi certificado de nacimiento. Desafortunadamente, extravié mi certificado de nacimiento, pero tengo una copia certificada de mi certificado de nacimiento. ¿Me sorprendería si presentara esto como una copia original certificada?

El registro de mi automóvil expiró hace un mes (pero no lo he conducido sin estar registrado). Si planeo mudarme a otro estado pronto (dentro de un mes), ¿cuál es la forma más barata de manejar legalmente el registro del automóvil? ¿Necesito registrarlo en ambos estados?

Estoy ahorrando dinero para obtener un diploma, pero el problema es que siempre uso el dinero de la cuenta de ahorro que abrí. Tiendo a gastar cuando veo dinero. ¿Qué tengo que hacer?

Si observo la volatilidad implícita de una acción simplemente al mirar una opción de compra, ¿esta volatilidad implícita tiene algún valor informativo si solo estoy interesado en el riesgo a la baja de esa acción?

Me duele el tercer molar. ¿Qué tengo que hacer?

Quiero usar Ubuntu o cualquier distribución de Linux en lugar de Windows. ¿Qué debo aprender o cuáles serán las dificultades?

Mi abogado, quien originalmente dijo que mi caso civil era sólido, ahora está presionando por un compromiso. ¿Solo quiere terminar con eso, a pesar de los méritos?

Sigo escuchando no comprar acciones de SDS (ProShares Ultra Short S & P500) porque las acciones se reajustan diariamente. ¿Qué? ¿Como funciona?

He recibido un pedido por correo del cartero, pero no lo quiero, me arrepiento porque debería haberme negado a recibirlo, así que me lo devolvieron. ¿Puedo llevarlo a la oficina de correos para devolverlo? No lo he abierto.

Tengo un puntaje de crédito de aproximadamente 800. Sin embargo, tengo una gran deuda ya que me estoy graduando de la escuela de medicina. Tengo 3 tarjetas de crédito (una por 10 años), pero otras me negaron debido a mis préstamos. ¿Debo preocuparme por esto o se resolverá una vez que comience a obtener un salario?