Livecode. Una nueva forma de programar.

LiveCode Logo

¿Qué es Livecode?

Livecode es una interesantí­sima herramienta de programación relativamente reciente, la cual promete algo muy bueno:

Que un mismo programa hecho con esta herramienta funcione sin problemas en Windows, LINUX, MacOSX y  IOS y Android.

Algo parecido a lo que hace Java, Python o “.Net”, pero mucho más sencillo. Obviamente no se puede utilizar Java, Python o “.Net” para programar para Ipad e Iphone (a excepción de Xamarin con C# o Kivy con Python).

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 si, 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 un motor de programación desarrollado por Google ( gyp, Generate Your Projects), el cual 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, una solo programa diseñado en Livecode funcionará en cuatro plataformas distintas.

En recientes version es de Livecode se está usando para ciertas tareas la llamada LiveCode Builder virtual machine.
Esta máquina virtual permite ejecutar widgets y plugins para Livecode 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).

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 cien 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”. Este lenguaje fue 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. Al mismo le 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 extraordinariamente sencillo, prácticamente era como hablar en Inglés.

Apple distribuyó en sus sistemas  operativos el HyperCard desde 1987 hasta el año 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.

La pregunta del millón es:

¿Era HyperCard un buen software? ¿porqué lo retiró Apple?

HyperCard no solo era un buen software: Era un excelente software.

Steve Wozniak (el 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,».

http://www.macworld.com/article/1018126/woz.html

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 de Oracle: Oracle Media Objects (la cual, 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 el mismo  copió el concepto de «Link» directamente de HyperCard:  https://arstechnica.com/gadgets/2012/05/25-years-of-hypercard-the-missing-link-to-the-web/

Años más tarde Bill Atkinson diría que su gran error fue no darse cuenta del potencial del concepto de hipervínculo. El 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.

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 múltiples teorí­as como estas:

  1. Macromedia forzó a Apple a eliminarlo debido a que al principio del milenio le hací­a la competencia a Flash, y amenazó a Apple con eliminar el soporte para Flash en los Macs (luego Jobs se «vengó» eliminando años más tarde el soporte para Flash en los nuevos Iphones e Ipads). Recordemos que en aquella época (a principios del milenio) Apple no lo estaba pasando muy bien y la empresa estuvo a punto de quebrar, por lo que tampoco tenía mucho poder de decisión.
  2. HyperCard estaba haciendo la competencia a Filemaker (también de Apple y muy parecido), 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 MacOSX querí­a «profesionalizar» el diseño de aplicaciones para los Macs 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 para UNIX (como MetaCard), por lo tanto Apple quería hacer «pasar por caja» a todo el mundo.
  4. HyperCard era hijo de otro tiempo, era hijo de una época en la cual casi todos los propietarios de un ordenador Apple también sabían programarlo, repararlo y ampliarlo. Era un época en la que 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, el mismo quiso dejar de vender herramientas poco rentables y centrarse solo en lo que daba dinero.

Esta y otras razones mas «románticas» se explican aquí­ (en Inglés):

¿Por qué HyperCard tení­a que morir: Why Hypercard Had to Die?

http://web.archive.org/web/20150605191133/http://www.loper-os.org/?p=568

Y aquí se habla un poco de lo que era HyperzCard:

https://www.wired.com/2002/08/hypercard-forgotten-but-not-gone/

El lenguaje

LiveCode está inspirado completamente en el lenguaje HyperTalk (Versión MetaCard) y 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 el año 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 varias versiones de Livecode:

Varias versiones 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 la misma pone como condición que si se comercializa un programa, es obligatorio publicar el código de forma pública (Licencia GPL). La diferentes versiones existentes son la Community Edition, Community Plus Edition, Indy Edition, Business Edition y Community Server.

Se puede bajar LiveCode desde aquí­ (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):

https://downloads.livecode.com/livecode/

LiveCode ejecutándose en un Mac
LiveCode ejecutándose en un Mac
¿Cómo es LiveCode?

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

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

Este ejemplo anterior se coje la imagen “Picture.jpg” y se manda al servidor “ftp.example.net” mediante FTP (con el usuario John, clave “passwd” y puerto “2121”.

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

answer «Hello World!»

Livecode tiene aproximadamente 1900 (un poco más) sentencias de programación y las mismas se pueden extender mediante “plugins” o programándolas directamente en lenguaje “C”.

La filosofí­a de la herramienta de desarrollo se basa en un “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á algo así­ 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» tendrá el 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, los cuales os voy a listar:

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 (unos cinco).

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.

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

¿Os animáis a aprender LiveCode?

Recursos:

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

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

Pequeña presentación y tutorial de LiveCode en Español (el sonido tarda unos segundos en entrar)
¡Ojo! esta presentación es antigua y es anterior a la versión gratuita de la misma (LiveCode 6.0).

Ahora mismo Livecode ya va por la versión 9.3.

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 🙂

7 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