Julián Perelli    Projects    Blog    Talks

Pascal simple script stream editor

Pascal simple script

Hoy estuve jugando un poco con el viejo amigo Pascal, y encontré InstantFPC, que se autodenomina: una herramienta para correr programas como scripts.

InstantFPC se instala junto a free-pascal-compiler, en distribuciones linux basadas en debian. Se puede instalar con sudo apt-get install fpc.

Me puse manos a la obra y en un ratito armé un script en Pascal para leer la entrada estándar (stdin), transformarla y enviarla a la salida estándar (stdout).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env instantfpc

uses
sysutils;

var
entrada: String;

begin

repeat
readln(entrada);
writeln(uppercase(entrada));
until eoln;

end.

Después le di permiso de ejecución con chmod +x mayusculizar y lo probé de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
jperelli@jperelli-awesome:~ $ ls -l /var | ./mayusculizar
TOTAL 3652
DRWXR-XR-X 2 ROOT ROOT 4096 MAY 5 08:14 BACKUPS
DRWXR-XR-X 31 ROOT ROOT 4096 FEB 12 22:27 CACHE
DRWXRWSRWT 2 ROOT WHOOPSIE 4096 FEB 24 00:14 CRASH
DRWXR-XR-X 2 ROOT ROOT 4096 DIC 12 2012 GAMES
DRWXR-XR-X 114 ROOT ROOT 4096 MAR 25 09:12 LIB
DRWXRWSR-X 2 ROOT STAFF 4096 OCT 9 2011 LOCAL
LRWXRWXRWX 1 ROOT ROOT 9 FEB 4 2014 LOCK -> /RUN/LOCK
DRWXRWXR-X 32 ROOT SYSLOG 4096 MAY 8 08:07 LOG
DRWXRWSR-X 2 ROOT MAIL 4096 JUN 7 2013 MAIL
DRWXRWSRWT 2 ROOT WHOOPSIE 4096 OCT 21 2012 METRICS
-RW-R--R-- 1 ROOT ROOT 3685369 MAR 27 2012 NULL
DRWXR-XR-X 2 ROOT ROOT 4096 OCT 12 2011 OPT
LRWXRWXRWX 1 ROOT ROOT 4 FEB 4 2014 RUN -> /RUN
DRWXR-XR-X 12 ROOT ROOT 4096 ABR 21 12:35 SPOOL
DRWXRWXRWT 5 ROOT ROOT 4096 MAY 8 23:21 TMP
DRWXR-XR-X 5 WWW-DATA WWW-DATA 4096 JUL 4 2014 WWW
jperelli@jperelli-awesome:~ $

Este programa bastante simple, se puede utilizar para transformar cualquier comando en mayúsculas. Es una aplicación trivial, pero sirve para ejemplificar la potencia de lo que se puede realizar utilizando InstantFPC.

Discusión recurrente

Una vieja disputa en la facultad es sobre qué lenguaje se debería usar para enseñar a programar. Rápidamente la discusión deriva en que deberíamos estar utilizando lenguajes “mejores” o “más potentes” que Pascal, como C, Python, Java.

Tomando este ejemplo y otros como HDCT, donde se ven llamadas a interrupciones directamente desde un .pas, se ve que Pascal tiene un tremendo potencial, que puede asemejarse bastante a C, con la gran diferencia de agregar el tipo String.

La idea no es decir que Pascal es el mejor lenguaje, sino simplemente que no es un lenguaje malo. Creo que la discusión pasa por qué cosas se enseñan y no por el lenguaje en sí. Podría utilizarse C o python, pero si se sigue enseñando de la misma manera, cambiar el lenguaje no va a ayudar.

Para la discusión si Pascal sirve o no hoy en día, no me quedan dudas que sirve. Que la industria de software no lo haya elegido para desarrollar, es otro tema.