# App Inventor

App Inventor es un entorno de desarrollo de software actualmente mantenido por el Instituto de Tecnología de Massachusetts (MIT) y originalmente creado por el ahora difunto Google Labs para la elaboración de aplicaciones destinadas al sistema operativo Android. El usuario puede, de forma visual y a partir de un conjunto de herramientas básicas, ir enlazando una serie de bloques para crear la aplicación. El sistema es gratuito y se puede descargar fácilmente de la web. Las aplicaciones creadas con MIT App Inventor están limitadas por su simplicidad, aunque permiten cubrir un gran número de necesidades básicas en un dispositivo móvil. Los proyectos generados a través de esta herramienta se almacenan automáticamente en los servidores de App Inventor, permitiendo llevar en todo momento un seguimiento y control del trabajo.
App Inventor combina un acercamiento accesible (en términos de dificultad) a la programación con la capacidad de crear aplicaciones que tengan un impacto real. A este tipo de entornos se lo llama "de pisos bajos y techos altos". Para ello, libera a los usuarios de tener que memorizar la sintaxis y otras características del lenguaje, permitiendo que las personas se concentren en el cómo solucionar el problema más que en cómo escribir el programa.
App Inventor y los otros proyectos se basan en las teorías de aprendizaje construccionistas ya que enfatizan que la programación puede ser un vehículo para involucrar ideas poderosas a través del aprendizaje activo. Como tal, es parte de un movimiento continuo en las computadoras y la educación que comenzó con el trabajo de Seymour Papert y MIT Logo Group en la década de 1960, y también se manifestó con el trabajo de Mitchel Resnick en Lego Mindstorms y StarLogo.

## Historia

La aplicación estuvo disponible a través de una solicitud el 12 de julio de 2010 y se hizo pública el 15 de diciembre de 2010. El equipo de App Inventor estuvo dirigido por Hal Abelson y Mark Friedman. En la segunda mitad de 2011, Google lanzó el código fuente, canceló su servidor y proporcionó fondos para crear el Centro de aprendizaje móvil del MIT, dirigido por el creador de App Inventor, Hal Abelson, y los profesores del MIT Eric Klopfer y Mitchel Resnick. La versión MIT se lanzó en marzo de 2012.
El 6 de diciembre de 2013 (el comienzo de la Hora del Código), el MIT lanzó App Inventor 2 y cambió el nombre de la versión original a "App Inventor Classic". Las principales diferencias son:
* El editor de bloques en la versión original se ejecutaba en un proceso Java separado, utilizando la biblioteca Open Blocks Java para crear lenguajes de programación y programación de bloques visuales.
Open Blocks es distribuido por el Scheller Teacher Education Program (STEP) del MIT y se deriva de la investigación de tesis de maestría de Ricarose Roque. El profesor Eric Klopfer y Daniel Wendel del Programa Scheller apoyaron la distribución de Open Blocks bajo una licencia MIT. La programación visual de Open Blocks está estrechamente relacionada con StarLogo TNG, un proyecto de STEP, y Scratch, un proyecto del Lifelong Kindergarten Group del MIT Media Lab dirigido por Mitchel Resnick. App Inventor 2 reemplazó Open Blocks con Blockly, un editor de bloques que se ejecuta dentro de un navegador web.
La aplicación MIT AI2 Companion permite la depuración en tiempo real en dispositivos conectados a través de Wi-Fi o Universal Serial Bus (USB). Además de esto, el usuario puede usar un emulador "en la computadora" disponible para Windows, MacOS y Linux.

## Características y funciones

Inicialmente desarrollado por el profesor Hal Abelson y un equipo de Google Educación, mientras que Hal pasaba un año sabático en Google, App Inventor se ejecuta como un servicio web administrado por personal del Centro del MIT para el aprendizaje móvil –una colaboración de MIT de Ciencia Computacional e Inteligencia Artificial de laboratorio (CSAIL) y el Laboratorio de Medios del MIT–. El App Inventor contaba en 2015 con una comunidad mundial de casi dos millones de usuarios, que representaban a 195 países en todo el mundo. Más de 85 mil usuarios semanales activos de la herramienta han construido más de 4,7 millones de aplicaciones de Android. Una herramienta de código abierto que pretende realizar la programación y la creación de aplicaciones accesibles a una amplia gama de audiencias.
* Actualmente basada en Blockly de JavaScript para crear un lenguaje visual. Estas librerías están distribuidas por el Instituto de Tecnología de Massachusetts bajo su licencia libre. El compilador que traduce el lenguaje visual de los bloques para la aplicación en Android, utiliza Kawa (un framework de lenguaje en Java que implementa el lenguaje de programación Scheme) como lenguaje de programación, distribuido como parte del sistema operativo GNU de la Free Software Foundation.
* Permite crear una aplicación en menos tiempo que otros y se pueden programar aplicaciones más complejas en mucho menos tiempo que con los lenguajes más tradicionales, basados en texto.
* La interfaz gráfica permite al usuario crear aplicaciones con muchas funcionalidades al alcance de unos cuantos clics, por lo tanto se abre una gran puerta para muchas personas que deseen crear aplicaciones sin necesidad de ser programador.

## Componentes

App Inventor tiene tres partes fundamentales:

### Diseñador

El diseñador es el lugar donde se seleccionan las componentes para la aplicación. Las componentes son los elementos básicos que se utilizan para hacer las aplicaciones en el teléfono Android. Hay componentes de diferentes tipos, algunas de ellas son: Label (muestra un texto en la pantalla), Button (muestra un botón en la pantalla q

### Editor de bloques

El editor de bloques es el lugar donde se crea la lógica del programa. Aquí programamos el comportamiento de nuestra aplicación, le diremos a las componentes lo que deben hacer y cuándo hacerlo. El editor de bloques se ejecuta en una ventana independiente del diseñador de componentes y está implementado como una aplicación de Java Web Start que se ejecuta en nuestro ordenador.

### Emulador

Un software que imita el funcionamiento de un dispositivo móvil Android real. Nos permite probar la aplicación que estamos desarrollando si no se dispone de un dispositivo Android.

## Casos de uso

App Inventor tiene un amplio abanico de posibilidades de uso.
* Para jugar: Crear aplicaciones para teléfonos es divertido, y App Inventor promueve la exploración y el descubrimiento. Con solo un navegador web y un teléfono se puede comenzar a construir con los bloques. Al tratarse de un dispositivo móvil, no sólo se programa sino que se interactúa con otras personas, con otros dispositivos (como robots) y con el entorno (debido a los sensores)
* Para crear prototipos: App Inventor es una buena forma de prototipar rápidamente ideas que de otra forma se perderían en un anotador o en una nota autoadhesiva. Un prototipo es una versión incompleta y sin refinar de la aplicación que se quiere crear, pero sirve para plasmar la idea y presentársela a otros.
* Para crear aplicaciones de uso personal: Se pueden crear aplicaciones personalizadas que solucionen problemas tan específicos para una persona que no se pueden encontrar en una sola aplicación de uso masivo.
* Desarrollar aplicaciones completas: App Inventor no sólo sirve para crear prototipos o diseñar interfaces gráficas, también se pueden crear aplicaciones completas de propósito general. El lenguaje provee todos los componentes fundamentales de la programación, en forma de bloques.
* Enseñar y aprender: App Inventor es una gran herramienta para enseñar y aprender en muchos niveles, desde la enseñanza media, hasta la universitaria. Es buena para informática, pero también permite enseñar matemáticas, física, conceptos empresariales, y muchas otras disciplinas. La clave es que se aprende creando en lugar de memorizar, aplicando los conocimientos necesarios.

## Comunidad de usuarios

App Inventor es usado por una variedad de usuarios que tienen distintos objetivos y motivaciones.
* Educadores y estudiantes: son la audiencia principal de App Inventor, ya que éste tiene su origen en un proyecto académico. Este proyecto tiene el mérito de lograr involucrar a los estudiantes en proyectos dentro y fuera de clase.
* Entusiastas: las personas que disfrutan creando y jugando con tecnología encuentran en App Inventor una forma de hacerlo con dispositivos móviles. Existe una gran comunidad de personas construyendo aplicaciones de interés personal o comunitario.
* Emprendedores: App Inventor puede verse como una forma de entrar fácilmente en el mercado de aplicaciones de Android sin necesidad de aprender a programar en Java. Este grupo crea aplicaciones de negocios, entretenimiento y utilitarias, que se publican en las tiendas de aplicaciones de Android, tanto por un precio como gratis.
* Colaboradores y desarrolladores: son personas que toman la tarea de contribuir código al proyecto de software libre o para construir material de apoyo para otros usuarios. Hacen esto como voluntarios porque creen en el poder de democratizar el acceso a la creación tecnológica.