Blog de música, tecnologías, poesía y cerveza fría

17/12/2017

Livecode. Una nueva forma de programar.

LiveCode Logo

Livecode es una interesantísima herramienta de programación relativamente reciente, la cual promete algo hasta ahora inédito:

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

Algo parecido a lo que hace Java, Python o “.Net”. Obviamente no se puede utilizar Java, Python o “.Net” para programar para Ipad e Iphone (a excepción de Xamarin y C#).

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  🙁    )

Y si, es verdad, ¡¡LiveCode funciona en todas partes!! (pero con matices que luego veremos).

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.

HyperTalk

HyperTalk

Por lo visto, Apple se interesó mucho en este lenguaje y lo compró para incorporarlo en un producto suyo denominado HyperCard.

HyperTalk era un lenguaje de programación extraordinariamente sencillo (prácticamente era como hablar en Inglés).

Apple comercializó 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).

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:

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

A finales de los años ochenta existían cientos de empresas trabajando en el ecosistema de 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).

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, etc.

Actualmente, lenguajes de programación como “Apple Script” están basados en HyperCard.

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).
  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.

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

Volviendo a LiveCode……

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 dos versiones de Livecode:

Una versión de pago que cuesta unos 500€ y una versión libre (completamente pública), la cual es gratis pero pone como condición que si se comercializa un programa con la misma, es obligatorio publicar el código de forma pública (Licencia GPL).

Se puede bajar LiveCode desde aquí (Hay versiones de la herramienta de desarrollo para Windows, Linux y Mac):

http://livecode.com/

 

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.

Por ejemplo:

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.

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).

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 trabajos 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 reciente apenas hay documentación del mismo (sobre todo el Castellano).

2)      Por este mismo motivo (ser un lenguaje joven) 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).

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á.

8)      La herramienta tiene algunos fallos o “bugs” molestos (sobre todo en Linux).

9)      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 http://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 8, la cual, ha añadido la posibilidad de crear “widgets” personalizados 🙂

10 thoughts on “Livecode. Una nueva forma de programar.

  • Pingback: GNU/Linux: Un amor platónico, un desengaño de verano y una novia estable. | HERMANO_TEMBLÓN

  • Alejandro Tejada

    Saludos Pablo,

    Encontré tu blog (y esta publicación en específico) mientras buscaba recursos en español acerca de LiveCode.

    ¿Tambien participas en la lista de correos y el foro? Yo empecé en esta plataforma usando HyperCard en Macintosh, luego comencé a usar Metacard y ahora estoy usando LiveCode.

    Por los temas y contenidos de tu blog, veo que eres un artista de corazón.

    LiveCode necesita que muchos artistas comiencen a emplear su plataforma para alcanzar la difusión y la proyección que merece.

    ¡Seguimos en contacto!

    Alejandro

    Reply
    • blueice Post author

      Hola Alejandro, buenos días:

      Los artículos de Livecode son míos (Heriberto Torrado). Comparto el blog con Pablo. 🙂

      Actualmente pablo y yo, tenemos una pequeña empresa de servicios informáticos (www.networkdreams.net) y, entre otras cosas, ofrecemos servicios de desarrollo de Apps y aplicaciones de escritorio en Livecode (en España y Estados Unidos).

      Estamos desarrollando actualmente una aplicación de Workflow para una empresa de impresión Off-Set y un pequeño “ERP” con vistas a ser comercializado en un futuro.
      De momento, este “ERP” lo estamos utilizando a nivel interno.

      Dichas aplicaciones funcionan en Windows, Mac, Linux, IOS y Android.

      Después de evaluar muchas plataformas para desarrollo “cruzado”, la única plataforma que se adaptaba a lo que necesitábamos era Livecode.

      Estamos muy contentos con Livecode, no obstante, vemos que la comunidad de usuarios es muy pequeña y nos gustaría que la misma creciera.

      De momento estamos participando en los foros en Inglés que la propia “RunRev” pone a disposición del público.

      Nos gustaría crear un pequeño foro en castellano en este blog para poder ampliar y difundir los conocimientos de Livecode en la comunidad hispano-hablate (ya que todo se mueve en Inglés).

      Un saludo y seguimos en contacto

      Reply
  • Buenaventura sanabria

    Hola, tengo poco conocimiento en programación y estoy probando livecode, pero no puedo probar mis aplicacipnes para android,e da error de lectura en el dispositivo físico y en el AVD me dice que no se puede porque aapk.exe dejo de funcionar me podría ayudar?

    Reply
    • blueice Post author

      ¿Has activado la depuración USB en el dispositivo Android? ¿que versión de Android utilizas? ¿tienes el JDK de Java instalado y el Android SDK? El fichero a instalar dentro del dispositivo Android ha de ser con extensión “apk” (no exe).

      Reply
  • dumbAwards

    espera. No se pueden subir apps .NET a la App Store? desde cuándo? que yo sepa con Xamarin se puede…y se programa con C# sobre .NET. Al igual que Unity, y mira que hay juegos hechos con Unity en la App Store

    Reply
  • Pingback: Como hacer APPs para IOS, Android, Windows, Linux y MacOS de forma sencilla y sin saber casi programación

  • David Zs

    hola, excelente post,
    me llamo David, y estoy aprendiendo en este lenguaje.
    Estoy trabajando en hacer una conexion a un servidor remoto de sql server desde la aplicacion, en este momento, funcionando con android.

    Tienes alguna recomendacion, que ya he topado con pared para avanzar!!!
    gracias

    Reply
    • blueice Post author

      Hola David, disculpa el retraso en contestarte, no he tenido tiempo:

      Para conectarte a SQL Server debes utilizar un código como este:

      put revOpenDatabase(“ODBC”,”DRIVER=SQL Server;SERVER=server_name;DATABASE=database_name;UID=username;PWD=password;Trusted_Connection=No”,,,) into connID

      Un ejemplo de un “Select” sería este:

      put “SELECT * from users ; ” into tSQL
      put revDataFromQuery(tab,return,connID,tSQL) into tRecords

      Reply

Deja un comentario

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

^ Subir Arriba!

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies