domingo, 26 de septiembre de 2010

Lenguajes funcionales

Materia Lenguajes de Programación

Los lenguajes funcionales se basan en la declaración de funciones aritméticas, trata de ser un lenguaje expresivo y matemáticamente elegante.
Los programas escritos en lenguajes funcionales están compuestos únicamente por la definición de funciones, pero no se trata de subrutinas de un programa iterativo, si no más bien como funciones puramente matemáticas.
Los lenguajes funcionales son: Haskell, Miranda, R, Lisp, Scala, Scheme, ML, Erlang entre otros.

Lenguaje R
Es un lenguaje para análisis estadístico y gráfico creado por Ross Ihaka y Robert Gentleaman.
Los análisis gráficos pueden ser visualizados en su propia ventana, permitiendo ser guardada en varios formatos(pdf, png, etc), mientras que los resultados de análisis estadísticos los podemos ver en la misma pantalla.
Una vez instalado R(sudo apt-get install r-base) en nuestra computadora, es fácil empezar los primero que veremos es el cursor < listo para comenzar!

Lo que yo hice en R es una gráfica con valores al azar:

> x <- rnorm(10)
> y <- rnorm(10)
> plot(x, y)


Y esta es la ventana que muestra la gráfica:

Ahora una gráfica más personalizada, muestra nuestras calificaciones hasta ahora en la materia de Lenguajes de programación sin contar los puntos extras.

> Alumnos <- 1:34; Puntos <- c(11, 5, 4, 10, 9, 7, 3, 9, 11, 6, 5, 0, 0, 8, 11, 7, 2, 1, 8, 0, 6, 11, 8, 2, 8, 14, 4, 7, 0, 5, 0, 10, 10, 10); > plot(Alumnos, Puntos, pch=22, col="red", bg="yellow", main="Calificaciones Lenguajes")


Bueno una pequeña explicación, lo que estoy indicando es que Alumnos es una variable que contiene 34 posiciones, y puntos tambien tiene 34 pero con valores que yo le dí, la función plot(Alumnos, Puntos) es la que gráfica los datos.
Personalizar:
pch: Especifica que la gráfica será con determinada figura, en mi ejemplo utilicé la figura numero 22, pero bien pudo haber sido cualquier otra. En la siguiente imagen podemos ver las diferentes figuras a elegir:

col: Es el contorno de la figura elegida.
bg: Color de fondo.
main: Titulo del gráfico.

Y la gráfica resultante:



Lisp

Lisp es un lenguaje tipo funcional, es el segundo lenguaje de alto nivel más viejo, los dialectos de Lisp más ampliamente conocidos son el Scheme y Common Lisp.
El nombre Lisp viene de "LISt Processing" (Proceso de LIStas). Una de las estructuras de datos importante de Lisp son las listas encadenadas, el código fuente de lisp esta compuesto de listas.
Es un lenguaje útil para desarrollar la inteligencia artificial.

Para empezar a programar en Lisp lo primero que hice fué instalar clisp:

cecy@cecy-desktop:~$ sudo apt-get install clisp

Después escribo en el terminal clisp y aparece algo como esto:

Hice algunos ejercicios de recursión en lisp:

Fibonacci

[1]> (defun fibo (n)
(if (<= n 1)
n
(+ (fibo(- n 1)) (fibo(- n 2)))))
FIBO
[2]> (FIBO 5)
5
[3]> (FIBO 7)
13

Potencia
(defun potencia(base exponente)
(if(= exponente 0)
1
(* base (potencia base (- exponente 1))))
)
POTENCIA
Break 101 [103]> (POTENCIA 1 2)
1
Break 101 [103]> (POTENCIA 2 2)
4
Break 101 [103]> (POTENCIA 2 5)
32
Break 101 [103]> (POTENCIA 3 3)
27
Break 101 [103]> (POTENCIA 3 3)

Factorial
Break 114 [117]> (defun factorial(n)
(if (= n 0)
1
(* n (factorial (- n 1)))))
FACTORIAL
Break 114 [117]> (FACTORIAL 5)
120


Y un tipo case en lisp:
Break 120 [123]> (defun funcion(n)
(cond ((= n 0) (print "Presionaste 0"))
((= n 1) (print "Presionaste 1"))) )
FUNCION
Break 120 [123]> (funcion 0)

"Presionaste 0"

6 comentarios:

  1. Todavía no califico a esta tarea ya que no está concluida.

    ResponderEliminar
  2. Una idea: Tal vez puedas realizar un análisis estadístico simple de algún tipo de evento o serie de datos.

    ResponderEliminar
  3. Hola, Cecilia, tengo una duda, cuando programas en Lisp ¿no lo tienes que hacer en emacs? ¿a poco simplemente escribes "clisp" en el Terminal y ya puedes empezar a escribir el código?

    Hasta luego.

    ResponderEliminar
  4. no no tienes que abrir emacs aunque tambien se puede de la otra forma

    ResponderEliminar
  5. ¿No sería más informativa la gráfica de las calificaciones si fuera ordenada? Te pongo tres puntos por el reporte 4.

    ResponderEliminar