Lo que no está en Internet no existe. Leí por primera vez estas palabras en una conferencia de Aníbal Ford, aunque las citaba para desmentirlo. No obstante es cierto que la idea subyacente ha seducido a millares de jóvenes y profesionales. Internet ha sido la espoleta para el segundo boom de los estudios de informática (el primero se situaría hacia inicios de los 90 con la popularización de los ordenadores personales).
La posibilidad de proyección laboral o personal que supone penetrar en el mundo de la informática hace que, además de los estudios universitarios, exista una amplia oferta de formación en programación y con ella multitud de cursos para aprender a programar en Flash o programar páginas web en Flash. Evidentemente para estos objetivos Flash es la mejor herramienta pero, realmente ¿Flash es adecuado para aprender a programar? ¿Se trata de la mejor opción para introducirse en el mundo de la programación?
Los paradigmas y el aprendizaje de la programación
A pesar de que la evolución de los lenguajes de programación, emparentada con el aumento de la potencia del hardware, ha generado lenguajes basados en diversas concepciones para enfocar los problemas (paradigmas), parece existir el acuerdo tácito en la mayoría de universidades de basarse, para iniciar en las técnicas de programación a sus estudiantes de primeros cursos, en el paradigma de programación imperativa por ser el que mejor se adapta al lenguaje algorítmico.
La construcción de programas para resolver problemas planteados implica que el aprendiz de programador sea capaz de determinar el algoritmo adecuado, el conjunto de datos necesarios y pueda trasladar algoritmo y estructura de datos al lenguaje de programación elegido. Cuanto mayor sea el parecido entre la concepción intelectual que se ha generado el estudiante y lo que el lenguaje de programación deja plasmar, más adecuado será éste lenguaje. De ahí que se usen normalmente en la iniciación los lenguajes imperativos porque permiten crear programas que son series de órdenes que la máquina tiene que cumplir.
En las primeras andanzas del estudiante conviene que la tutela sea máxima, que el mismo lenguaje de programación obligue a desarrollar «buenos usos» de programación, indicando los errores e impidiendo que pueda prosperar la construcción un programa con imprecisiones. Para esto, se asocian las operaciones a los tipos de datos, los compiladores avisan de las conversiones «sospechosas» de datos y se obliga a que los distintos bloques de un programa se distribuyan en un orden determinado (declaraciones de tipos, de funciones, de variables y definición de funciones y/o programa principal).
A las precondiciones anteriores que se refieren al lenguaje hay otra de gran importancia que se relaciona con el entorno de programación: es deseable un entorno despejado, sin elementos que puedan distraer la concentración, para que toda la labor intelectual se dirija estrictamente la construcción del programa para resolver el problema planteado.
![Programación Dev C++](http://limassol.uoc.es/wp-content/uploads/2009/03/061art01.gif)
Entorno de programación Dev C++
Si por un lado se aceptan las anteriores como las características deseables para un lenguaje de iniciación a la programación, por otro lado debe considerarse la oferta comercial de lenguajes. No debe olvidarse que el programador se forma para proyectar luego su labor en el campo profesional y en los lenguajes de programación que más se ajustan y utilizan en cada sector. La elección del lenguaje de programación para el proceso de aprendizaje debe ajustarse también a las necesidades del perfil profesional del programador en formación.
Trabajar con Flash
Aunque habitualmente (y hasta este momento en el artículo) se habla de programar en Flash, lo cierto es que Flash es un programa de edición multimedia, adaptado a la distribución en red y que en sus diversas versiones, con el objetivo de aumentar la potencia de su interactividad, se ha dotado de un lenguaje de programación (ActionScript). Así, trabajar con Flash comprende los aprendizajes del lenguaje ActionScript y del propio entorno Flash en el que debe realizarse el desarrollo. Las características de ambos (lenguaje y entorno) pueden tener incidencia en el proceso de aprendizaje.
El entorno Flash que, por su misma historia evolutiva, incorpora principalmente los elementos de diseño gráfico, de gestión de la secuencia de la película y de los objetos a incorporar, el escenario visible, etc., puede resultar un tanto complejo para el estudiante de programación si no se ha familiarizado previamente usándolo para crear animaciones sencillas, por ejemplo.
![Flash ventana Acciones](http://limassol.uoc.es/wp-content/uploads/2009/03/061art02.gif)
Entorno de desarrollo en Flash antes y después de abrir la ventana de Acciones.
Las características asociadas al entorno Flash que influyen en el programador son:
- Debe abrirse especialmente la ventana Acciones para escribir las instrucciones.
- Las instrucciones no forman parte de un programa global, son scripts que quedan asociados a alguno de los elementos estructurales de Flash: fotogramas de una capa de la línea de tiempo, botones del escenario, clips, etc. Esta libertad otorgada al programador puede facilitar la repetición de código o la escritura de códigos contradictorios, que deben ejecutarse cuando el cabezal pasa por un determinado fotograma.
- La existencia de las líneas de tiempo y su gestión mediante funciones de control del cabezal que se incorporan a los scripts introducen elementos asociados a la programación no estructurada (goto…).
Por otro lado, el mismo lenguaje ActionScript incorpora nuevas características que infieren en el proceso de aprendizaje de la programación:
- El compilador es permisivo con los errores sintácticos. Es capaz de aceptar instrucciones sin los ; finales y, por lo tanto, presupone dónde acaban las instrucciones o qué quería escribir el programador. En general lo hace con acierto y el programador puede acostumbrarse a una cierta laxitud sintáctica y ser incapaz de detectar algún funcionamiento defectuoso de un programa por errores sintácticos.
- La ejecución de las funciones de control de la película intercaladas en el script no siguen la estructura secuencial obligada. Si un script empieza por un salto de fotograma no condicional, se ejecuta primero el resto del script y luego el salto de fotograma. Este incumplimiento de la estructura de control de flujo básica puede hacer dudar al estudiante de la validez de los principios de la programación imperativa.
- La falta de instrucciones de entrada/salida obliga a asociar el intercambio de información con el usuario a actores de la película (textos de entrada o dinámicos) y a la gestión del cabezal de la película para detenerla y permitir los intercambios.
- Las variables son independientes de los tipos. Una misma variable puede contener textos, números, clips. Puede crear una cierta confusión en el programador.
- Algunas funciones básicas (como las matemáticas) forman parte de clases obligando a una sintaxis más elaborada.
Los elementos descritos pueden desanimar al uso de Flash/ActionScript a un potencial estudiante de programación. No obstante, para aquellos estudiantes que influidos por el empuje del mundo multimedia quieran aprender las bases de la algorítmica y la programación y obtener como resultados prácticos, desde el comienzo, unos trabajos de estética atractiva y que fácilmente puedan publicarse y ejecutarse en una Web, las compensaciones son enormes.
Introducirse en el aprendizaje de la programación mediante Flash y ActionScript es una opción adecuada y las potenciales desventajas son fácilmente neutralizables con simples normas de uso a las que fácilmente podemos acostumbrarnos:
- El aprendizaje del uso básico del entorno debe preceder al del lenguaje de programación. Puesto que el entorno incluye numerosas herramientas de diseño, bibliotecas, paneles y ventanas, el aprendizaje del entorno Flash resulta más largo que los entornos textuales de otros lenguajes. No obstante, el mismo dominio del entorno de programación permite la creación de producciones multimedia muy satisfactorias.
- Junto con la creación de animaciones simples en el aprendizaje básico del entorno, debe incidirse en el uso de las instrucciones de control del movimiento del cabezal: stop(), gotoAndPlay(), etc. De este modo, se desvinculan las instrucciones de control del cabezal reproductor de las instrucciones que determinan las estructuras de control de flujo del programa facilitando la comprensión de los conceptos de programación estructurada.
- El programador debe concentrar la escritura del código de los programas. Si bien Flash permite escribir instrucciones en cualquier fotograma y dentro de botones y clips, un buen uso es concentrar el código en capas especializadas donde sólo escribir scripts y funciones. Así se elimina el riesgo de códigos contradictorios y/o repetidos y puede realizarse con facilidad el seguimiento y depuración del programa.
- La pluralidad de tipos que puede contener una determinada variable a lo largo de una ejecución puede resolverse mediante un buen análisis del problema, la creación de un buen diccionario de datos para el programa y la aplicación de reglas que permitan asociar directamente el nombre de una variable a su tipo y uso en el programa.
Con la aplicación de estas sencillas reglas, la introducción a la programación mediante ActionScript no implica mayores dificultades más que el uso de otro lenguaje y el aprendizaje puede abstraerse en gran medida de la herramienta. Materiales diseñados para el aprendizaje tutelado de la programación pueden usar ActionScript y trabajar explícitamente los conceptos generales de aplicación a cualquier lenguaje.
A la luz de estas sugerencias y ejemplos, una nueva lectura de las características que influyen en el programador mostrará que, en general, el lenguaje y el entorno permiten muchos grados de libertad y que con un buen ejercicio de disciplina y una tutela adecuada permiten formar programadores más preparados para la diversidad de lenguajes que pueblan el universo informático.