Comentaré algunas de las opciones que he considerado para programar la parte Android de proyectos con Arduino y HC-05. Son decisiones importantes.
Processing:
Me ha costado encontrar un artículo decente que describiera el lenguaje de programación Processing de una forma que permita evaluar todo su potencial, los puntos fuertes de su entorno de programación, su curva de aprendizaje, su idoneidad para combinarlo con Arduino o con Androis, etc. Y me ha parecido muy interesante.
http://users.dsic.upv.es/~jlinares/grafi..._spa_1.pdf
Yo no descarto seguir haciendo alguna cosa en App Inventor, para programitas pequeños está muy bien, pero para aplicaciones complejas me lo tendré que pensar dos veces.
App Inventor
Está basado en la librería Java Open Blocks del MIT pero no hay forma de obtener generacion de código Java.
Yo creo que está pensado como un juguete potente, pero juguete al fin y al cabo. Es tan fácil de usar que tiene bastante interés, pero conformarse con App Inventor es una limitación importante para un programador.
Incluso la documentación está redactada de forma poco precisa y poco exaustiva para no intimidar a los principiantes y te hace perder tiempo porque tienes que hacer pruebas para resolver las dudas que la documentación no aclaró.
Para mí los principales inconvenientes para grandes desarrollos es que apenas existen facilidades de reutilización de código y que al aumentar de tamaño el código tiende a hacerse más y mas feo. El requisito mínimo de cualquier programa es que haga lo que se pretende. Por desgracia, para hacer que un código voluminoso de App Inventor funcione tienes que esquivar limitaciones que afearan tu código considerablemente.
Tengo entendido que se está considerando un kit de desarrollo de componentes. Esto permitiría a toda la comunidad de programadores construir componentes App Inventor con Java y ampliar la funcionalidad de App Inventor. Eso ayudaría mucho y serviría en primer lugar a esquivar la necesidad de programar algunas cosas muy tontas pero muy necesarias que no están implementadas aún.
App Inventor incluye muchas funcionalidades realmente potentes, pero también faltan algunas funcionalidades extremadamente básicas. Por ejemplo para hacer una espera tienes que implementarla tú mismo mediate un bucle que consulte el tiempo transcurrido lo cual consume CPU.
Como está pensado para principiantes, hay temas que no se abordan; por ejemplo para comunicaciones BlueTooth sería interesante disponer de alguna función de comprobación Checksum, o disponer funciones que permitan programar dichas funciones de forma fácil, tales como operadores de bits (Bitwise operator). Ni siquiera existen funciones de conversión de datos, y eso impide averiguar cosas como el código ascii de un caracter. Por esa razón, hacer una función de checksum y muchas otras funciones que no son necesariamente complicadas, puede convertirse en un desafío que supondrá un coste importante en cantidad de código que además será muy feo.
Ni siquiera navegar visualmente por el código resulta fácil cuando el número de bloques aumenta. Los bloques van creciendo y te obligan a recolocar gran parte de otros bloques para mantener una vision agradable y clara de los mismos. No está pensado para poder estructurar el software en módulos así que todo el código a medida que crece tiende a convertirse en una sopa de bloques escasamente reutilizables.
No conviene abusar de las variables globales. Un número alto de variables globales podrían generar un problema para poder usarlas debido a las limitaciones del tamaño de la lista de variables para elegir entre ellas. No existe la posibitidad de definir constantes y consumen una variable global.
El tamaño final de las aplicaciines desarrollada (.apk) parece mayor de lo habitual.
Detectar los errores de sintaxis en el mismo momento que se producen ayuda bastante aunque no se detecta todo lo que puede dar problemas. En especial, el uso de un tipo de dato inadecuado para alguna operación suele dar el problema en tiempo de ejecución.
La programación visual es más agradable para el novato que lo ve como completar un rompecabezas de los tradicionales, pero los programas de texto tienen muchas ventajas a la hora de manejarse con un volumen de código importante y se hecha en falta cosas como poder buscar el uso de las variables en las distintas partes de código.
Lo ideal es que existiera una etapa de generación de código sobre la cual se pudiera trabajar con posterioridad.
App Inventor hace mucho con muy poco, pero en algunas cosas resulta poco flexible y hay que recurrir a trucos que se van aprendiendo mediante la lectura de ejemplos.
Como lenguaje para aprender programacion, su utilidad sería la de una primera toma de contacto, pero rápidamente aparecen los inconvenientes. Induce a los novatos a adquirir malos habitos de programacion que pueden derivar en vicios.
A pesar de que la curva de aprendizaje es rápida y suave, no facilta la labor de desarrollar aplicaciones con mucho codigo, ya que la dificultad de mantener depurar e incluso de leer el código aumenta exponencialmente con el tamaño del programa y por ello las aplicaciones escalan mal.
No facilita una buena estructuración de los programas. No facilita la programación en unidades reutilizables de código.
Pese a todo, puede resultar una alternativa a considerar frente a entornos de desarrollo como por ejemplo SDK, o Android Studio que implican no solo conocer bastante de programación, sino del propio entorno de programación de Android que es suficientemente complejo como para necesitar un periodo de tiempo considerable hasta abarcar las diferentes areas de conocimiento. En ese sentido, las limitaciones de App Inventor pueden ser un precio asumible cuando lo único que se pretende es hacer programas pequeños y no se conoce el entorno de programación Androidni otros lenguajes de programación.
La modificación del aspecto en el diseño de la pantalla de la aplicación funciona bastante bien y es muy sencilla. Basta cambiar las cosas de sitio, de forma, de color y de tamaño en la pantalla de diseño, además se van a seguir mejorando algunas cosas.
Livecode
Una tercera alternativa que he visto es un entorno de desarrollo visual interesante que se llama LiveCode, pero que es de pago y aún no parece muy maduro.
Genera código Java, parece muy completo y es multi plataforma.
http://www.hermanotemblon.com/livecode-u...programar/
Livecode es una herramienta de programación muy reciente, con un objetivo muy interesante. Su objetivo es que un mismo programa hecho con esta herramienta, incluso tratándose de programas que manejan gráficos, funcione sin problemas en Windows, LINUX, MacOSX, UNIX (Solaris y BSDs) IOS y Android.
Este es un objetivo aún no conseguido plenamente debido a su juventud y a que la empresa es pequeña. La comunidad de usuarios tambien es pequeña y falta documentacion.
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).
No lo he probado pero se puede bajar LiveCode desde aquí (Hay versiones de la herramienta de desarrollo para Windows, Linux y Mac):
http://livecode.com