Hack x Crack - Comunidad de Seguridad informática

Programación => C / C++ => Mensaje iniciado por: stakewinner00 en Junio 05, 2015, 04:16:30 pm

Título: Diferencia entre C y C++
Publicado por: stakewinner00 en Junio 05, 2015, 04:16:30 pm
Visto que mucha gente se confunde entre C y C++ voy a explicar brevemente que es C y que es C++.

C no es C++, C y C++ son lenguajes radicalmente distintos, y digo radicalmente porque siguen filosofías distintas. C y C++ no tienen relación alguna, no necesitas aprender primero C++ para aprender C ni necesitas C para aprender C++.
Ahora alguien se podría preguntar porque "C/C++" esta junto en la misma sección, supongo que es porque C y C++ aunque son lenguajes completamente distintos tienen una sintaxis "similar", o mejor dicho la sintaxis de C es compatible con la de C++.

Hay veces que por el hecho de que C y C++ fueron creados hace tiempo se piensa que están obsoletos, ni C ni C++ están obsoletos, es más, hoy en día siguen siendo los lenguajes clave para que funcionen nuestros ordenadores. Por ejemplo Linux esta en C, windows en C++ (en windows 10 y adelante no se si cambiaran algo), muchos juegos tienen el núcleo en C++ y muchos drivers estan en C por ejemplo. En concreto para C++, aún se está desarrollando la librería estándar, ahora se esta trabajando en un estándar para el 2017, así que anticuado no esta. En C no estoy tan al día pero aún se usa en el mundo real al igual que C++.

Ahora que ya aclaramos que C no es C++ y que no están obsoletos queda discutir que lenguaje aprender, y en este punto hay bastante discusión como se puede ver en algunos post del foro (ej: https://foro.hackxcrack.net/c/c-o-c/).
Si lo miramos desde el punto de vista de la fácilidad hay dos argumentos. El primero afirma que:
 puesto que C++ tiene una librería estándar mucho más amplia abarca muchos más problemas y por tanto al tener tantas herramientas disponibles no tenemos que complicarnos la vida creando nuestra herramienta, solo tenemos que buscar la adecuada y usarla. Por tanto es más fácil aprender C++ que C, aunque cuesta más ser un experto porque es más complejo al tener más librerías
el segundo argumento afirma que
C es más simple ya que tiene una librería estándar más reducida. Critica que la librería estándar de C++ solo añade complejidad innecesaria creando en ocasiones varias herramientas que hacen lo mismo o casi lo mismo. Por tanto es más fácil aprender C que C++, solo tienes que entender bien las cuatro cosas que hay y es más fácil ser un experto, aunque al comenzar pueda ser algo difícil con los punteros y demás.
Entre estas herramientas hay una actualmente muy usada por la cual C++ es más famoso, la Programación orientada a objetos (POO) de C++ que no tiene C. Eso se puede ver tanto como una herramienta inútil o como una ventaja. C++ tiene por diseño POO y por tanto es más sencillo usar POO en C++, pero en C se puede simular la POO igualmente. C++ tiene muchas más herramientas que C no, pero según dicen los que defienden C, estas herramientas solo añaden complejidad. Aunque personalmente yo no usaría POO por norma general...

Aquí se podría rellenar varias páginas con discusiones técnicas sobre si ciertas herramientas son útiles o no.

Sobre la velocidad de ejecución y compilación entre C y C++. En ejecución la diferencia no es muy notable, si se usa el mismo algoritmo y en los casos esta bien programado y compilado usando un compilador moderno la velocidad de ejecución será muy similar. En cuanto a la velocidad de compilación, compilar un programa grande que este programado en C se tarda mucho menos que si esta programado en C++, la razón es que C++ añade complejidad al compilador para "facilitarla" al programador, lo que causa que compilar programas en C++ pueda ser más lento que en C.

Así a modo de resumen, la filosofía de C es la de mantener un lenguaje sencillo (pocas herramientas pero polivalentes), mientras que C++ apuesta por tener muchas herramientas lo cual añade complejidad pero un buen programador tendría que saber escoger sabiamente. En realidad la discusión entre C y C++ se podría resumir a que se basan en filosofías distintas, a veces puede venir mejor trabajar en C y a veces en C++.

En resumen, creo que es bueno mirarse un poco los dos lenguajes, aunque por norma general creo que es mejor C para trabajar a bajo nivel, kernels, drivers, etc y para lo otro a gustos de cada persona aunque grandes programas (como juegos) suelen hacerse en C++ (pero con tan pocas herramientas que casi es C) supongo para que se pueda mantener más "fácilmente".
Título: Re:Diferencia entre C y C++
Publicado por: xHulkMx en Agosto 11, 2016, 09:27:39 am
Hola stakewinner00 :

Gracias por el tiempo que tomaste en explicar esto amigo, me sacaste de un dilema y con tu aporte sé dónde empezar y creo que empezare por c ya que me gusta agarrar el toro por los cuernos y creo que lo que busco me lo dará c.
Saludos.

 ;D
Título: Re:Diferencia entre C y C++
Publicado por: jaxk en Enero 14, 2017, 02:33:48 pm
Gracias por aclararlo
Título: Re:Diferencia entre C y C++
Publicado por: euler-2,71 en Marzo 10, 2017, 09:07:05 pm
Muchas gracias, buen post
Título: Re:Diferencia entre C y C++
Publicado por: Humphrey en Marzo 14, 2017, 11:05:08 pm
Muy bueno el post, muchas gracias....
Título: Re:Diferencia entre C y C++
Publicado por: Meta en Marzo 25, 2017, 12:42:19 pm
Buenísimo.

Falta añadir algo más, que también para sistemas operativos, hay algo de asm (ensamblador) sobre todo en el arranque del sistema.
Título: Re:Diferencia entre C y C++
Publicado por: ravenheart en Marzo 25, 2017, 04:56:55 pm
Falta añadir algo más, que también para sistemas operativos, hay algo de asm (ensamblador) sobre todo en el arranque del sistema.

¿Qué tiene eso que ver con el hilo?
Título: Re:Diferencia entre C y C++
Publicado por: simbades333 en Enero 21, 2018, 05:54:18 am
gracias gracias