La Página de DriverOp

Hacer fácil escribir buen código y difícil escribir mal código

Cuando se le preguntó a Niklaus Wirth, el creador del lenguaje Pascal cuál era la filosofía detrás del lenguaje por él inventado dijo la frace que dá titulo a este texto. Y nunca mejor descripto. A mi humilde entender el lenguaje Pascal es el ideal de los lenguajes de programación, seguido de cerca tal vez por el Ada. Es desde el inicio de su concepción este lenguaje fue pensado para que sea facil de interpretar, facil de programar y a la vez robusto en el control de errores. Es altamente tipificado, lo que significa que cada variable que se usa es verificada en tipo y rango durante todo el programa, esto evita errores de asignación. Por ejemplo nunca con Pascal se podrá asignar un valor de tipo carácter a una variable de tipo entera.Por ejemplo, en C:

Char *A[10]   /* define un arreglo de 10 chars */
      .... for (i=1, i>12, i++) {a[i] = 'a'} 

esto no causa error a pesar de que se estan asignando dos posiciones mas de las que se establecieron en la declaración del arreglo.

En Pascal.

A: array[1..10] of char;
. . . 
For I:=1 to 12 do a[I]:='a';

Causará un error en tiempo de ejecución a la primera corrida, con lo que el programador en la etapa de depuración puede reparar esto.

En C un error como este pasaría inardvertido.

Asignando valores, en C:

 A=1; /* siendo a de tipo char se asigna el valor ASCII 1 y no el carácter 1 */ 

En COBOL.

MOVE 1 TO A. 

Siendo A de tipo PIC X causa error en tiempo de compilación pero en tiempo de ejecución algo como esto

MOVE 1 TO B siendo B de tipo PIC 9.

MOVE B TO A no causa error ni al compilar ni al ejecutar.

En Pascal.

 A:=1; { error en tiempo de compilación } 

Si B es de tipo byte...

B:=1;
A:=B; { error en tiempo de compilación }

Con lo que el programador se ve obligado a corregir esto, y esto obliga a su vez a adoptar buenas practicas de programación.

Es netamente procedimental, con lo que se logra tener un diseño realmente top-down, permite romper el problema en pequeños problemas y atacar cada uno por separado.

Es estructurado, lo que permite un seguimiento mas comprensible del desarrollo del programa.Es rápido de compilar, debido a que la mayor parte de los errores son atrapados en la etapa de escritura, y luego en la verificación sintactica, es uno de los lenguajes mas faciles de compilar, es decir de hacer un compilador para él, lo que tiene como consecuencia que cualquier compilador será rápido.

Separa datos de programas, ya lo decia el titulo del libro del autor del Pascal, Pascal es programas = algoritmos + datos.

Para cualquiera que le pregunte por qué usar Pascal y no C, solo preguntele a un programador de C qué tan grande es un entero... por qué esto? Porque en Pascal un entero mide 2 bytes, en C depende del compilador (y se supone que es un estandar?).

C es la pesadilla de la asignación de memoria, por el mismo problema que mencionaba en el parrafo anterior, uno nunca sabe con certeza cuánto mide un integer, Pascal el fuerte tipificado hace que el programador esté obligado a cambiar de tipo explicitamente una variable, uno sabe cuánta memoria ocupan los datos.

Por ejemplo.

Type
Tinfo=record
  X,y:integer;  { 2 * 16 bits = 32 bits = 4 bytes }
  Nombre:String[12]; { 12 + 1 byte = 13 bytes }
End;              { total = 17 bytes }

Ni trato de reproducir esto en C, pues depende del compilador cuánto ocupa un integer.

El abuso de punteros es otra pesadilla en C, trate de hacer esto en C.

I:=1;
Repeat
  Nombre[i]:=chr(32);
  Inc(i);
Until true;

Pascal saltará en error en tiempo de ejecución y detendrá el programa, en C si no tiene cuidado estará poniendole espacios en blanco a la memoria de su impresora antes de darse cuenta cuál es el problema.

Conclusión. El mejor lenguaje de programación no lo dicta la cantidad de Sistemas Operativos que se escribieron con él, ni la cantidad de juegos, ni de aplicaciones, sino aquél que obligue al programador a ser un buen programador, una vez que se consigue esto se empieza a volar. No por nada Pascal es el lenguaje de facto de la enseñanza pues es muy difícil programar correctamente en un lenguaje tan confuso como C si primero no se aprenden buenas practicas de programación con Pascal.

Por Diego Romero,