Livecode, una nueva forma de programar

¿Qué es Livecode?

Livecode es una interesantí­sima herramienta de programación que promete algo muy bueno: que lo hecho con ella funcione sin problemas en Windows, LINUX, Mac OSX, iOS y Android de forma nativa, algo parecido a lo que hace Java, Python o .Net pero de modo mucho más sencillo.

Obviamente no se puede utilizar Java, Python o .Net para programar para iPad o iPhone (a excepción de Xamarin con C# o Kivy con Python, pero son herramientas que están años luz de la sencillez de LiveCode.

LiveCode Logo

Además, estos otros lenguajes que menciono, no se portan muy bien a la hora de diseñar aplicaciones gráficas (con la excepción de .net en Windows) y Java (aunque todos sabemos lo «bonitas» que son las aplicaciones en Java  🙁   

Es decir, a pesar de que se pueden utilizar «atajos» para programar una aplicación gráfica para iOS o Android en lenguajes no soportados para la misma, es muy complicado que una misma aplicación funcione en Windows, Mac, Linux, Android e iOS sin apenas cambios y con un buen rendimiento.

Y sí, es verdad, LiveCode funciona en todas partes pero con matices que luego veremos.

Estructura interna de Livecode y su herramienta de desarrollo.

Hay que destacar que Livecode genera código nativo, es decir, no es como HTML 5 o un emulador, todo lo que Livecode genera es código compilado en C++ para cada plataforma.

Para ello se vale de un motor de programación desarrollado por Google (gyp, Generate Your Projects), que permite compilar de forma transparente el mismo código para muchas plataformas. Gyp genera ficheros xcodeproj Xcode para Mac, ficheros vcproj para Microsoft Visual Studio y ficheros make para Linux. Por lo tanto Livecode es un lenguaje de programación «Transpilado».

Así que un solo programa diseñado en Livecode funcionará en cuatro plataformas distintas y también en sistema UNIX si tenemos la capa de emulación de Linux instalada.

En recientes versiones de Livecode se está usando la llamada «LiveCode Builder virtual machine» para ciertas tareas complejas, una máquina virtual que permite ejecutar widgets y plugins escritos con el propio lenguaje de Livecode en vez de usar Java o C. No obstante se pueden seguir usando estos lenguajes para escribir Widgets y Plugins (no es exclusivo).

Otro punto importante de Livecode es que podemos «embeber» en el mismo un completo navegador web (Chromium) e interacturar con el mismo mediante LiveCode y JavaScript. Es decir, es posible llamar a funciones de LiveCode desde JavaScript y viceversa. Esto es ideal a la hora de que muchos programadores web se animen a usar LiveCode.

Livecode es probablemente el lenguaje de programación más sencillo del mundo (más que Python), y su herramienta de desarrollo (IDE) se puede aprender a usar en menos de quince minutos.

Livecode aparece en la lista TIOBE como uno de los 50 lenguajes de programación más usados del mundo y parece ser que poco a poco se está empezando a usar cada vez más.

Antes que nada, os voy a contar un poco la historia de esta herramienta y su funcionamiento.

Historia de LiveCode y Revolution (el lenguaje de programación de Livecode)

Livecode se inspira en un lenguaje de programación mucho más antiguo denominado HyperTalk creado en 1987 por un programador estadounidense llamado Dan Winkler el cual rápidamente fue integrado dentro de la herramienta de Apple llamada HyperCard desarrollada por Bill Atkinson. Hay que recordar que Bill Atkinson fue uno de los programadores más brillantes de Apple, a quien debemos cosas como la interface del Apple Lisa, la interface de las primeras versiones de MacOS Classic o el programa MacPaint.

HyperTalk

HyperTalk era (y es) un lenguaje de programación muy sencillo, prácticamente como hablar en inglés.

Apple distribuyó HyperCard en sus sistemas operativos desde 1987 hasta 2004, año en el cual Steve Jobs decidió dar por finalizado el producto y retirarlo del mercado. De hecho HyperCard nunca se portó demasiado bien en sistemas operativos de Apple que no fueran «Classic» (debido a que Apple no le daba soporte).

Si no tenías HyperCard en tu Mac se ofrecía la posibilidad de comprarlo por unos 50$ de la época.

¿Si era HyperCard un buen software, por qué lo retiró Apple?

HyperCard no solo era un buen software, era excelente.

Steve Wozniak, co-fundador de Apple llegó a decir que «HyperCard era el mejor software jamás escrito» («I still believe that HyperCard is the best program ever written»).

A finales de los años ochenta existí­an cientos de empresas trabajando con HyperCard. Incluso la todopoderosa Oracle ofrecí­a un software basado en HyperCard para conectarse a bases de datos Oracle Media Objects que luego derivó en Oracle Forms. Activision usó Hypercard en muchos de sus productos, Renault gestionaba todo su inventario con HyperCard y como nota curiosa, HyperCard también fue usado en Quebec para controlar el robot que insertaba y retiraba las cintas de disco del National Film Board de Canadá, llamado «CinéRobothèque». El juego de ordenador Myst fue hecho con HyperCard.

Hubo fabricantes que crearon un montón de «plugins» para HyperCard: primitivos sistemas de acceso a Internet, controladores de los puertos hardware del Mac para manipular dispositivos electrónicos, sistemas de animación y multimedia, programas de gestión, bases de datos, enciclopedias electrónicas, etc.

HyperCard era así mismo una de las herramientas preferidas por los docentes de Estados Unidos para enseñar programación a los niños.

El propio creador de la web Tim Berners-Lee aseguró más de una vez que él mismo copió el concepto de «link» directamente de HyperCard.

Años más tarde Bill Atkinson diría que su gran error fue no darse cuenta del potencial del concepto de hipervínculo. Decía que si hubiera trabajado en una empresa más orientada al mundo de la red (como Sun Microsystems) en vez de a una empresa orientada al ordenador personal (Apple), la WWW se habría inventado mucho antes y con HyperCard.

Actualmente, lenguajes de programación como Apple Script, JavaScript o el ActionScript de Flash están basados o inspirados en en HyperCard. Un ejemplo es la intrucción «Onmouseover» de JavaScript

Entonces, ¿por qué Steve Jobs decidió eliminar este excelente producto de golpe y porrazo?

Bueno, Apple jamás dijo nada sobre el motivo y Jobs se lo llevó a la tumba. No obstante existen distintas teorí­as:

  1. Macromedia forzó a Apple a eliminarlo debido a que hacía la competencia a Flash y amenazó a Apple con eliminar el soporte para Flash en los Macs (Jobs se «vengaría» años más tarde eliminando el soporte para Flash en los nuevos iPhones y iPads). Recordemos que a principios del milenio Apple tenía dificultades y estando cerca de la quiebra tampoco contaba con mucho poder de decisión.
  2. HyperCard competía con FileMaker, también de Apple y parecido en la forma de programarse, y como HyperCard siempre se había distribuido gratis en los Mac, Jobs decidió eliminarlo (la teoría mas plausible).
  3. Jobs, con el estreno de Mac OSX querí­a «profesionalizar» el diseño de aplicaciones obligando a los programadores a utilizar la tienda de Apple y la plataforma Xcode. Hypertalk venía de serie en todos los Macs e incluso existían versiones clónicas para UNIX (MetaCard), por lo tanto Apple quería hacer «pasar por caja» a todo el mundo. Recordemos que Steve Jobs dijo a bombo y platillo que el futuro de la programación eran las aplicaciones hechas en HTML5 pero luego él mismo dio marcha atrás y alumbró la Apple Store al comprobar que era un muy buen negocio.
  4. HyperCard era hijo de otro tiempo, de una época en la que muchos propietarios de un ordenador Apple también sabían programarlo, repararlo o ampliarlo. Una época en la que la línea que separaba a un aficionado de un profesional prácticamente no existía. Con la segunda llegada de Steve Jobs a Apple, él mismo quiso dejar de vender herramientas poco rentables para centrarse en lo que daba dinero. Por lo tanto, los Macs dejaron de estar orientados a un público versado en informática, hackers y expertos en electrónica y se empezaron a vender como herramientas bonitas, funcionales y rentables.

Esta y otras razones más «románticas» se explican en Why Hypercard Had to Die? (¿Por qué HyperCard tení­a que morir?) y se habla de lo que era HyperCard en HyperCard Forgotten, but Not Gone

El lenguaje

LiveCode está inspirado completamente en el lenguaje HyperTalk (versión MetaCard). De hecho, la empresa propietaria de LiveCode compró MetaCard y LiveCode no es más que una mejora de esta versión de HyperTalk. La primera versión del lenguaje surgió en el año 2001. En aquella época se llamó «Revolution».

MetaCard
MetaCard

Revolution fue cambiado de nombre a «LiveCode» en 2010.

La empresa que creó y desarrolla actualmente este lenguaje es Runtime Revolution Ltd, empresa escocesa con sede en Edimburgo.

Livecode ganó el premio de la revista Macworld (Macworld Annual Editor’s Choice Award) por «mejor desarrollo de software del año 2004».

A partir del año 2013 existen distintas versiones de Livecode: varias de pago que cuestan entre 50€ y 1.500€ (dependiendo de sus características) y una versión libre completamente pública, la cual es gratis pero que pone como condición que si se comercializa un programa será obligatorio publicar el código de forma pública (Licencia GPL).

Las diferentes versiones existentes son la Community Edition, Community Plus Edition, Indy Edition, Business Edition y Community Server.

Se puede bajar LiveCode desde su página oficial. Hay versiones de la herramienta de desarrollo para Windows, Linux y Mac y una versión para ser ejecutada desde un servidor web como si fuera PHP o para ser utilizado como lenguaje de Scripting como si fuera Python).

¿Cómo es LiveCode?

LiveCode es un lenguaje muy sencillo, casi como hablar en inglés:

put url «binfile:picture.jpg» into url ftp://john:[email protected]:2121/picture.jpg

LiveCode ejecutándose en un Mac
LiveCode ejecutándose en un Mac

El anterior ejemplo coge la imagen «Picture.jpg» y la envía al servidor «ftp.example.net» mediante FTP con el usuario «John», la clave «passwd» y el puerto «2121».

Mediante el siguiente ejemplo escribiremos el tí­pico «Hola mundo» en una ventana emergente:

answer «Hello World!»

Livecode tiene aproximadamente 1900 (un poco más) sentencias de programación que se pueden extender mediante plugins o programándolas directamente en lenguaje «C».

La filosofía de la herramienta de desarrollo se basa en una «baraja de cartas» denominada Main Stack o «baraja principal» de la cual cuelgan Cards o «Cartas».

Voy a explicar este concepto un poco más.

Cuando arrancamos la herramienta de desarrollo, tenemos que crear un nuevo proyecto. Este nuevo proyecto contendrá un «Main Stack» que será como la página principal.

De esta página» colgaran la siguientes pantallas que iremos creando para nuestro programa. Cada una de estas pantallas se llamará «Card» y tendrá un número único y exclusivo.

También es posible dividir un programa muy complejo en varias «Stacks» o Substacks. Cada una de estas «SubStackss» conel número de «cards» que queramos.

También es posible crear barajas, cartas y objetos en tiempo real mediante programación.

Ejemplos

Si quiero crear un pequeño software que se conecte a Internet y me diga que tiempo hace en la calle, tendré que hacer lo siguiente:

Primero: Crear un Main Stack

Segundo: Crear una nueva carta donde (por ejemplo) se nos invite a introducir la ciudad cuyo tiempo queremos consultar.

Tercero: Crearemos una tercera carta donde aparecerá el resultado de nuestra consulta.

Dentro de estar tercera carta y de forma oculta meteremos el código para consultar en internet el tiempo que hace en esa ciudad y mostrarlo.

La herramienta es muy parecida al viejo Visual Basic, ya que podemos arrastrar a las diferentes cartas, botones, etiquetas, cuadros de texto, etc. Y programar cada objeto para que haga cualquier cosa.

Es decir, técnicamente LiveCode es un lenguaje de programación orientado a «eventos del ratón» (igual que visual Basic) aunque también existe la posibilidad de usar programación orientada a objetos (OOP).

LiveCode entorno de programación
LiveCode entorno de programación

Una cosa que me encanta de Livecode es la facilidad para manejar puertos USB y puertos serie y por ejemplo poder controlar un Arduino de forma muy cómoda.

Un ejemplo:

/* Mandar el carácter  «H» por el puerto USB / Serie a un Arduino */

set the serialControlString to BAUD=9600, PARITY=N, DATA=8, STOP=1 — configuramos el puerto
open driver /dev/ttyACM0for binary update — Abrimos el puerto
write numToChar(0x48) to driver /dev/ttyACM0 — Mandamos el carácter «H» en hexadecimal al arduino conectado al puerto /dev/ttyACM0 en Linux

Si trabajas con Windows solo habrá que cambiar el puerto /dev/ttyACM0 por el que tengamos en Windows (COM1, COM2, etc.)

Problemas

Hasta aquí todo parece muy bonito, pero existen problemas molestos:

1) Falta de documentación. Al ser un lenguaje poco extendido apenas hay documentación del mismo, sobre todo el castellano (solo existen un puñado de libros sobre Livecode).

2) No existe todavía una comunidad de usuarios amplia en Internet.

3) A veces es un dolor de cabeza configurar el entorno para que funcione correctamente con Android. Aunque esto se ha resuelto con la versión 7.0 y posteriores.

4) A veces es necesario adquirir plugins de pago para trabajar cómodamente con el entorno de desarrollo (sobre todo si desarrollas para Android e iOS) o adquirir las versiones de pago de la propia herramienta. Aunque esto cada vez es menos necesario desde la versión 8.0.

5) Hay comandos que solo funcionan bien en algunas plataformas y en otras no.

6) Hay cosas que todavía no se pueden hacer, por ejemplo algunas funciones avanzadas en iOS no están soportadas aún.

7) Al ser desarrollado por una empresa pequeña, todavía no se sabe muy bien qué futuro tendrá. No obstante, todo el código fuente de la versión gratuita es público, así en el caso de que la empresa quiebre, otra empresa podrá recoger el testigo: https://github.com/livecode/livecode

8) Todo el entorno de desarrollo y la documentación están en Inglés.

9) El entorno de desarrollo es un poco inestable: a veces se cuelga, a veces va lento o hace cosas un poco «raras». No obstante esto no es algo que impida trabajar con fluidez.

Por lo demás, os diré que las ventajas superan a los inconvenientes y en nuestra empresa https://www.networkdreams.net/ hemos decidido apostar fuerte por este lenguaje.

¿Os animáis a aprender LiveCode?

Tutoriales: http://lessons.runrev.com (solo en Inglés)

Foros: http://forums.livecode.com (solo en Inglés)

Pequeña presentación y t utorial de LiveCode en Español. Ojo, esta presentación es antigua.Ahora mismo Livecode ya va por la versión 9.6.

Livecode se rediseñó completamente desde la versión 8.0 y se añadió  la posibilidad de crear «widgets» personalizados desde la versión 8.0.

15 Comentarios

Añadir un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Privacidad y cookies

Utilizamos cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mismas Enlace a polí­tica de cookies y política de privacidad y aviso legal.

Pulse el botón ACEPTAR para confirmar que ha leído y aceptado la información presentada


ACEPTAR
Aviso de cookies