Creo que a estas alturas de mi carrera y con la experiencia que tengo,
me veo más o menos capacitado para hacer unas cuantas reflexiones acerca
de este eterno enfrentamiento. No me considero, ni mucho menos,
una persona experta en ninguno de los dos lenguajes; para ser sincero,
de C se mas o menos lo que en la EUI-UPV se me ha enseñado y algunas cosas mas,
pero las conversaciones con otros compañeros y amigos han llegado
a puntos limite y es hora de que alguien se moje.
Desde un primer momento lo que voy a dejar claro es que yo me decanto por
el uso del Pascal, y es a partir de aquí donde explico el por que.
Solamente me voy a basar en mis experiencias con ambos lenguajes de programación.
Comencé a aprender Pascal antes de entrar en la EUI, justamente el verano anterior
a mi primer curso. Me compre un libro muy básico y a partir de ahí y con mi viejo
AMSTRAD CPC 6128, me hice con el TURBO PASCAL 3.0 bajo CP/M.
Entonces mis ideas de C eran que iba entre la B y la D. Así que no había
discusión posible entre ninguno de los lenguajes.
En las practicas de las asignaturas de programación,
se hacían las practicas en Pascal con aquellos "magníficos"
MACINTOSH; y he de admitir que hasta llegaba a disfrutar aprendiendo aquel lenguaje. Pero ......
Otros amigos míos que también habían comenzado sus carreras
técnicas, me contaban que ellos hacían las practicas de asignaturas de
informática básica, típicas de el resto de carreras de la UPV, en C++.
Claro, me hablaban de potencia mucho mas elevada, que si mucha mas
optimización, etc. Y efectivamente yo me lo creía, y es mas, casi
que todavía me lo creo. Bueno, pues por entonces bastantes alumnos
nos quejábamos a los departamentos de la inexistencia de practicas en C,
puesto que todos habíamos oído hablar de esas "maravillosas" prestaciones.
Finalmente, a lo largo de todo el curso no se dio ni una sola practica en la que
se necesitara el C.
A pesar de que prácticamente nadie de primer curso, que no fuera repetidor claro!,
no sabia C, ya había piques con los alumnos de esas carreras porque,
¡¿ como se iba a permitir que "esos" de otras carreras nos vacilaran a nosotros,
alumnos de la EUI ?!
Pues bien con esta situación se llega a segundo (¡Con algunas de primero!) y en el
segundo cuatrimestre, Metodología y Técnicas de Programación. La primera de las asignaturas cuyas practicas se hacen en C, aunque sea el ANSI C.
Pues a partir de aquí expreso únicamente mis opiniones.
Tras las primeras aproximaciones a lo que había sido ese lenguaje tan misterioso
para la mayoría de nosotros, comienzan las practicas y con ellas la fiesta de los
errores de Core.
Después de las primeras practicas no veo esas "grandes diferencias", esa
"potencia y optimización", ... En fin, que el susodicho lenguaje resulta ser
un tanto decepcionante. Pero tampoco había que exagerar, todavía no había probado
el BORLAND C++ v.3.1 para DOS, y quizá este seria mas amigable que el de UNIX.
Puesto que las practicas de MTP exigían "horas extras", mi compañero de practicas
y yo decidimos implementarlas bajo esta versión para DOS y luego llevárnoslas
a la máquina UNIX del laboratorio. De esta manera aprovechábamos la estupenda
portabilidad del C.
Es aquí donde comenzaba la autentica odisea. En primer lugar a la hora de
tracear la ejecución del programa, el debugger hacia unas cosas rarísimas,
tales como saltarse líneas de ejecución por toda la jeta. Es decir, que sin bucles,
saltos, ni nada de nada; únicamente intentando ejecutar tres líneas del programa
que en un principio deberían ser totalmente secuenciales, el debugger pasaba de
la primera a la tercera, dejándose la segunda por fea. Supongo que en esto tendría
que ver la elección del modelo de memoria elegido a la hora de compilar el
programa, pero es que probamos todos los modos, y con unos saltaba de la primera
a la tercera, con otros de la segunda a la cuarta, e incluso había uno, no
recuerdo cual, que hacia retroceder la ejecución del programa.
La solución fue incluir líneas basura que no hicieran nada, para poder
ejecutar con un cierto orden el programa.
Pero esto no fue lo mas fuerte. Los que hicieran aquellas practicas, las de la
primera vez que se impartió MTP, recordaran que había que hacer una especie de
albearán con unos datos de entrada. Bien, nosotros teníamos un conjunto de
datos de entrada fijo, para la comprobación de errores. El problema surgió cuando
los datos de salida no eran correctos, repasamos los listados hacia delante y
hacia detrás unas n veces (cuando n tiende a infinito), y no encontramos ningún
error. Hasta que un día se nos ocurrió cambiar el conjunto de datos de entrada,
y ¿que paso? .... ¡¡¡FUNCIONABA!!! Volvimos a probar otro conjunto distinto y
seguía funcionando, así probamos unos cuantos mas y con todos, el programa
funcionaba correctamente. Claro, se nos ocurrió volver a probar el conjunto
inicial de datos de entrada y nuestra sorpresa fue que el programa se volvía a
colgar. El resumen seria que encontramos unos datos extrañísimos que hacían que
nuestro programa se olvidara de la lógica y funcionara a su libre albedrío.
Todavía no hemos encontrado una explicación para esto que os he contado y supongo
que no la encontrare nunca.
Desde que me compre un PC, me he dedicado a aprender mas Pascal, concretamente el
BORLAND PASCAL 7.0, y desde luego no me he encontrado con saltos de línea
misteriosos ni programas con vida propia. Cabe resaltar que estos errores que yo
encontré, los halle en un compilador de la misma empresa que nos vende el Pascal
mas utilizado, así que no me explico como pueden existir estas diferencias de
"amigabilidad" entre uno y otro compilador.
Vamos a pasar ahora a lo que seria un análisis mas técnico, puesto que hasta ahora
solo os he contado experiencias con los dos lenguajes de programación.
Ya he oído de mas de un profesor, entre los que se encuentra Xavier Lluch, el cual
imparte clase de Informática Gráfica 2D, que C es mucho mas potente que Pascal.
Yo le invito a que remita una respuesta y explique el por que. Puesto que yo no
le encuentro razones de autentico peso.
Es cierto que si comparamos los antiguos compiladores de C y Pascal, encontramos
grandes diferencias entre ambos. Pero ahora mismo, y después de examinar las
librerías que ofrecen B. C++ v.3.1 y B. PASCAL 7.0, no observo esas diferencias
"abismales" de uno a otro. He de admitir que C es mucho mas flexible que Pascal
a la hora de manejar ficheros, pero para lo que yo he necesitado no he encontrado
nada en C que Pascal no me haya ofrecido, y a mi juicio creo que he hecho bastantes
cosas además de las practicas de la EUI.
Puedo decir de la misma manera que en el apartado de potencia me ha pasado
exactamente lo mismo. No he observado diferencias en la velocidad de ejecución de
programas escritos en C o en Pascal, o al menos hasta ahora eso no me ha ocurrido.
Una de las razones que se me han expuesto para defender el lenguaje C ha sido la
simple excusa de que la mayoría de sistemas operativos (UNIX,LINUX,WINDOWS 3.1,...)
están escritos en C porque es mucho mas potente que cualquier otro lenguaje de
alto-medio nivel y además es portable; por lo tanto como conclusión se obtiene la
misma cabezoneria de siempre "el C es mucho mejor que Pascal, en caso contrario
se habrían escrito estos SS.OO. en Pascal". Pues me parecería perfecto que esto
me lo dijera alguien que hubiera formado parte de uno de los equipos que
realizaron alguno de estos SS.OO., ya he comentado antes que el C es mucho mas
flexible en cuanto a ficheros que Pascal. Pero tengo una pregunta:
¿Cuantos de los que esgrimen esta razón han programado un sistema operativo o
piensan hacerlo?
Tanto a mi como a muchas personas mas, nos parece bastante mas legible un listado
en Pascal que en C, esto conlleva que la implementación sea por tanto mas clara
y sencilla; y si a esto le aportamos el aumento de calidad en la ultima versión
del compilador de Borland, obtenemos un lenguaje de programación potente y apto
tanto para el aprendizaje como para el uso profesional. Otra cosa es que por la
costumbre que ya esta arraigada en la mayor parte de las empresas dedicadas a la
programación se exija C, y de esta manera a todos nos toque practicarlo nos guste
o no.
Podría exponer mas ejemplos comparativos entre ambos lenguajes pero eso será en
otra entrega. Lo único que pido seria un cambio de mentalidad y darle al Pascal
la oportunidad que hasta ahora no ha tenido dentro del campo profesional.