CÓMO: Escribir programas

Puppy es una distribución pequeña y no está preparada para compilar programas en lenguajes como C o C++; tampoco Perl, Java, ni Python. Sin embargo, hay dos lenguajes de programación disponibles en Puppy, que ofrecen poder y flexibilidad increíbles: El entorno Ash de programación de comandos (shell scripts), y Tcl/Tk (ver también una nota en X11-Basic al final de esta página). Pero primero, el ambiente Ash:

Programación de comandos con Ash

La programación de comandos es un sistema listo para la acción en Puppy. Este sistema ha estado incluído en Unix y Linux desde siempre y seguirá así, por un largo tiempo. La programación de comandos emplea el mismo entorno de texto de la línea de comandos. Cuando el usuario ejecuta el servidor gráfico X, la línea de comandos está en una ventana de terminal, pero también puede uno salir de “X”, de vuelta hacia el entorno de texto y la línea de comandos.

El programa que ejecuta la interacción con el usuario, en la línea de comandos, se llama “shell”, y en Linux usualmente ese programa es el entorno Bash. Pero no es el único que existe. De hecho, Puppy tiene un entorno de comandos ligeramente más simple, conocido como Ash, que viene dentro del paquete BusyBox.

Un “shell script” (llamémoslo “script”) es un programa ejecutable, pero también es un archivo de texto, y no necesita ser compilado. Los “scripts” pueden ser muy sofisticados, y hay muchos en Puppy.

Esta página no es un tutor de programación con Ash/Bash – hay gran cantidad de libros sobre el tema, impresos y electrónicos. Hay un par de documentos “CÓMO” para crear “scripts” en Bash aquí (en inglés):

"Advanced Bash-Scripting Guide": http://www.tldp.org/LDP/abs/html/index.html
"Bash Programming - Introduction HOWTO": http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

Para escribir un “script” en Ash/Bash, todo lo que hace falta es un editor de texto, y Puppy tiene dos editores de texto en modo consola, vi y MP; y otros dos editores en modo gráfico, Beaver y Leafpad. Beaver y MP son particularmente interesantes, ya que permiten resaltar el texto en diversos colores, según la sintaxis del programa, para ayudar en la edición de “scripts” en Bash/Ash. (ver también, ML, en la sección Tcl/Tk más abajo)

¡Diviértase, escriba un “script” para Puppy! La página de desarrollo de Puppy tiene algunas sugerencias al respecto (en inglés):

http://www.goosee.com/puppy/developer.htm

Puppy tiene gran cantidad de documentación y herramientas de ayuda para la programación de “scripts”:

vi, mp,
Beaver, Leafpad

Editores de texto

Ash

Entorno de comandos usado en Puppy

BusyBox

Un conjunto de aplicaciones básicas de consola en Unix/Linux, que se pueden usar en “scripts”

Xdialog

Un ambiente gráfico de fachada para los “scripts”, basado en GTK

xmessage

Un ambiente gráfico de fachada muy básico para los “scripts”, basado en X11

xcut

Una aplicación de consola para cortar y pegar información desde el “portapapeles”

gtk-shell

Esta es una alternativa a xmessage and Xdialog, basada en GTK, muy flexible, simple y compacta. Puede mostrar y editar archivos, presentar un cuadro de diálogo de selección de archivos, presentar ventanas de entrada de datos, con botones de selección. Sin documentación. Para ver ayuda, basta con escribir "# gtk-shell -h".

gtkdialog

Esta es otra alternativa a gtk-shell, xmessage y Xdialog. gtkdialog es una aplicación basada en GTK2 y puede leer un archivo XML que describe el formato de las ventanas de diálogo e interacción con el usuario, permitiendo la programación de interfases gráficas de usuario (GUI) increíblemente sofisticadas. Este programa se incluyó a partir de Puppy 0.9.7. En lo personal, creo que gtkdialog es la mejor selección de todas.


Aquí hay algunos “scripts” usados en Puppy:
/usr/sbin/hardware-probe
/usr/sbin/modem-wizard
/usr/sbin/firewall_install.sh

Tcl/Tk

Tcl es un intérpete de comandos en “scripts”, similar en concepto a los creados con Ash. Un programa Tcl puede ser fácilmente convertido en un “shell script”, pero lo que diferencia a Tcl es la librería Tk, que convierte a Tcl en un auténtico ambiente de programación en entorno gráfico. Hay muchas librerías de extensión para Tcl, y Puppy cuenta en la actualidad con Tk (la extensión estándar, con todos los accesorios básicos), Img (Tcl/Tk sólo puede manejar archivos gif, Img le permite ampliar su alcance a archivos jpeg, png, etc.), Combobox (un accesorio sofisticado), BWidget (más accesorios sofisticados), Snack (librería de sonido) and tkhtml (un accesorio para ver y modificar archivos HTML). Todas estas librerías se encuentran en el directorio /usr/lib.

También hay algunos paquetes especiales para Tcl, tales como FTP y uri (los cuales no se usan en la actualidad, pero se planea usarlos si se expande phv, el visor de archivos HTML de Puppy).

Muchas aplicaciones en Puppy han sido escritas en Tcl/Tk, tales como Slidedraw, TkZip, CDTAR, XS, snamp, tkpppoe, phv y regexpviewer.

¿Por qué Tcl? ¿Por qué no Perl o Java? Para mí, en lo personal, hay tres razones principales: hay un gran número de aplicaciones gráficas disponibles, Tcl/Tk es razonablemente pequeño, y es un lenguaje muy simple y fácil de aprender. Este último punto es fundamental, ya que me permite leer los programas escritos por otros, a diferencia de los lenguajes basados en la sintaxis de C, que pueden tener código realmente complicado (C++, Java).

Otro punto a considerar es el soporte. La comunidad Tcl/Tk es muy activa, y sus páginas Web tienen montones de documentación, tutores y ejemplos de código. También, Tcl/Tk está muy difundido, ya que cada distribución Unix y Linux la tiene incluída. Y también está disponible para los otros sistemas operativos, como Windows y Mac.

Aquí hay algunas herramientas en Puppy para facilitar la programación en Tcl/Tk:

ML

El editor de consola MP y el editor gráfico Beaver tienen la capacidad de resaltar las instrucciones en colores para editar programas en Tcl/Tk. Sin embargo, Puppy tiene aún otro editor de texto, llamado ML, especialmente diseñado para programar en Tcl/Tk. ML tiene la misma capacidad de resaltar código en colores y una característica de salto rápido dentro de los procedimientos que se van programando.

tkcon

Este es un emulador de terminal de consola, parecido a rxvt, capaz de hacer hacer lo mismo que rxvt, pero con características adicionales orientadas a la programación en Tcl/Tk –ACTUALMENTE NO SE ENCUENTRA EN PUPPY

No he incorporado documentación para enseñar a programar en Tcl/Tk, dentro de Puppy: para ello, obtenga un buen libro, o estudie la documentación que se encuentra en el Internet. Para averiguar más sobre Tcl/Tk, aquí hay algunos enlaces (en inglés):

www.tcl.tk/advocacy/top10.html

Las diez razones principales para adoptar Tcl

www.tldp.org/HOWTO/Scripting-GUI-TclTk

Un pequeño CÓMO programar comandos gráficos con Tcl/Tk

mini.net/tcl/540.html

¡Tcl es diferente!

mini.net/tcl/3222

Tcl/Tk es tan fácil....

rsusu1.rnd.runnet.ru/graphics/tcl/tcl-faq

comp.lang.tcl grupo de noticias, preguntas frecuentes

wiki.tcl.tk/969

Las artes y técnicas de la programación en Tcl-Tk

hegel.ittc.ukans.edu/topics/tcltk/

Documentación en línea

www.beedub.com/book/

Extractos del libro "Practical programming in Tcl and Tk"

X11-Basic

X11-Basic es una versión de Basic. X11-Basic actualmente no se encuentra en Puppy, pero tratándose de un sólo archivo ejecutable, pienso hacerlo disponible para descargar como un paquete extra. Su página web se encuentra en:

x11-basic.sourceforge.net

En esta web existe una versión de su Manual de Usuario en formato Adobe Acrobat PDF, el cual recomiendo imprimir.

Existen algunos ejemplos de programas en X11-Basic, en el directorio /usr/share/x11basic. Abra un terminal X en ese directorio, y escriba:

# xbasic menutest.bas

Los programas X11-basic también pueden ser escritos como “scripts”, escribiendo:

#!/usr/bin/xbasic

en la primera línea, igual que con los “scripts” escritos en Ash.

El intérprete X11-Basic es notablemente pequeño (menos de 200K bytes), pero tiene una librería muy completa, que incluye funciones gráficas. Este proyecto es el trabajo de Markus Hoffman. Markus también ha desarrollado un “pseudo compilador”, para crear aplicaciones independientes, y tiene una versión para MS Windows.

Una idea interesante es que X11-Basic puede llamar a otros programas, de modo que podemos usar Xdialog, xmessage y gtk-shell si un programa Basic requiere ventanas o cuadros de diálogo especializados.

(c) Copyright 2004, Barry Kauler