# Blockly

Blockly es un cliente de librerías para el lenguaje de programación Javascript, para crear lenguajes de programación visuales y editores basados en bloques (VPLs). Es un proyecto de Google y es software libre y de código abierto liberado bajo la Licencia de Apache 2.0. Normalmente se ejecuta en un navegador de web, y visualmente se parece al lenguaje de Scratch. Blockly también está siendo implementado para los Sistemas Operativos de móviles, Androide e iOS, ya que no todas las características de los navegadores de web están disponibles para estos.
Blockly utiliza bloques visuales que enlazan entre ellos para que escribir el código sea más fácil , puede generar código en Javascript, Lua, Dart, Python, o PHP. También puede ser personalizado para generar código en cualquier lenguaje de programación de texto.

## Historia

El desarrollo de Blockly empezó en verano de 2011. La primera versión pública fue en mayo de 2012 en Maker Faire. Blockly fue originalmente diseñado como sustitución para OpenBlocks en App Inventor. Neil Fraser empezó el proyecto con Quynh Neutron, Ellen Spertus, y Mark Friedman, siendo estos sus colaboradores.

## Interfaz de usuario

La interfaz gráfica de usuario (GUI) por defecto del editor de Blockly consta de una barra de herramientas, la cual tiene los bloques disponibles, y donde un usuario puede seleccionar los bloques; y un Workspace, donde un usuario puede arrastrar y soltar y reorganizar los bloques. El Workspace también incluye, por defecto, iconos de zoom, y una papelera de reciclaje para eliminar bloques. El editor se puede modificar fácilmente para personalizar y limitar las características editables y los bloques.

## Personalización

Blockly Incluye un conjunto de bloques visuales para poder llevar a cabo operaciones comunes, y puede ser personalizado para añadir más bloques nuevos. Los bloques nuevos requieren una definición de bloque y un generador:
* La definición describe el aspecto del bloque (interfaz de usuario).
* El generador describe la traducción del bloque a código ejecutable.
Las definiciones y los generadores pueden escribirse en Javascript o utilizando un conjunto visual de bloques, el Block Factory, el cual deja bloques nuevos para ser descritos utilizando bloques visuales existentes; utilizando intent se pueden crear bloques nuevos de manera más fácil.

## Aplicaciones

Blockly se utiliza en varios proyectos notables, la mayoría con un objetivo académico, incluyendo:
* El App Inventor de MIT, para crear aplicaciones para Android.
* Juegos de Blockly, un conjunto de juegos educativos que enseña a programar conceptos básicos como bucles y condiciones.
* Code.org, para introducir a millones de estudiantes a la programación en su "Hora de Programar Código".
* RoboBlockly, un entorno robótico simulado basado en un buscador web para aprender a programar y mejorar en las matemáticas.
* Wonder Workshop, para controlar a sus robots educativos.
* KodeKLIX, para controlar ensamblar sus componentes electrónicos.
* PICAXE, para controlar sus microchips educativos.
* SAM Labs, en STEAM para desarrollo de soluciones educacionales al aprender código.

## Características

* Basado en web utilizando Gráficos Vectoriales Escalables (SVG), no Flash.
* Completamente creado el cliente con Javascript.
* Soporte de los mayores navegadores web, incluyendo: Chrome, Firefox, Safari, Opera, Internet Explorer (IE).
* Soporte móvil sobre Android e iOS.
* Soporte para muchos constructores de programación incluyendo variables, funciones y arrays.
* Fácil de extender con bloques personalizados. Uso de Block Factory para hacer bloques nuevos.
* Generación de código limpio.
* Ejecución del código paso a paso para poder limpiar y corregir el código más fácilmente, hacer debug.
* Traducido a más de 50 idiomas distintos
* Soporta tanto código que se lee de izquierda a derecha como el que se lee de derecha a izquierda.