Lenguajes de programación en la era de Internet de las Cosas

Beatriz Sanz Baños  4 enero, 2017

Bajo cada máquina, cada interconexión, cada interfaz… existe un lenguaje de programación. El IoT conecta un sinfín de dispositivos entre sí, creando una compleja red. Pero existen miles y miles de lenguajes de programación, también. ¿Cuáles son los más presentes en el desarrollo de IoT? La elección de un lenguaje u otro determina el producto o servicio final, así como las posibilidades técnicas o la experiencia del usuario. En la era de Internet de las Cosas, escoger adecuadamente el lenguaje de programación es vital para el éxito del proyecto.

¿Por qué elegir uno u otro?

Uno de los puntos más críticos, a la hora de comprender el papel de los diferentes lenguajes de programación en el desarrollo, es entender qué razones nos llevan a escogerlos. De manera clásica, existen dos cuestiones fundamentales a la hora de escogerlos: el end user y el dispositivo con el que se trabaja. El primero marca la experiencia final que se quiere conseguir. El segundo acota las posibilidades técnicas con las que contamos.

Actualmente existen cientos de miles de dispositivos dentro de IoT. Pero, ¿qué consideramos un dispositivo conectado al Internet de las Cosas? Atendiendo a la definición de Ian Skerrett, Director de Marketing de la Fundación Eclipse, el entorno de la arquitectura en los dispositivos conectados al IoT se dividen en tres grandes tipos: los sensores que crean la información, los hubs o puertas locales que la organizan y los servidores, normalmente distantes, que la almacenan.

Esta definición también nos ayuda a entender el porqué de la necesidad de elección entre lenguajes de programación. No es lo mismo trabajar con el sensor, midiendo o generando datos, para lo que podría elegirse un lenguaje como C, capaz de trabajar directamente con la RAM, por ejemplo, que desarrollar cualquiera de los otros elementos de la cadena. En estos otros casos, podrías optar por lenguajes más orientados a la multiplataforma o, sencillamente, uno que te resulte más familiar que los otros.

Java, C y JavaScript, los reyes de la colina

Durante el pasado año, el Eclipse IoT Working Group realizó una interesante encuesta en la que participaron 592 desarrolladores dentro del mundo de IoT. La intención del cuestionario, entre otras cosas, era sondear la opinión de los desarrolladores en cuanto al uso de lenguajes dentro de sus proyectos. Los datos presentados por Eclipse señalan a Java, C y JavaScript como los más escogidos y valorados, con una diferencia notable en comparación con el resto. Aunque Python y C++ también se encuentran en una buena posición, la ventaja de los otros tres sigue marcando una importante diferencia.

Estos tres son los lenguajes preferidos de manera general para el desarrollo de casi cualquier proyecto, donde suelen aparecer de manera recurrente por su versatilidad, su disponibilidad entre plataformas o su eficiencia. No obstante, cuando le preguntamos a diversos expertos del sector, otros lenguajes como SWIFT, Ruby, Lua o, incluso, el lenguaje ensamblador, aparecen sobre la mesa. Esto coincide con la encuesta de Eclipse, donde estos otros lenguajes también son elegidos entre los miles que existen.

No obstante, la elección de Java parece llevar algo de controversia asociada. Más allá del documento elaborado por Eclipse, muchos expertos suelen optar por C como lenguaje principal. Especialmente en IoT. Su papel como punto de inicio de otros muchos lenguajes lo convierte en una herramienta que conviene dominar. C es empleado en dispositivos embebidos, lo que lo sitúa en un lugar privilegiado dentro del contexto de Internet. Normalmente, este lenguaje se utiliza en cualquier capa baja del software, acercándose lo más posible al hardware. C es plano, sobrio y muy potente, perfecto para controlar cualquier elemento inmerso en el IoT.

Por otro lado, tal y como apuntan los datos, Java parece haberle ganado terreno a C en los últimos años. Especialmente cuando hablamos de Internet de las Cosas. La premisa “write once, run everywhere” es una máxima que ningún desarrollador menosprecia. Su increíble versatilidad multiplataforma unida a la posibilidad actual de embeber Java en cualquier chip con JVM son las razones principales de su elección. ¿Y cuáles son las razones del debate? El consumo de recursos es la principal razón por la cual Java no se emplea de forma más normalizada. A pesar de la seguridad y la versatilidad que ofrece este lenguaje, su consumo es el factor limitante que determina en la mayoría de ocasiones su uso.

Por último, JavaScript está adquiriendo muchísima importancia en servidores. La recolección y gestión de información a través de hubs y gateways está marcando una nueva tendencia. A día de hoy podemos ver JavaScript o Node.js corriendo en grandes máquinas o en microcontroladores, desde su inicio. JavaScript permite a los desarrolladores programar en un entorno conocido, sin la necesidad de aprender nuevos lenguajes, lo que está marcando la diferencia con otras soluciones. No obstante, aunque es cada vez más importante dentro de las necesidades relacionadas con IoT, su uso todavía está bastante limitado.

Un escenario de lenguajes emergentes

“Internet de las Cosas es políglota, no habla un solo idioma”, explicaba Skerrett hablando de los esfuerzos de Eclipse. Los resultados de la encuesta, de hecho, avalan esta afirmación. Al fin y al cabo, no existe una sola elección. Ni tan siquiera es necesario escoger. El IoT es un entorno con las mismas posibilidades técnicas que cualquier otro dentro de la informática. La elección de un lenguaje de programación u otro obedece a múltiples factores. Así se dispone un escenario donde poco a poco van emergiendo otros lenguajes. Muchos de ellos son grandes conocidos para los desarrolladores mientras que otros están haciéndose un hueco gracias a las necesidades del Internet de las Cosas.

Entre los lenguajes “veteranos” se encuentra Python, que comenzó como un lenguaje de scripting, pero cada vez es más utilizado como la herramienta principal por los desarrolladores. Python es el idioma preferido por uno de los microcontroladores más populares del mercado,  la “Raspberry Pi “. Muchas escuelas utilizan la plataforma para enseñar programación y los manuales son de fácil acceso. Por otro lado, si el proyecto es relativamente simple y no hay grandes demandas de recursos, es posible desarrollar potentes herramientas fácilmente gracias a este lenguaje.

Aunque Swift se usa principalmente para desarrollar aplicaciones para iOS y MacOS, su presencia en soluciones IoT es indiscutible. Esto se debe a su importancia si necesitamos que una App o servicio interactúe con un iPhone o un iPad, ambos increíblemente presentes en el mercado. Pero, además, el esfuerzo de Apple por hacer de sus dispositivos el centro de la red doméstica domótica está dándole más y más importancia a Swift.  La plataforma HomeKit de Apple en este caso juega un papel crucial en el interés creciente de Swift dentro del IoT.

PHP es la elección más común entre bloggers y programadores web. Pero también es sorprendentemente popular en IoT. Su papel en los servidores es ampliamente conocido; sin embargo, se está comenzando a utilizar en niveles más bajos. Su sencillez es también una gran baza para emplear este lenguaje en vez de otros grandes “pesos pesados” como C o similares. Además de estos, como veíamos antes, ahora es fácil encontrar lenguajes como C#, C++, Lua, Ruby o Go entre otros. En el futuro de IoT, está claro, existe un panorama donde multitud lenguajes trabajan en conjunto para interconectar una red creciente de dispositivos y servicios. Una red en la que no existe un sólo lenguaje protagonista.

Deja un comentario

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