Este artículo presenta un método para programar el comportamiento colectivo y adaptativo de dispositivos de computación distribuida en diversos entornos, como el Internet de las Cosas (IoT). Suponemos un entorno donde múltiples dispositivos interactúan con sus vecinos y ejecutan rondas de detección, computación e interacción casi sincronizadas, y un único programa realiza el cálculo que mapea los valores de detección y los mensajes recibidos a los mensajes de salida y transmitidos. Para programar todo el sistema de computación colectiva, proponemos una abstracción de proceso colectivo distribuido que puede definir simultáneamente la lógica de formación de conjuntos y las operaciones colectivas. Esta abstracción se formaliza en eXchange Calculus (XC), un lenguaje funcional central basado en valores vecinos (mapeo de vecinos a valores), e implementada en el lenguaje FCPP. Experimentamos con el proceso colectivo distribuido a través de dos casos de estudio: propagación de mensajes multisalto y monitoreo distribuido de características espaciales, y analizamos las características y la idoneidad de la abstracción para diversas aplicaciones de computación distribuida.