Ver Mensaje Individual
  #14 (permalink)  
Antiguo 20/07/2005, 07:55
Avatar de Instru
Instru
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Problema: Cual es la diferencia entre C y C++
Variante: C, C++
Solucion:
Antes que nada hay que mencionar las caracteristicas de cada lenguaje para poder saber porque uno es mejor que otro.

C es una lenguaje estructurado orientado a procedimientos.
¿Qué quiere decir esto?
Con C la programacion se estructura en bloques, en este caso se usan llaves para poder encerrar el codigo en bloques. Las ventajas de este tipo de programacion son las de aplicar condifciones de flujo(if, while, for) a bloques de codigo entero. Gracias a esto se pudo eliminar totalmente el uso del famoso goto que daba dolores de cabeza a los que les tocaba revisar codigo.
La base fundamental de C son las funciones
Las funciones surgen como resultado de la programacion estructurada(bloques) y son los "ladrillos" de la construccion mas compleja que pueda haber. Gracias a las funciones podemos tener un codigo totalmente limpio y entendible(Claro, esto tambien depende de las habilidades del programador)

Ahora veamos que tiene C++ de especial.
C++ en primer lugar es totalmente compatible con C
Ya que C++ es un superconjunto de C, este tiene todas las caracteristicas de C(programacion orientada a procedimientos y programacion estructurada). Gracias a esto cualquier programa escrito en C(100% estandar) compila en un compilador de C++. De hecho la idea inicial del inventor de C++ fue ampliar C a "C con clases".
C++ es orientado a objectos
¿Qué significa esto?
Cuando uno esta aprendiendo C++, uno cae en el error de que C++ es C con clases. Y no, es todo un nuevo paradigma. La programacion orientada a objectos es mucha mas que C con clases. Es llevar el codigo a un nivel de abstraccion mucho mas alto del que un lenguaje orientado a procedimientos puede. Es poder tratar casa elemento de un programa como un objeto. Y que al crear este objeto, uno no tenga que meterse realmente en el codigo, sino solo usar el objeto para lo que sirve. Gracias a estos niveles de abstraccion se puede reutilizar el codigo escrito, ya que un objecto como tal es totalmente reciclable, siempre y cuando este bien escrito.

C++ incluye una nueva libreria estandar
En C++ se incluye una nueva libreria que sustituye a los famosos stdio.h o stdlib.h. Esta libreria mejorada y totalmente orientada a objetos permite un mejor manejo de las funciones estadar que todo compilador debe tener. Aparte se añadieron nuevos tipos como "string" para el manejo de cadenas. Todo esto mas que facilitar el trabajo, ayuda a mantener tu codigo en un solo paradigma y asi tener codigo mas limpio y seguro.

C++ y la STL
En la estandarizacion de C++ se dicidio incluir esta increible libreria. Su proposito es aun mas grande que el de la misma programacion orientada a objetos. Se centra mas a la programacion generica dando asi un gran paso mas a la carrera de la multiplataforma. Esta libreria hecha para resolver los problemas mas comunes como listas enlazadas, pilas, colas, y otro tipo de manejo de datos, mas sin embargo su uso no solo se queda ahi, ya que con unas buenas habilidades se puede sacar gran provecho de esta increible libreria.

Ahora si podremos decir porque uno es mejor que otro y que es lo mas conveniente hacer al intentar aprenderlo.

C es un lenguaje multiproposito. Inicialmente creado para la programacion de sistemas, su uso se fue ampliando hasta llegar a ser en el mejor lenguaje de programacion en su tiempo.
Con C se pueden programar todo tipo de programas, desde pequeñas calculadoras hasta complejos sistemas operativos(el ejemplo clasico, el kernel de Linux). Algunas personas caen en el error de que C solo se usa para programacion de drivers y/o sistemas operativos. Esto es falso. Cualquier programa puede ser hecho con C. Incluso se puede usar en la programacion web, aunque hay mejores alternativas para esto.

C es una lenguaje relativamente facil de aprender. Pocas palabras calves, sintaxis clara y concreta, etc. En teoria el lenguaje se puede aprender en unos meses. Pero para poder desarrollar tecnicas avanzadas y realmente programar codigo digno de llamarse C se recomendaria un año.

En cuanto a C++, este es un lenguaje MUCHO mas complicado que C. Pero primero lo primero.
Con C++ puedes hacer todo lo que puedes hacer con C ya que este es un superconjunto de C.
Pero aparte se tiene la opcion de elegir el nuevo paradigma, la programacion orientada a objetos. La ventaja de este modo de programacion es que el programa puede llegar a mucha complejidad y el programador puede tener el control de toda esta complejidad. No es lo mismo tener 100 modulos de C con funciones que uno ni se acuerda, que tener 100 modulos y 5 objetos que controlen todo y que esos modulos no se toquen para nada.
Tambien se puede combinar los 2 lenguajes. Podemos usar programacion orientada a procedimientos y usar ls librerias orientadas objetos. El case tipico: Usar C con DirectX9.

C++ NO ES UN LENGUAJE FACIL DE APRENDER. Despues de una año de dominar C, se recomiendan minimo 2 años para poder entender los paradigmas que C++ maneja. Realmente tompa tiempo poder usar este lenguaje de la manera que se debe ya que hay personas que caen en el error de que por saber usar las clases ya se sienten programadores profesionales de C++. Esto es falso, ya que se necesito MUCHO mas que eso para poder dominar el lenguaje.

Hoy en dia lo mas recomendable ya seria empezar directamente con C++. Un error comun es cuando dicen que aprendiendo C++ aprendes C. En teoria es correcto, pero en la practica no. Si uno aprende puro C++ pasa por alto las librerias estandar de C. Aunque realmente ya no las va a utilizar siempre es bueno saber que existen.

En conlusion:
C y C++ son lenguajes diferentes, uno basado en otro. Los 2 son los mas potentes y eficientes en la mayoria de las tareas. C no esta muerto, aun mucha gente lo utiliza. Hay que recordar en nuevo estandar de C99 donde se nota como este lenguaje aun crece. C++ tiene un gran futuro. Es muy improbable que este lenguaje se deje de usar en un corto plazo. Incluso las nuevas tecnologias .NET no superan la eficiencia que los compiladores comunes de deste lenguaje nos dan. Espero que les sirva para poder informarse mas sobre las diferencias entre cada lenguaje.

Última edición por Instru; 14/06/2006 a las 12:24