1

El lenguaje de programación que une dos mundos

En proyectos de Internet of Things (IOT) o internet de las cosas se cuenta con el hardware y el software como partes esenciales de estos. Solemos pensar que el armado o prototipado de nuestro proyecto es la única parte de hardware en la que debemos prestar atención, y que el procesamiento de los datos es toda la parte de software que se realiza con la ayuda de un lenguaje de programación.

Entonces, tenemos que romper este paradigma porque sí existe una gran intersección entre estas dos partes.

Por el avance tan acelerado de la tecnología y la accesibilidad a ella, hemos ido dejando de lado detalles como el uso o gestión óptima de la memoria de nuestras tarjetas (Arduino, Raspberry, PIC, etc.) y la velocidad de procesamiento de datos. Detalles importantes cuando nuestros proyectos tiene una mayor magnitud.

Cuando nos topamos con limitaciones de hardware o software, por las dimensiones de nuestro proyecto, empezamos a indagar y nos presentan una solución: la implementación del lenguaje C.

Ventajas

Una de las limitaciones más recurrentes es el alcance máximo u overflow (desborde) de la memoria en los controladores de nuestras tarjetas. El uso del lenguaje C nos permite tener una gran eficiencia y control sobre ello, sea compactando (desfragmentación) o liberando (habilitar espacio) la memoria.

Esto se realiza gracias al uso de punteros que nos permiten conocer y manipular las direcciones de memoria.

Aprendamos de C

Pero ¿qué es una dirección de memoria? Hagamos uso de una analogía para comprender este concepto. Recordemos nuestra localidad, tenemos calles con diversos nombres y además a lo largo de cada una, muchas casas. Normalmente cada casa tiene asignado un número. Muy bien, la memoria también asigna los espacios donde va a residir cada dato, y cada uno de estos espacios tiene un número para ser identificado. Esto es lo que se llama dirección de memoria.

Y ahora ¿qué son punteros? Los punteros son usados en el lenguaje de programación, ellos se encargan de extraer y brindar la dirección de memoria de una variable. Esta es la herramienta que nos permite mejorar el rendimiento y la gestión de memoria desde la manipulación y el control de tipos de datos hasta las estructuras de datos (arreglos, grafos, etc.). Tenemos muchos ejemplos prácticos de ello en el Curso de Introducción a C pasa por aquí y nunca pares de aprender.

Aprendamos también cómo identificar una dirección de memoria. Mencionamos que son números asignados, pero como sabemos las computadoras no usan el sistema decimal (0 al 9) que nosotros cotidianamente conocemos, sino, el sistema binario (solo 0 o 1) y a cada dígito del número es llamado bit. Estas direcciones tienen desde 8 hasta 64 bits. Recordemos que no es sencillo leer o identificar un número con tantos dígitos, por lo que se usa el sistema hexadecimal (de 0 a F). El uso de este sistema implica agrupar en 4 bits y transformándolo a él como vemos a continuación:

Pizarra-Sistema-numerico.png

Es así, como se nos facilita realizar una lectura u operación aritmética a nivel de memoria.

Todo lo anterior nos llevó a un conocimiento mayor del hardware de nuestro controlador. ¿Verdad? 🤓

Conclusión

Y aunque existen alternativas parecidas como el garbage collector en otros lenguajes de programación, estos hacen uso de un ‘robot’ que ejecuta estas tareas de forma automática lo que no te asegura la máxima optimización, en cambio, el uso del lenguaje C, sí.

Por supuesto, en Platzi puedes aprender más tomando el Curso de Introducción a C para conocer su sintaxis, el uso y creación de librerías, el uso dinámico de memoria y casos prácticos para llevar tus proyectos de IOT a su máxima eficiencia y eficacia.

Escribe tu comentario
+ 2