[C con Clase] Curso de C

Salvador Pozo salvapozo en gmail.com
Sab Abr 11 12:22:57 CEST 2009


Hola:

El día 11 de abril de 2009 7:32, Samuel Porras
<samuelporras en gmail.com> escribió:

> ¿Teneis también un curso de C o el curso de C++ engloba los dos Cursos?

No, no tenemos (todavía) un curso de C. Y no, el curso de C++ no
engloba a los dos lenguajes.

Es posible que algún día abordemos un curso de C, aunque no es uno de
nuestros objetivos a corto plazo.

> Se que C++ es una extensión de C pero en C no se usan namespaces ni el cout
> o el cin, y para programas que no sean muy complejos o que no necesiten
> partes de C++ sería mejor utilizar C puro no?

Aunque las diferencias entre C y C++ puedan parecer superficiales, no
lo son. C++ no es una simple extensión de C (lo es pero no simple).
Las diferencias están destinadas a cambiar el paradigma de
programación. C está orientado a programación procedimental y C++ a
programación orientada a objetos.

C++ permite crear programas en "C puro", al menos en el sentido en que
planteas la pregunta. Basta con usar librerías C y no tener en cuenta
características propias de C++ (clases, namespaces, operadores como
new o delete, etc). Seguirán siendo programas C++, pero se podrán
compilar con un compilador de C.


> Al compilar un Hola Mundo en C y otro en C++ he notado que el .exe de C
> ocupa mucho menos espacio en disco.

La diferencia no está en el lenguaje, sino en las librerías. Como dice
Armando, los ficheros de cabecera C++ generan un ejecutable más grande
porque crean más código, a través de plantillas.

Si usas librerías ANSI en lugar de streams, verás que el ejecutable se
reduce bastante.

> Es buena idea aprender las dos versiones por separado?

Podría serlo, "el saber no ocupa lugar". Sin embargo, las diferencias
están sobre todo en la forma de resolver los problemas, no en la
codificación C/C++.

Programar en C requiere más cuidado por parte del programador, y por
lo tanto, mayor disciplina.

Pero considero que es buena idea pensar que se trata de lenguajes
diferentes, aunque emparentados. Pero es un error considerar que ese
parentesco hace a uno más completo, o más evolucionado o más
recomendable que al otro.

No estoy de acuerdo con Armando en que C++ oculta características de
bajo nivel, puesto que C++ incluye a C, esas características están
presentes en ambos lenguajes. Otro tema es que en estos tiempos no se
abunde mucho en programación de bajo nivel, al menos durante el
aprendizaje. Creo que esto está más motivado por las características
de los sistemas operativos actuales que por el propio lenguaje.

Por otra parte, cualquier programador que conozca C++ puede comprender
(con pocas excepciones) programas escritos en C, aunque no sea capaz
de escribir programas C con tanta soltura. Usando una analogía, para
alguien que conozca español es relativamente sencillo entender
portugués o italiano, aunque no sea capaz de hablarlo o escribirlo.
(Por supuesto, los lenguajes de programación son más simple que
cualquier lenguaje humano).

Hasta pronto.
-- 
Salvador Pozo Coronado
http://www.conclase.net
mailto:salvapozo en gmail.com




Más información sobre la lista de distribución Cconclase