Llegamos a ustedes gracias a:



Reportajes y análisis

Programe el mundo

12 tecnologías que debería conocer

Lenguajes de programación, IoT

[04/03/2016] Todas y cada una de las startups hablan sobre cambiar el mundo, pero la mayoría no están hablando del mundo en sí mismo, ni de las cosas físicas en él. La mayoría, simplemente, quiere intercambiar paquetes de datos y colocar entradas en las bases de datos -importantes paquetes potenciales de bits, pero, no obstante, paquetes de bits. El mundo, sin embargo, está hecho de átomos.

La barrera entre los bits y los átomos está desapareciendo, con programadores que ya no se limitan a la esfera virtual, en parte gracias a que la Internet de las Cosas se está volviendo más real. Ahora podemos hacer más que simplemente escribir unos y ceros en un disco, podemos escribir códigos que le diga a la máquina cómo extrudir, cortar, doblar o transformar átomos. Actualmente, nuestro software puede prender luces, cambiar el aspecto de un cuarto, conducir un carro, mover una pared o más.

Hoy en día, muchos de los nuevos mercados y oportunidades para los desarrolladores existen en el mundo real. Los campos de rápido desarrollo como los carros autónomos, casas inteligentes, espacios de oficina inteligentes y la personalización en masa, requieren que los programadores sean expertos acerca de cómo los cambios en la estructura de los datos pueden conducir a cambios en los objetos. Si no tomaron todavía el término "programación orientada al objeto, sería perfecto.

Estos trabajos requieren nuevos lenguajes o, si no son oficialmente nuevos lenguajes, nuevos protocolos que trabajen con los antiguos. Cambiar el mundo significa aprender cómo es que estos lenguajes y protocolos funcionan y cómo implementarlos. Si está buscando, realmente, cambiar el mundo, aquí hay una lista parcial de los lenguajes y protocolos que debe dominar. Una vez que comience a lanzar al aire bits que cambien el mundo, es difícil volver a las meras bases de datos.

Basic

Uno de los lenguajes clásicos que impulsó la revolución del micro ordenador vive en la mente de algunos controladores de hardware simples. Los que hicieron la placa controladora ESP8266 usan ese lenguaje porque, como dicen, es "uno simple pero poderoso que le permite hacer cosas increíbles sin la necesidad de un título en ciencias de la computación.

Toda la estructura clásica está ahí, incluyendo ese antiguo cuco: goto. Sin embargo, también hay nuevos comandos para busca páginas Web o enviar correos electrónicos. Invertirá la mayor parte de su tiempo sondeando en la interfaz para, así, reunir datos que se transmitirán a Internet.

Para más información, vea la comunidad ESP8266 o la página web dedicada al lenguaje.

X10

X10 es la herramienta original que permitía a los programadores salir de su mundo virtual y tocar el real. Nunca ha sido un protocolo complicado o muy elaborado, quizá porque se remonta al año 1975, uno antes de que Steve Wozniak y Steve Jobs lanzaran la Apple I. A pesar de su edad, sigue siendo popular, ya que muchos dispositivos de bajo costo lo soportan.

El protocolo tiene solo unos pocos mensajes importantes. Puede enviar pocos bits a los interruptores y pedirles que se prendan, que se apaguen, que brillen un poco más o que se pongan más tenues. Eso es todo. Hay más opciones para hacer polling a interruptores remotos e integrar un poco más de datos; sin embargo, la mayor parte del trabajo parece consistir en prender y apagar cosas. Estos paquetes viajan a través de líneas de alta tensión de 120V de una casa, y deben ser creados por un dispositivo independiente tal como el FireCracker hecho por X10.

Una serie de proyectos de software, tales como Flipit y Bottle Rocket simplifican el proceso de trabajar con el FireCracker. O bien, puede trabajar con el maestro original, X10, la empresa que proclama haber estado dándole órdenes a los aparatos domésticos desde 1978.

Insteon

En el 2005, la compañía Insteon lanzó un protocolo destinado a reemplazar el X10, ofreciendo mensajes más grandes y una mejor transmisión. Muchos reportaron que las señales del X10 se perdían, la mayoría de las veces, en casas grandes o en aquellas con un cableado más complejo. Otros se quejaron de que las señales eran afectadas por el sonido. Por esto, Insteon agregó un mecanismo donde cada nodo o interruptor también actúa como un repetidor, que asegura que las señales viajarán más lejos y llegarán más profundamente a las esquinas del cableado eléctrico. Es un truco muy inteligente que esparce las señales por todas partes.

El protocolo también es mucho más rico, complejo y redundante. En vez de tener solamente dos bits de comandos, los paquetes Insteon se extienden hasta los 10 bytes con dos enteros destinados a los comandos. Si se siente como un gran derrochador del ancho de banda, puede mezclar otros 14 bytes adicionales de datos en los paquetes que van a sus dispositivos. Los principales comandos están, todavía, enfocados en prender y apagar cosas, pero hay algunas opciones para hacer polling de sensoresy crear un termostato inteligente.

El protocolo de Insteon es utilizado por un gran número de centros inteligentes o herramientas de automatización del hogar, tales como Echo de Amazon o Harmony de Logitech. Muchas herramientas de código abierto como el proyecto Linux Home Automation y OpenRemote se integrarán con los controladores de la línea de alimentación usada para enviar los paquetes.

Zigbee, Z-Wave y más

X10 e Insteon solo se quedan en la superficie. Hay muchos más métodos para el envío de señales a dispositivos, algunas veces a través de líneas de energía; y otras veces, de forma inalámbrica. Ambos Zigbee y Z-Wave son estándares inalámbricos, de baja potencia para la comunicación entre dispositivos, especialmente del tipo de sensores y procesadores de baja potencia y embebidos que pueden ser difundidos en un negocio o una casa.

Zigbee, por ejemplo, recientemente anunció que los supermercados están experimentando con sensores de temperatura para monitorear las secciones de producción, con la esperanza de asegurarse que las frutas y verduras no se malogren. Una sección de la página web de Z-Wave describe los dispositivos entregando "dignidad en la casa a través de un botón inalámbrico que hace posible que las persones mayores y más débiles pidan ayuda si es que se caen. Hay cientos de aplicaciones como ésta, que necesitan enviar solamente unos pocos bits de datos a la vez.

Zigbee y Z-Wave no son los únicos ejemplos. La creciente lista incluye Panstamp, AMX, KNX, Lutron y más. Algunos nichos de destino; AMX, por ejemplo, se enfoca en los dispositivos audiovisuales que mejoran las salas de conferencias; y Panstamp, por otro lado, se dirige a los pequeños controladores inalámbricos que están profundamente embebidos en el mundo. Todos usan su propio formato, pero podrían interactuar con un poco de programación extra. La abundancia de normas similares puede ser confusa para los programadores; sin embargo, es mejor que no tenerlas.

XBMC, Freebox y más

Es un poco exagerado decir que alguien sentado en un sofá mirando la idiota caja está cambiando el mundo, pero no hay duda de que los videos, audios e imágenes digitales están saliendo de sus roles tradicionales como entretenimiento. Un gran número de protocolos y marcos de trabajo tales como XMBC, Freebox y VLC fueron diseñados tradicionalmente para darle en bandeja los videos a un adicto de la televisión; sin embargo, tienen usos en toda la casa o edificio.

Puede parecer que estos dispositivos audiovisuales no están haciendo mucho para cambiar el mundo, porque, en gran medida, están haciendo malabares con los archivos digitales; pero se están volviendo cada vez más concretos y reales a medida que cubrimos el mundo con monitores de pantalla plana. Los edificios en Times Square, por ejemplo, cambian su apariencia basándose en las imágenes que son proyectadas en las pantallas. Una mayor cantidad de pantallas significa que el contenido digital no es solo algo para mirar en su teléfono, sino que es una manera de volver a pintar un edificio o rediseñar un cuarto.

PostScript

Mucha gente no entiende la complejidad de la estructura de datos usada para almacenar datos en archivos PDF, o mandar una página de texto a la impresora. Los datos dentro de un archivo PostScript no es simplemente una lista de letras, sino un programa para mover un lapicero alrededor de la página y dibujar letras, líneas, números y formas. El lenguaje tiene el instinto de mover el lapicero a lo largo de líneas rectas o curvas de Bézier, y luego rellenar las formas. Las fuentes no son solamente bitmaps, sino complejas colecciones de curvas que son fáciles de posicionar y escalar con la precisión subpíxel.

El lenguaje en sí mismo es un artefacto de la era de los 70, con una sintaxis stack-based que reduce los paréntesis. Cualquiera que aprendió a usar una calculadora HP se sentirá como en casa. El lenguaje es Turing completo y la gente ha escrito códigos PostScript para calcular fractales complejos y otras cosas raras -ah, y los virus.

Hoy en día, el lenguaje, a menudo, queda relegado a un segundo plano y se vuelve menos importante que el SVG, ya que esta variante XML es ampliamente apoyada en la Web. Sin embargo, la estructura detrás es similar y la conversión es sencilla. Ambos lenguajes pueden ser transformados a códigos usados para conducir cortadoras láser y fresadoras a través de una variedad de paquetes como el PSToEdit.

OBD-II

Han pasado años desde que un carro era simplemente un tanque de gas, algunos pistones y un cigüeñal con engranajes para redirigir la fuerza de las explosiones a las llantas traseras. Los carros de hoy son redes complejas de múltiples computadoras que tienen cuatro ruedas. El OBD-II estándar es la manera en la que los simples mortales pueden interactuar con el carro y descubrir qué es lo que está pasando.

Gran parte de los códigos que viajan entre la computadora y el carro son meramente informativos. Usted puede, por ejemplo, enviar unos pocos bytes al puerto que se encuentra debajo del volante y le mandará la velocidad actual. Hay códigos similares para RPMs, para la eficiencia del motor y docenas de otros números. Muchas de las aplicaciones básicas, tales como Torque, sondearán el puerto OBD-II para monitorear su coche.

Las aplicaciones son muy populares entre corredores aficionados y mecánicos, pero pueden ser útiles para otros. La biblioteca ArduinoOBD es una de las varias buenas opciones para conectar su computadora a su carro.

G

El Computer Numerical Control, también conocido como CNC, de las máquinas de fresado, se inició en la década de 1950 y los ingenieros desarrollaron rápidamente G, un lenguaje para especificar cómo es que las herramientas de corte deben moverse. Al principio, el proceso es un poco contradictorio, ya que el código controla lo que es retirado de un sólido, en vez de lo que es añadido. Sin embargo, una vez que invierte su manera de pensar sobre el resultado final podrá comenzar a imaginarse cómo mover una brocaafilada y giratoria que cortará todo lo que usted quiera.

Gran parte de la codificación involucra elegir su sistema de coordenadas y la preparación de la broca de cortepara que se desplace a lugares particulares. Las máquinas, a menudo, "interpolan y calculan los puntos medios a lo largo de una línea recta o un circulo, produciendo, así, formas más simples relativamente fáciles de crear. Las formas complejas requieren un poco más de planificación.

La naturaleza de G ha cambiado notablemente a través de los años, ya que los fabricantes añadían sus propias mejoras locales. Ahora, muchos usan macros y capas orientadas a objetos más modernas que son compiladas en un código raw G y enviado a las máquinas.

Hoy en día, una variante de G impulsa muchas impresoras 3D. Los códigos no son exactamente los mismos, pero el núcleo del lenguaje lo es.

STL

El formato estándar para describir objetos en 3D es la lengua franca para el mundo de impresión en 3D. Las tiendas virtuales venden objetos virtuales mediante la entrega de archivos STL que puede, ya sea, editar o mandar directamente a la impresora 3D.

El lenguaje en sí es bastante básico. La mayor parte del archivo está compuesto por coordenadas tridimensionales para las esquinas de los triángulos que forman las facetas que cubren la superficie de un objeto. A pesar de que el formato parece soportar polígonos más complejos, los archivos, tradicionalmente, contienen triángulos. El formato del archivo en sí mismo no requiere que los triángulos cubran completamente un sólido o definan cada parte de la superficie, aunque ese es un requisito para la construcción de una pieza en 3D.

Los archivos STL pueden contener, ya sea, una representación ASCII de los puntos o una versión binaria, pero la mayoría parece intercambiar las versiones binarias porque son más compactas.

Slicer

Los archivos STL no contienen suficiente información como para manejar una impresora 3D, por lo que los triángulos deben ser convertidos en una lista de instrucciones para mover el cabezal de la impresora 3D y, prender y apagar el dispositivo que extrude. Las impresoras, generalmente, usan el GCode, también conocido como Slicer, el cual es similar a GCode con el que se alimenta a las máquinas fresadoras CNC. La mayor diferencia es que el código es aditivo y construye la parte desde cero, mientras que las máquinas CNC son sustractivas y tallan la parte desde un bloque sólido utilizado como punto de partida. Muchas de las instrucciones para posicionar el cabezal de la impresora son las mismas, pero hay unas nuevas para prender el dispositivo que extrude.

Existen una serie de programas Slicer, tanto de código abierto como patentado. Algunos incluyen IDEs sofisticados para editar el objeto antes de imprimirlo. El KISSlicer, por ejemplo, viene en una versión gratuita que funciona con impresoras de un solo cabezal,y una versión profesional que soporta impresoras más sofisticadas con múltiples cabezales.

Python

El lenguaje es uno de los favoritos en los laboratorios de biología, en las ciencias sociales y en toda la comunidad Raspberry Pi, donde es el "lenguaje oficial. Esto significa alabarlo un poco, ya que las placas de Raspberry Pi generalmente inicializan directamente a Linux y la mayor parte de la base de código de Linux puede funcionar en las placas, pero solo si se compila directamente a la arquitectura ARM (v6 o 7).

Aun así, Python sigue siendo un favorito sin razón alguna. Ofrece un lenguaje de alto nivel con una sintaxis clara y reglas bastante indulgentes para pasar datos. Los programadores no necesitan perderse en profundas abstracciones tales como los closures, o memorizar reglas complejas sobre los cursores. Simplemente tienen que escribir un conjunto de instrucciones para procesar números y usar estos valores para decirle al Raspberry Pi qué hacer.

La comunidad Raspberry Pi ofrece una amplia documentación para aprender a utilizar Python desde cero.

Processing

El mundo de la robótica y de las cosas reales está lleno de placas Arduino que hablan el lenguaje Arduino, un subconjunto de C y C++. Muchos programadores, sin embargo, quieren algo un poco más simple. Esta puede ser la razón por la cual un lenguaje llamado Processing ha alcanzado gran popularidad. Es un subconjunto simplificado de Java que deja fuera muchos de los detalles nudosos de clases, y añade un gran número de métodos estándar que ayudan a dibujar los resultados y voltear los interruptores. Los programadores de Java podrían encontrar fascinante ver cómo Processing ha sido construido sobre el antiguo AWT Applet and Frame, pero el resto del mundo simplemente querrá escribir algunos bucles y cambiar el código.

El código de procesamiento normalmente se ejecuta en la computadora central, que envía instrucciones al Arduino, el cual hace funcionar un intérprete local tal como Firmata. El desarrollo ocurre en la computadora central, pero el trabajo se hace en el Arduino.

Processing también ha encontrado un hogar en el desarrollo de las aplicaciones móviles y como la base/fundamento para aplicaciones Web gracias a la versión de Processing escrita en JavaScript. Khan Academy lo usa para enseñar programación informática.

Peter Wayner, InfoWorld (EE.UU.)