La función

Una función es una regla con nombre: entra un valor y sale un resultado. Por qué el nombre importa, qué es la abstracción y cómo se encadenan funciones.

4 min
Editar

La función es una regla con nombre: entra un valor por arriba, la regla lo transforma dentro, y sale un resultado por abajo. con IVA es una función: entra un precio, sale ese precio multiplicado por 1,21. Hasta aquí, nada que no hiciera una línea suelta de las del capítulo de las variables. Lo que la función añade es el nombre, y el nombre es la pieza importante, porque permite usar la regla sin tenerla presente. Quien escribe total = con IVA(precio) ya no piensa en el 1,21: piensa en lo que quiere decir. Ese gesto (meter una regla en una caja, ponerle una etiqueta y trabajar desde entonces con la etiqueta) es la abstracción, y es la herramienta principal con la que se construye todo el software que existe, desde una hoja de cálculo hasta un sistema operativo.

La figura de esta página dibuja dos funciones como máquinas encadenadas. La primera, con IVA, multiplica por 1,21; la segunda, a céntimos, redondea a dos decimales, y la salida de la primera entra en la segunda:

función con IVA(precio)
    devolver precio × 1,21

función a céntimos(importe)
    devolver importe redondeado a dos decimales

total = a céntimos(con IVA(12,50))

Es exactamente lo que hace cualquier programa real: encadenar máquinas con nombre. Mueve el deslizador del precio y verás el valor viajando por la cadena con sus tres escrituras (12,50 €, 15,125 €, 15,13 €), la intermedia con tres decimales para que se vea qué trabajo hace la segunda máquina. Pulsa sobre una máquina para cerrarle la tapa: sigue transformando igual, pero ya solo muestra su nombre. Y debajo hay una segunda entrada, con su propio deslizador, que pasa por una tercera instancia de con IVA: la misma máquina trabajando otra vez con otro precio, porque una función escrita una vez se puede usar las veces que haga falta.

Interactivo Mueve los precios, encadena las dos máquinas y ciérrales la tapa con un clic: la cadena sigue funcionando idéntica aunque solo se vean los nombres. Fíjate en el resultado intermedio con tres decimales.

La idea tiene una historia doble, matemática e industrial. En matemáticas, la palabra la acuñó Leibniz a finales del siglo XVII para las cantidades que dependen de una curva, y la noción moderna (cada entrada tiene exactamente una salida) la fijó Euler en su Introductio de 1748. En computación, la pieza práctica fue la subrutina: David Wheeler la describió en 1952 como lo que permitía al EDSAC de Cambridge tener una biblioteca (reglas escritas una vez por alguien que las había pensado bien, y usadas después por todos sin releerlas). Cuatro años después, el manual de FORTRAN ya incluía la FUNCTION como instrucción del lenguaje. La biblioteca de subrutinas es, en miniatura, toda la economía del software: alguien escribe a céntimos con cuidado una vez, y diez mil programas redondean bien sin que sus autores hayan tenido que saber cómo se redondea.

La tapa que se cierra en la figura es el punto sutil. Cuando la tapa está abierta ves la regla: multiplicar por 1,21. Cuando está cerrada ves solo el nombre, y el programa funciona idéntico. Esa posibilidad de olvidar el interior es lo que permite construir programas grandes: nadie puede tener en la cabeza los millones de líneas de un navegador, pero cualquiera puede manejar una cadena de veinte nombres. El precio de esa comodidad es que la caja puede estar mal por dentro y el nombre no avisar: con IVA podría estar multiplicando por 1,19 desde una actualización, y el código que la usa seguiría leyéndose igual de razonable. Las funciones se comprueban por separado, con entradas conocidas y resultados esperados, porque la confianza que da el nombre hay que merecerla.

Hay dos reglas de higiene que distinguen una buena caja de una trampa. La primera es que la función solo mire lo que entra por su entrada y solo cambie lo que sale por su salida: una con IVA que además anotara el precio en una caja global funcionaría, pero cada uso dejaría una huella invisible en el estado, y dos llamadas con la misma entrada podrían dar resultados distintos según lo que hubiera pasado antes. La segunda es que el nombre diga la verdad entera: con IVA que además aplicara un descuento tendría una tapa mentirosa, y el código que la usa decidiría mal sin saberlo. Entrada clara, salida clara, nombre honesto: con esas tres condiciones, una caja se puede cerrar sin miedo.

Y hay veces en que ni con la caja comprobada el programa hace lo que su autor quería. La regla es correcta, la máquina la ejecuta sin un fallo, y el resultado está mal: el error estaba en lo que el autor pidió. De eso trata el siguiente capítulo: la depuración, o qué hacer cuando el programa funciona y no sirve.

§

Fuentes

  1. Gottfried Wilhelm LeibnizNova Methodus pro Maximis et MinimisActa Eruditorum, Leipzig1684
  2. Leonhard EulerIntroductio in Analysin InfinitorumMarcus-Michael Bousquet, Lausana1748
  3. David J. WheelerThe Use of Sub-routines in ProgrammesProceedings of the 1952 ACM National Meeting, Pittsburgh1952
  4. IBM, con John W. Backus y su equipoThe FORTRAN Automatic Coding System for the IBM 704 EDPM: Programmer's Reference ManualInternational Business Machines Corporation, Nueva York1956
Sarasola, Josemari (2024). "La función". Ikusmira. Recuperado de https://ikusmira.org/p/la-funcion-informatica/

Una errata, un dato desfasado, un párrafo que falta: edítalo y la redacción revisa tu propuesta.

Sugerir una mejora →
Informática La función