Dejemos las cosas claras desde el principio: programo en C y prefiero este lenguaje al Pascal. El orden en el que se aprenden los lenguajes de programación es muchas veces determinante de nuestras preferencias y a menudo nos convertimos en acérrimos defensores del lenguaje con que aprendimos a programar.
En mi caso el orden (BASIC, Ensamblador 8 bits, C, Pascal, etc) es clarificador, siempre que se admita que no se puede tomar al BASIC como un lenguaje de programación al mismo nivel que el C y el Pascal (sobretodo el que yo aprendí, ¡ sobre un ZX-81 !), y que tampoco el Ensamblador se puede tomar como lenguaje. No al menos en el sentido en que llamamos "lenguajes de programación" al C y al Pascal.
He de señalar, también, que mis conocimientos de Pascal no son muy amplios: los suficientes como para aprobar (holgadamente, para mas señas) una asignatura de la "carrera" de Matemáticas, pero no se si los suficientes como para emprender un programa de "envergadura" (nunca me he puesto a ello: si necesito algo, lo hago en C, como he dicho).
Así pues, esta comparación (o valoración) de C frente a Pascal va a ser subjetiva (como no podía ser de otra forma), al igual que el artículo escrito por Miguel Angel Sáenz, al cual intento replicar (el cual no es imprescindible leer previamente, aunque si recomendable).
Pero a diferencia de este, intentaré hacer la comparación (subjetiva) en base a criterios "objetivos" (en lo posible).
Se puede discutir lo acertado o conveniente o estúpido que es el "comparar" dos lenguajes (al final del artículo diré lo que opino al respecto), pero una vez que nos metemos en ello creo que lo correcto es centrar la evaluación: QUÉ entendemos por "lenguaje de programación" y QUÉ vamos a evaluar - comparar. He intentado que la lista del "QUÉ vamos a evaluar" sea lo más amplia y objetiva posible (aunque esto último sea imposible: la lista es subjetiva desde el momento en que la he elegido YO ;o) ).
El "QUÉ entendemos por lenguaje de programación" lo dejo para el final (punto 1.).
CRITERIOS (objetivos)
Cualquier evaluación - comparación de uno, dos o más lenguajes, ya sea para comparar su potencia o como medio para elegir uno de ellos sobre el que escribir nuestros programas, se ha de hacer, a mi entender, en base a los siguientes criterios (sin ser esta una lista cerrada):
1.- El lenguaje en sí (definición, propósito, sintaxis, etc, quizás incluyendo también origen, historia, evolución, etc).
2.- Plataformas y bibliotecas (librarys) disponibles.
3.- Herramientas disponibles.
4.- Dificultad de aprendizaje.
5.- "Potencia".
6.- Otras ventajas o desventajas en su aprendizaje - utilización.
Dejando el punto 1. para el final pasemos a los siguientes:
2.- Más o menos fácilmente se podrían enumerar las plataformas para las que están disponibles C y Pascal, así como las bibliotecas disponibles. Yo no lo he hecho, pero (y aquí entra la evaluación puramente subjetiva) me extrañaría mucho que en este punto el Pascal superara al C. Es decir, no creo que exista una máquina en la que podamos "programar" en Pascal (que exista al menos el compilador) y no podamos hacerlo en C. Y con las bibliotecas lo mismo. Más bien al contrario: no me sorprendería, dada la difusión de C, que existiese un "entorno" (plataforma + bibliotecas) en C para el que no existe el equivalente en Pascal.
3.- En cuanto a las herramientas ocurre algo similar. Si bien parece que "últimamente" están apareciendo herramientas para Pascal que prácticamente "programan solas" (estoy pensando en Delphi), me resisto a pensar que en este punto uno de los dos lenguajes "supere" al otro.
De todas formas he de decir, a riesgo de parecer que busco una excusa para minusvalorar este punto en el que mucha gente podría pensar que el Pascal lleva ventaja, que creo que este debería ser uno de los puntos menos importantes a la hora de valorar un lenguaje, al contrario de lo que la mayoría de la gente parece que hace: buscar herramientas "cómodas" que le faciliten la tarea de programar sin considerar para que lenguaje están hechas. Y opino esto porque, después de todo, siempre se pueden crear esas mismas herramientas para otro lenguaje (como la mayoría de las veces ocurre).
Lo que de ninguna manera me parece "correcto" es elegir un lenguaje sólo porque exista una determinada herramienta para él, así como me parece totalmente equivocado el desechar un lenguaje por problemas con una determinada herramienta o el desarrollo de un determinado programa.
4.- Dificultad de aprendizaje. Este es otro punto del cual mucha gente hace depender su "elección" y en el cual el C sale perdiendo, aunque sólo sea por fama. Pero debo decir dos cosas:
1) Quizá la dificultad de aprendizaje dependa también del orden en el que se aprendan: a mi me resultó mucho más difícil entender una sintaxis (la de Pascal) a la que no estaba acostumbrado y que describía estructuras para las que ya conocía una sintaxis que me resultaba tremendamente familiar y fácil (la del C).
2) Creo que la fama de dificultad del C es, muchas veces, eso, sólo fama. Y para cuando no es así (cuando la dificultad es real) yo recomendaría pensar en sus ventajas: mucha de la sintaxis y estructura del C nos las podemos encontrar en otros "lenguajes", desde JavaScript hasta Java, pasando por las Shell de Unix e incluyendo, por que no, al Pascal. Es decir, podemos rentabilizar el esfuerzo de aprender C al usar otros "lenguajes" (a mi me ha ocurrido).
5.- Potencia. Muchas veces se dice que C es potente... y yo me pregunto que quieren decir exactamente con ello. Creo que inconscientemente se refieren a la disponibilidad de bibliotecas (librarys) y, quizá también, a la "potencia" (velocidad y tamaño) del código generado con C. Como el primer caso ya lo he tratado en el punto 2. me centraré en el segundo. Y sobre él he decir que no creo que haya mucha diferencia entre el código generado por C y el generado por Pascal, y que ni siquiera creo que haya nadie, hombre o máquina, que sea capaz de distinguir un programa "corriendo" hecho en uno u otro lenguaje. Después de todo, depende de la herramienta (compilador) que se use, y estos siempre se pueden mejorar o cambiar.
Y de haberla, apuesto a que C saldría ganando.
6.- Otras ventajas. De una u otra forma creo que he tratado todas las ventajas que puede tener el aprender C sobre el aprender Pascal. Y si alguna se me olvida, sigo apostando por C.
1.- EL lenguaje en sí.
Creo que este debería ser el principal punto a evaluar y el principal punto que el artículo de Miguel Angel Saenz ha olvidado. Después de todo es del que nacen todas las ventajas y desventajas, posibilidades y limitaciones de un lenguaje. Y aquí sí, el C gana de largo.
Se ha repetido hasta la saciedad (al menos yo lo he leído) que el C es un lenguaje hecho por programadores para programadores y, más específicamente, hecho para programar el S.O. UNIX. Y eso se nota. Es conciso, homogéneo, consistente, sin artificios (y aquí me estoy refiriendo a la sintaxis). Creado para PROGRAMAR.
El Pascal, por contra, fue concebido como instrumento para la enseñanza de la programación estructurada (al menos hasta donde yo se). Y eso se nota. Al menos YO lo noto. Sobretodo en la inclusión "con calzador" de estructuras (como los punteros) que no estaban definidas en su origen (y aquí "cito" nuevamente de memoria. Si estoy equivocado, que alguien me corrija) y que el C lleva desde su origen.
La tesis sostenida por muchos libros de la conveniencia de aprender primero Pascal (antes que ningún otro lenguaje) como mejor medio de entender la programación estructurada y de adquirir buenos hábitos de programación, todo lo cual podría luego ser aplicado a cualquier otro lenguaje, creo que debería ser "revisada" a tenor de lo que he sugerido en todo este artículo: el principal hábito que se coge al aprender un lenguaje es... el de programar en ese lenguaje.
CONCLUSIÓN
Si eres programador de C.
¿Qué te voy a decir a ti que no sepas ya?.
Si "no sabes programar" y te interesa aprender.
Bueno, espero que este artículo te sirva como un punto más de reflexión.
Si eres programador de Pascal.
Tranquilo. No voy a ser yo el que te despierte en medio de la noche y con un cañón en la boca te obligue a repudiar al Pascal y jurar fidelidad eterna al C. Creo que una de las peores cosas (casi en cualquier ámbito de la vida) es la homogeneidad y seguro que el Pascal es el mejor lenguaje en algunos casos (aunque a mí no se me ocurra). Además, en caso de duda, aplicar el principio de... ¿alguien puede decirme de quien es?: "Bien está, (el programa) que bien funciona". Si funciona, ¿qué más da en que lenguaje esté escrito?.
Después de todo, creo que esto de "compara" lenguajes es un poco inútil...
A Miguel Angel Sáenz: tu experiencia en C (te trato de tu) te ha llevado a la conclusión de que falla más que una escopeta de feria mientras en Pascal no tienes ningún problema, y a partir de ahí has establecido la comparación. Mi experiencia en Pascal es parecida a la tuya en C, puramente académica. Pero no me "quejo" de que falle. Lo que NO me GUSTA es su SINTAXIS y DEFINICIÓN, a la que considero un pastiche hecho a partir de un lenguaje hecho para la enseñanza al que se le han añadido elementos y estructuras para completarlo, sospecho que muchas cogidas de C. Mientras que en C... bueno, la verdad, no me he encontrado entorno (sobretodo el entorno C + UNIX) más "productivo", es decir, en el que más rápido he hecho los programas y con menos problemas. También es verdad que no conozco muchos.