La idea detrás de la computación ubicua es que viene la tercera ola de computadoras (o ya está aquí).
La primera ola fue Mainframe Computing: las computadoras son máquinas grandes que solo se encuentran en pequeñas cantidades en grandes empresas y tienen varios usuarios cada una. La segunda ola es la Computación Personal: cada hogar o, como máximo, una persona tiene una computadora “de escritorio”. La tercera ola es la computación ubicua: hay (muchas) más computadoras que usuarios. La computación móvil que estamos viendo hoy, donde los usuarios tienen varios dispositivos (computadora, tableta, teléfono, sistema de automóvil …) es un intermediario entre la segunda y la tercera ola.
La computación ubicua “real” puede abarcar muchas cosas: redes de sensores, polvo inteligente, robótica, humanos aumentados … Básicamente es la visión de un futuro donde la computación esté en todas partes.
- ¿Cómo se glorifican los métodos del kernel en la coincidencia de plantillas?
- ¿Cómo podemos saber si una heurística es mejor que otra sin ejecutarla?
- ¿Pandora graba cuando en la canción presiono saltar, pulgar arriba o pulgar abajo?
- ¿En qué tipos de problemas de regresión son comparables las redes neuronales, las máquinas de vectores de soporte, los bosques aleatorios y las redes neuronales profundas? ¿La superioridad de los métodos depende del tamaño del entrenamiento?
- ¿Cómo se convierten los físicos en ingenieros de aprendizaje automático?
Con respecto a la programación, el cambio es que, en oleadas anteriores, una aplicación se estaba ejecutando en una computadora. En la computación ubicua esto ya no es posible, ya que puede haber menos aplicaciones que dispositivos. Una aplicación se ejecuta en * varias * computadoras. Esta es la razón por la cual la idea de la nube está (más o menos) relacionada con la computación ubicua.
Entonces, aprender a programar para la computación ubicua es, ante todo, aprender a escribir algoritmos distribuidos. No tengo idea de cuál es su nivel actual, pero si es al menos un programador de nivel intermedio, un buen comienzo es el problema del consenso y el algoritmo Raft. También se beneficiaría de aprender Erlang y / o jugar con sistemas como 0MQ / nanomsg.
Sin embargo, otras cosas serán importantes. No puede tener cientos de dispositivos por usuario que consuman 50 W de potencia, por lo que parte de la programación deberá ser consciente de la energía. Eso significa que será de muy bajo nivel. Lo más probable es que esté más cerca del diseño de circuitos en realidad, por lo que diría que aprender sobre cosas como FPGA y VHDL podría ser algo bueno. Jugando con Arduinos también.