En mi opinión, es más útil pensar en una función como algún procedimiento que toma un valor de entrada de algún tipo de "dominio" y produce un valor de algún tipo de "codominio".
Ahora, en la práctica, especialmente en campos aplicados, a menudo se ven funciones presentadas en formato de tabla. Por ejemplo, una tabla como la siguiente podría usarse para representar datos sobre el número de nacimientos por año en una ciudad hipotética.
Año Número de nacimientos
------------------------
1998 20145
1999 21350
2000 21048
2001 22484
2002 22537
A partir de esta tabla, se puede construir una función. Es decir, el procedimiento asociado a la tabla es: buscas el valor de entrada en la primera columna, luego te mueves a la segunda columna en la misma fila y tomas ese valor como el valor de salida. Por supuesto, para que esta tabla represente una función, tiene que haber exactamente una fila para cada posible valor de entrada en el tipo de dominio. Así que, en el ejemplo anterior, la tabla corresponde a una función f donde, por ejemplo, f(1999)=21350 y f(2002)=22537.
En contextos matemáticos, sin embargo, comenzamos a encontrarnos con problemas en la representación de tablas cuando queremos considerar funciones con un dominio infinito: en ese contexto, siempre se nos acabará el papel antes de poder listar todas las posibles filas de la tabla. Esto se puede solucionar considerando algún conjunto abstracto de pares ordenados como una generalización de la idea de tabla. Sin embargo, dado que ahora nos hemos trasladado a un conjunto abstracto en lugar de algo que se pueda ver en su totalidad, mi opinión es que esto se vuelve menos útil como modelo mental. (Por lo tanto, desde este punto de vista, la principal utilidad está principalmente en contextos formales, por ejemplo, si estás comenzando solo con el lenguaje y los axiomas de ZFC y quieres definir funciones en términos del lenguaje de ZFC. Esto sería algo mejor dejado para clases más avanzadas.
Otra cosa que posiblemente vale la pena mencionar, más relevante en el pasado que en el presente, serían las tablas logarítmicas y las tablas de funciones trigonométricas que solían publicarse. La idea allí sería aproximarse a la función logarítmica o a una de las funciones trigonométricas, mediante la función cuya regla se obtiene buscando los valores más cercanos en un gran conjunto de muestras para la entrada, y luego realizando interpolación lineal entre las dos muestras más cercanas. Técnicamente, podríamos decir que esto también tiene un tipo de codominio de alguna noción de números de "precisión fija", ya que las tablas solo pueden proporcionar un número finito de dígitos decimales de la salida.
(Como insinué anteriormente, también tiendo a gustarme la idea de utilizar la teoría informal de tipos como base para enseñar matemáticas, en lugar de la idea de usar la teoría de conjuntos informal que parece dominar actualmente. En mi opinión, la teoría de tipos representa más de cerca la forma en que los matemáticos piensan realmente sobre las cosas en su día a día, con la posible excepción de los teóricos de conjuntos axiomáticos. Sin embargo, admito que no tengo conocimiento de si se ha realizado un estudio formal de esta idea y si realmente daría como resultado mejoras en los resultados educativos.)