sábado, 11 de mayo de 2013

Palabras aparte sobre PHP y programación funcional.

Data types:

Primeramente aclarar de aquí en adelante los data types. ¡ los objetos no existen !, y para manejar datos emplearemos solo arrays no asociativos, además de los tipos de datos triviales (números, strings).

Ámbito de las funciones en PHP:

En este ejemplo, como vemos, una vez llamada la función outer desde el ámbito global, también podremos llamar a las funciones declaradas en outer. Ésto nos priva de un ámbito de funciones anidadas. Lo cual, en un programa con orientación funcional podría traernos muchos problemas! Un simple ejemplo está en que si dos programadores arman, cada uno, una función y luego las ponen en un mismo archivo, van a tener que tener un enorme cuidado con el nombre de las funciones que hayan definido dentro.

Peeero, desde la versión 5.3+ podemos restringir el ámbito de las funciones, simplemente creandolas como funciones anónimas y luego asignándolas a una variable. Así quedaría:

Layer 1 funcion-anidada.php funciones-anidadas-anonimas.php outer inner outer inner

*A menos que pasemos el valor por referencia usando un & antes de la variable, en la declaración de la función. Ej: function suma(&\$sumando1, &\$sumando2) { [definición de la función] }

-->

martes, 30 de abril de 2013

Introducción a Programación Funcional.

¿ Qué es la programación funcional ?

La programación funcional (en su estado más puro) es la aplicación del cálculo lambda. Es decir:
Se puede considerar al cálculo lambda como el más pequeño lenguaje universal de programación. Consiste en una regla de transformación simple (sustitución de variables) y un esquema simple para definir funciones.

Con la programación funcional, la interpretación del código se vuelve más sencilla y nuestra declaración de variables pasa a ser una asignación de cierto valor a un símbolo. Ésta variable no cambiará. Comenzamos por definir qué no es funcional:

La línea 4 es la que hace que no sea funcional*.
El problema de volver a asignarle un valor a cada elemento de \$enteros, está en que, el valor de la variable \$enteros va a ser distinto antes y después del for. Lo que, en este trozo de código parece no importar, pero en un script de mayor cantidad de líneas puede comenzar a perderse noción del valor de la variable, dependiendo de la línea en la que se encuentra. El mismo ejemplo desde programación funcional sería:
array_map es una función común en programación funcional, tanto que PHP la implementa nativamente. array_map toma dos parámetros, una función y un array. Básicamente ejecuta la función por cada elemento del array, además se lo pasa como parámetro (\$elem). Luego devuelve un nuevo array con las modificaciones a cada elemento. Nótese que éste será un nuevo array, por lo tanto \$enteros continúa teniendo su primer valor. Nótese que la función que se pasa como parámetro a array_map, es una función anónima.
(1) Algo muy importante de la programación funcional es que todas las funciones deben devolver el mismo valor si se les pasa el mismo argumento. (2) Es importante notar que el orden de evaluación de PHP es estricto, es decir, antes de evaluar una función, se evalúan sus argumentos, ésto hace la interpretación de un programa mucho más sencilla. Teniendo en cuenta (1) y (2) obtenemos un estilo de programación mucho más interpretable y sencillo.

*Además de la línea 4, la línea 3 tampoco es funcional dado el i++, que es lo mismo que i = i + 1.

jueves, 3 de enero de 2013

Bienvenida

¡ Buen día !
Inauguro el blog, en ésta sección, el interés estará sobre todo aquel estudiante de Licenciatura de Ciencias de la Computación, o interesado en informática /matemáticas.
    Espero, sirva a alguien, y por supuesto, si hay algún error en los textos, se me notifique, muchísimas gracias. Suerte!