PDF de programación - Niveles de abstracción. Lisp y la pedagogía

Imágen de pdf Niveles de abstracción. Lisp y la pedagogía

Niveles de abstracción. Lisp y la pedagogíagráfica de visualizaciones

Publicado el 14 de Enero del 2017
568 visualizaciones desde el 14 de Enero del 2017
104,0 KB
17 paginas
Creado hace 5a (15/01/2015)
Niveles de abstracción. Lisp y la pedagogía

F. Javier Gil Chica
versión de enero de 2015

Resumen

Estudiar implica alcanzar sucesivos niveles de abstracción. En este

artículo se muestra cómo estos niveles pueden hacerse explícitos median-
te el uso de un lenguaje de programación y hacemos una excursión
desde los niveles inferiores del aprendizaje de las matemáticas hasta
el nivel de los estudios superiores, mostrando cómo estas abstracciones
se pueden formalizar al tiempo que obtenemos herramientas útiles y
adquirimos formas de pensar y enfrentar problemas.

1. Motivación

El curso de los estudios supone la adquisición de niveles de abstracción
cada vez más elevados, construidos a partir de abstracciones anteriores. Esto
es válido al menos para las disciplinas científicas. Por otro lado, la com-
putación personal es ya corriente. Por otro, finalmente, en muchos textos se
exponen procedimientos algorítmicos, escritos en pseudocódigo, reconociendo
implícitamente que ésta es una forma conveniente y útil de formalizar ciertos
conocimientos.

Nosotros nos proponemos mostrar cómo, mediante un lenguaje de pro-
gramación de sintaxis trivial, el alumno puede formalizar estas sucesivas ab-
stracciones, lo que tiene a nuestro modo de ver varias importantes ventajas.
En primer lugar, el dominio o al menos la familiaridad con un lenguaje de
programación resulta más que conveniente para las disciplinas científicas,
desde el punto de vista de la mera utilidad. En segundo lugar, un nivel me-
diano en programación es suficiente para que el estudiante se de cuenta y
aproveche algunos patrones generales, como pueden ser: la descomposición
de un problema en una serie de problemas más pequeños, el uso de la recur-
sividad, estrategias generales para abordar problemas (fuerza bruta, dividir
para vencer, búsqueda aleatoria, exhaustiva, heurísitca,...), el reconocimien-
to de estructuras de datos generales para organizar la información, etc. En

1

tercer lugar, la programación de una abstracción recién adquirida obliga a
plantear esta abstracción de una forma clara, libre de ambig¨uedades. En
cuarto lugar, con el paso del tiempo, el alumno puede adquirir una bibliote-
ca personal de valor permanente, que le ayude en sus estudios posteriores.
Esto es mucho más interesante que instruirlo en el uso de programas com-
erciales, que nunca serán tan flexibles. No sugerimos que estos programas
deban ser descartados, sólo que, con frecuencia, existen soluciones sencillas
para problemas sencillos (o no tanto) que están al alcance de un usuario
corriente y que pueden alcanzarse con poco esfuerzo y un alto nivel de sat-
isfacción intelectual. Además, la habilidad de los lenguajes para combinar
herramientas sencillas formando otras más complejas hace que la destreza
que se adquiera hoy se revalorizará con el tiempo: a medida que adquirimos
nuevas herramientas, crecen las posibilidades para combinarlas con otras que
ya poseemos.

Para mostrar nuestro punto de vista, vamos a guiar al lector por una
serie de niveles de abstracción creciente, y veremos cómo estos niveles se
pueden expresar en un lenguaje de programación. En definitiva, vamos a
crear pequeños programas, casi todos triviales, para formalizar los niveles
crecientes que se alcanzan en el estudio de las matemáticas.

Elegimos el lenguaje Lisp por varias razones. En primer lugar, es el único
lenguaje del que puede decirse que es bello. Su uso recompensa al intelecto.
En segundo lugar, porque su sintaxis es trivial, lo que nos ahorra tener que
mostrar una sintaxis particular. De hecho, al lector le bastará leer los ejemplos
para darse cuenta de la sintaxis. En tercer lugar, porque este lenguaje va
mucho más allá de estos primeros niveles que nosotros vamos a desbrozar.
En cuarto lugar, porque es uno de los más antiguos lenguajes de programación
(junto con Cobol y Fortran), y su estabilidad en el pasado dice mucho sobre
su posible estabilidad futura, de modo que el esfuerzo que se hace hoy en
aprenderlo se podrá rentabilizar durante décadas. En quinto lugar, porque es
interactivo: basta escribir una función y ésta función puede ejecutarse, con
independencia de que pertenezca a un programa más complejo. Además, su
interactividad nos libra del molesto ciclo de edición-compilación-ejecución.
En sexto lugar, porque dispone de una aritmética completa y potente, que
puede trabajar con enteros, reales, racionales y complejos, sin estar limitado
por los bits del procesador. Con seis es suficiente, pero se pueden presentar
otras seis, al menos.

¿Qué haremos a partir de aquí? Presentaremos nivel a nivel, y cómo puede

usarse Lips en cada uno de ellos.

2

2. Nivel 1

Cuando un estudiante se encuentra en este nivel, es seguramente demasia-
do joven para introducirle un lenguaje de programación. No obstante, para
hacer un recorrido completo, partimos de aquí.

En este nivel, el alumno, probablemente en primaria, reconoce algunos
números a primera vista. Cuando se le presentan conjuntos de objetos, re-
conoce inmediatamente cuántos de estos objetos hay en el conjunto, sin
necesidad de contar. Esto sucede para conjuntos de 1, 2, 3 y probablemente
4 objetos. La suma es entonces algo natural, pues consiste sólo en asignar
nombres al cardinal de los conjuntos mostrados. Por ejemplo, si a un infante
se le muestran dos conjuntos, uno con 1 elemento y otro con 2 elementos,
la suma de ambos cardinales es el cardinal de un conjunto de 3 elementos,
reconocible inmediatamente. En Lisp, esta operación con números sencillos
se escribe así:

> (+ 1 2)
> 3

y el resultado es 3. Suponemos que tras escribir la primera línea pulsamos
la tecla INTRO, y como resultado se imprime la segunda. Se observa ya que
en este lenguaje las operaciones se encierran entre paréntesis, y que tras
el paréntesis de entrada se escribe la operación que se desea realizar, y a
continuación sus argumentos. Prácticamente, esta es toda la sintaxis que hay
que saber.

3. Nivel 2

En el siguiente nivel de abstracción, el alumno aprende a sumar números
cualesquiera. Esto requiere de un algoritmo, y el algoritmo es independiente
de qué números concretos se desean sumar. Esto expande las posibilidades.
En Lisp:

> (+ 234 907)
> 1141

4. Nivel 3

A partir del nivel anterior, se alcanzan enseguida operaciones adicionales,
como la resta, la multiplicación (que no es más que una suma repetida) y la
división (que no es más que una resta repetida). En Lisp:

3

> (+ 101 202)
> 303
> (- 34 16)
> 18
> (* 20 20)
> 400
> (/ 100 25)
> 4

En este punto, el estudiante puede usar Lisp como una calculadora po-
tente, si bien limitada a números enteros. Sin duda, es una calculadora mejor
que una de sobremesa, pues no está limitada por el tamaño de los números
y la introducción de las operaciones es más cómoda. ¿Por qué entonces no
usar Lisp como calculadora?

> (+ 34535345289 8976568464)
> 43511913753
> (- 986796796969698769875 858758765876443)
> 986795938210932893432
> (* 987654321012345 123456789012345)
> 121932631126351935653102399025

5. Nivel 4

En este nivel, el alumno conoce distintas clases de números. Los enteros
no son suficientes, y se le presentan los naturales, y después los racionales,
los reales y, finalmente, los complejos. Nuestro lenguaje es capaz de operar
con distintos tipos de números. Por ejemplo con racionales:

> (+ 12/67 34/101)
> 3490/6767

Con reales:

> (* 1.0098 12.713)
> 12.837587

y con complejos:

> (/ #C(12 -9) #C(-9 7))
> #C(-171/130 -3/130)

4

6. Nivel 5

El siguiente nivel borra las diferencias entre los distintos tipos de números:
un número es sólo un número. Lisp permite usar tipos distintos en la misma
expresión, y da el resultado en el tipo adecuado. Por ejemplo, la suma de dos
racionales es un racional, pero el producto de un racional por un real es un
real:

> (* 7/11 2.0)
> 1.2727273

Además, se puede operar con complejos cuyas partes real e imaginaria

sean de cualquier tipo:

> (/ #C(5.0 45/118) #C(-9 14))
> #C(-0.14318056 -0.26509818)

7. Nivel 6

En el nivel 6, generalizamos las operaciones básicas haciendo que puedan

tomar un número cualquiera de argumentos:

> (+ 1 2/90 4.45 -6)
> -0.5277777
> (/ 1.0 2.0 4.0)
> 0.125

8. Nivel 7

En el nivel 6, tenemos ya los operadores elementales, que pueden tomar un
número arbitario de operandos. Ahora ampliamos aún más las capacidades
de cálculo, admitiendo que un operando puede ser no sólo un número, sino
otra expresión, es decir, el resultado de otro u otros operandos. Además, el
proceso puede anidarse tanto como se desee o necesite:

> (+ 2 (* 3 3))
> 18
> (* 4 (+ (/ 10 5) 1))
> 12
> (- 10 (* 2 (+ 9 1 (- 3 5))))
> -6

5

9. Nivel 8

El nivel 8 es crucial, pues es el paso desde el concepto de operando al
concepto de función. Sabemos que existen funciones como las exponenciales,
raíces, logarítimas y trigonométricas que, en última instancia, se reducen a
una secuencia, quizás larga, de operaciones elementales de suma, resta, di-
visión y multiplicación. Podemos ahora ver las operaciones elementales como
funciones sencillas e incluirlas en la gran familia de las ”funciones”. Estas
otras funciones también se pueden calcular en Lisp:

> (sqrt 25.3)
> 5.0299106
> (log 12)
> 2.4849067
> (sin 0.34)
> 0.3334871
> (cos 2.71)
> -0.9083007
> (atan 3.0)
> 1.2490458

10. Nivel 9

El número de funciones que pueden definirse es infinito. Lisp permite
definir nuevas funciones, combinando funciones ya existentes. Existe una
función especial, defun, para definir nuevas funciones. Para hacerlo además,
necesitamos una abstracción adicional: la variable. En efecto, podemos es-
cribir (sqrt 8), (sqrt 34) o de cualquier otro valor. El hecho de que la
función pueda aplicarse a cualquier argumento de su dominio implica la sepa-
ración entre el procedimiento de cálculo y los valores a los que se aplica este
procedimiento. Mediante el uso de variables podemos designar no
  • Links de descarga
http://lwp-l.com/pdf642

Comentarios de: Niveles de abstracción. Lisp y la pedagogía (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad