Epílogo: ser un programador
¡Quien haya comprendido el contenido de este libro y haya podido resolver los ejercicios puede considerarse un programador en Wolfram Language! Claro que siempre habrá más cosas que aprender, pero ya puede empezar a usarse lo aprendido aquí para hacer programación de verdad.
¿Qué se puede hacer? ¡Muchísimo! De hecho, casi todos los días surgirá algo que pueda atacarse usando la computadora. Sin embargo, si se usa un lenguaje tradicional esto seguramente tomará mucho tiempo. Pero quien conozca Wolfram Language, con los conocimientos que tiene incorporados y su capacidad de automatización, está listo para escribir programas útiles en cuestión de minutos.
Y eso significa que ya se puede escribir programas para todo tipo de cosas. Cosas que quiere uno entender, cosas que uno quiere inventar, cosas que se quiere hacer para otras personas. Algunas veces se escribirá prontamente un programa que se va a correr solamente una vez y nunca más. Pero también sucede que el programa en cuestión se llegará a usar muchas veces, y que quizá se vaya haciendo más sofisticado con el correr del tiempo.
Para la programación cotidiana en Wolfram Language, lo mejor es escribir los programas directamente en cuadernos Wolfram, que permiten mezclar código con resultados y explicaciones textuales, tal y como se hace en este libro. Al poco tiempo se contará con una buena colección de cuadernos Wolfram para hacer una diversidad de cosas.
Muchas veces los programas se ejecutarán directamente en dichos cuadernos. Pero también algunos se activarán en la nube, con el fin de crear sitios web, aplicaciones u otras cosas. Y una de las grandes virtudes de Wolfram Language es la facilidad para hacer todo eso.
Desde luego que con solo unas cuantas líneas de código en Wolfram Language no sería fácil crear algo como un sitio web que goce de gran popularidad y quiera usarlo mucha gente. Más bien, se descubrirá que hay una gran diversidad de detalles que se antojaría añadir, y eso llevará a escribir un programa significativamente más extenso para incluirlos.
De hecho, no hay nada diferente con un programa muy extenso en Wolfram Language. Aun si se tuvieran millones de líneas de código (como, por ejemplo, en el caso de Wolfram|Alpha), localmente todo se ve igual que el código en este libro; simplemente es más largo.
Sin embargo, en cualquier proyecto de programación hay algunas cuestiones que surgen cuando los programas son de gran extensión. Es esencial asegurarse de llevar a cabo pruebas sistemáticamente (en Wolfram Language esto se puede hacer usando VerificationTest). Hay que organizar el código en paquetes separados apropiadamente. Y si hay varios programadores participando conjuntamente, se requiere hacer uso de estructuras de gestión tales como control de versión, revisión del código, etc.
Y, más allá de eso, es importante que se haya hecho un buen trabajo en el diseño y la arquitectura. ¿Será comprensible el sistema por los usuarios, y por los programadores? ¿Qué estructuras se van a usar para representar adecuadamente lo que se quiere lograr? ¿Cómo van interaccionar entre sí las diferentes partes del código? Estas son el tipo de cosas que deben pensar bien los encargados de construir sistemas grandes de software, y se requieren habilidades y experiencia considerables para hacerlo correctamente.
Pero, ¿cómo proceder si uno apenas se inicia en el tema? ¿Qué se necesita para crear el tipo de programas que hagan lo que se desea? Pues el primer paso en este sentido consiste en tratar de pensar en términos computacionales.
Puede tratarse de algo en lo que se hayan estado usando las computadoras por mucho tiempo. O bien, algo que es concebible solo como resultado de la existencia de Wolfram Language. Sea lo que sea, hay que tratar de pensar en alguna función de Wolfram Language para resolverlo.
¿Qué se le debe dar a esa función para que opere? ¿Qué tipo de salida debe generar? ¿Qué nombre habría que darle a la función? No hay que comenzar pensando en la escritura del código, sino solo en lo que dicha función debe realizar. Y, solo después de haber reflexionado bien al respecto, habrá que comenzar a escribir el código.
Conviene buscar en este libro y en el sitio web de Wolfram Language ejemplos similares a lo que se quiere hacer. Con un poco de suerte se encontrará todo lo que se requiere. Aunque tal vez hay alguna parte que no está suficientemente clara para lograrlo. En tal caso, puede ser provechoso el imaginarse cómo se le explicaría el problema a alguien que tuviera una capacidad técnica infinita. A veces, con solo eso se puede identificar al menos algunas cuestiones específicas que, entonces, pueden comenzar a formularse en Wolfram Language.
Una de las características atractivas de Wolfram Language es la facilidad con que siempre se pueden hacer experimentos. Puede intentarse sin mucho esfuerzo cosas diversas y ver si alguna funciona. Vale la pena ser lo más sistemático posible en este tipo de exploraciones, y estar todo el tiempo consciente de que en Wolfram Language es menos importante la escritura de código que la comprensión cabal de lo que se quiere obtener, en términos computacionales.
Es por demás satisfactorio comenzar con una idea y convertirla en un programa que funcione. Además, ser capaz de hacerlo es algo muy valioso. Con Wolfram Language hay grandes oportunidades para construir programas que rebasan cualquier cosa que pudiera haberse hecho anteriormente, y así lograr progresos en muchas áreas. Sin duda, con lo que se ha aprendido en este libro se está ya en la posición de participar en eso.