¿Qué lenguaje de programación se debe utilizar con la Raspberry Pi?

idiomas de la raspberry pi

Si eres nuevo en la Raspberry Pi, puede que te encuentres en la encrucijada de elegir un lenguaje de programación para aprender.

Hay muchos lenguajes por ahí y lo que decidas aprender tendrá un profundo efecto en lo que puedes hacer. Así que, echemos un vistazo a los lenguajes que puedes utilizar con la Raspberry Pi.

Idiomas precargados en la Raspberry Pi

Tal vez la mayor pista que puedes tomar de Raspberry Pi son los idiomas que vienen precargados en el SO de Raspberry Pi.

En cada instalación, tendrás preinstalados Python, Scratch y C/C++.

Así que veamos primero estos tres idiomas.

Python: gran lenguaje de propósito general para Raspberry Pi

pi dht22
Código Python escrito en Thonny

Pros:

  • Fácil de aprender
  • Muchas bibliotecas de componentes
  • Muchos tutoriales para ponerte al día
  • Puede utilizarse en los microordenadores Raspberry Pi y la serie Pico

Contras:

  • No es adecuado para el desarrollo de sitios web (front-end, específicamente)
  • Más lento que C/C++

Si se parte de cero, Python es probablemente la forma más rápida y eficaz de empezar.

Por un lado, Python es uno de los lenguajes más fáciles de aprender.

Otra razón es que hay muchas bibliotecas escritas en Python para varios sensores y componentes. Como resultado, una buena cantidad de scripts para tutoriales y proyectos estarán escritos en Python.

Si se utilizara otro lenguaje, por ejemplo, JavaScript (a través de NodeJS), podría encontrarse sin una biblioteca para un sensor común.

Por último, el aprendizaje de Python le ayudará a interactuar con todas las placas de la línea de Raspberry Pi. Puedes crear proyectos para la Raspberry Pi 4 así como para la Raspberry Pi Pico.

Los fabricantes de la Raspberry Pi también facilitan la construcción de proyectos en Python. Por un lado, todos los microordenadores Raspberry Pi (por ejemplo, Pi 4) vienen con Thonny que es un IDE de Python y todos los Raspberry Pi Picos leerán MicroPython por defecto.

Thonny facilita el uso de Python en la Raspberry Pi

El sistema operativo Raspberry Pi también viene precargado con Thonny, que hace que sea muy fácil ejecutar scripts de Python.

Thonny hace que la programación en Python sea fácil porque puedes iniciar y detener fácilmente los scripts pulsando el botón "RUN" o "STOP" en el IDE.

En cambio, si utiliza otro editor, probablemente tendrá que escribir el script en el Terminal para poder ejecutarlo.

MicroPython para Raspberry Pi Pico

Es especialmente útil aprender Python si quieres utilizar la Raspberry Pi Pico.

A diferencia de los microordenadores Raspberry Pi, el Raspberry Pi Pico sólo acepta dos lenguajes por defecto: C/C++ y MicroPython.

Esto significa que si has aprendido Python, podrás pasar a escribir MicroPython, ya que la sintaxis es la misma.

La principal diferencia entre Python y MicroPython es que este último tiene una biblioteca estándar más pequeña.

CircuitoPython

Además de MicroPython, CircuitPython es otro derivado de Python que se utiliza en la Raspberry Pi Pico. CircuitPython es creado por Adafruit.

¿Es Python un buen lenguaje para los usuarios de Raspberry Pi?

SÍ. Absolutamente.

Definitivamente necesitarás saber Python si quieres construir proyectos para la Raspberry Pi.

Empecé mi viaje de programación con JavaScript. Fuera del ámbito de la Raspberry Pi, JavaScript es un lenguaje muy eficiente porque puedes crear programas y sitios web.

Una pantalla de cuatro dígitos de siete segmentos

Sin embargo, un día tuve que crear un programa para una pantalla de siete segmentos y no había forma de hacerlo en JavaScript.

Encontré un script en línea pero estaba en Python y eso me llevó a aprender Python.

Si quieres la forma más eficiente, rápida y fácil de construir proyectos Raspberry Pi, entonces aprender Python es el camino a seguir.

Dónde aprender a programar en Python para Raspberry Pi

Ruta de aprendizaje - estos recursos recopilan enlaces donde puedes aprender partes específicas de Python. Son vías de aprendizaje generales y no específicas de la Raspberry Pi.

Learney

Mapa de carreteras

Harvard OpenCourseWare, Introducción a la programación con Python de CS50

YouTube videos

Lista de reproducción del tutorial de Python para principiantes de Corey Schafer

Cursos específicos de Raspberry Pi - Son cursos destinados a los principiantes

Fundación Raspberry Pi - este curso le dará una visión general de la programación en Python y se sumerge en la programación de juegos y la interacción con sensores y componentes.

Pitón real, Construir proyectos físicos con Python en la Raspberry Pi - esta es una gran guía para las personas que tienen un kit de sensores y componentes y quieren sumergirse en el código que interactúa con el GPIO. A diferencia de los tutoriales generales de Python, estos te enseñarán cómo cablear sensores simples y cómo interactuar con ellos con una Raspberry Pi 4.

Scratch para Raspberry Pi

Uno de mis amigos me estaba mostrando a su semáforo LED que hizo con su Raspberry Pi 4.

Es un desarrollador senior con muchos conocimientos de programación en Java y JavaScript, así que esperaba que lo hubiera escrito en algún lenguaje de programación.

Pero no...

Ha utilizado Scratch.

¿Qué?

¿Por qué un experto en software utiliza Scratch?

Scratch se describe a sí mismo como "la mayor comunidad de codificación del mundo para niños y un lenguaje de codificación con una sencilla interfaz visual que permite a los jóvenes crear historias digitales, juegos y animaciones".

Mi amigo definitivamente no era un niño.

Cuando le pregunté por qué, me dio una respuesta tan útil como un mensaje de commit de Git: "bueno, es sencillo de programar".

rascar la frambuesa pi en la tienda de la frambuesa pi

Para ser justos, cuando visité la Raspberry Pi Store en Cambridge, Reino Unido, también tenían una Pi ejecutando Scratch.

Así que, ¡debe ser bueno para algo!

¿Es Scratch un buen lenguaje de programación para los usuarios de Raspberry Pi?

Supongo que está bien para arañar la superficie de la programación.

La premisa de Scratch es facilitar la programación a niños y adolescentes. En lugar de escribir código abstracto, Scratch permite crear programas uniendo bloques.

Para hacer parpadear un LED con Scratch, hay que ensamblar estos bloques:

Secuencia de scratch para el parpadeo del LED. Foto del YouTube de Aaron Maurer.

Ahora, compara esto con un script de Python para hacer parpadear el LED,

import RPi.GPIO as GPIO 
from time import sleep 

GPIO.setmode(GPIO.BOARD)
GPIO.setup(8, GPIO.OUT, initial=GPIO.LOW) 

while True: 
 GPIO.output(8, GPIO.HIGH) 
 sleep(1) 
 GPIO.output(8, GPIO.LOW)
 sleep(1) 

Tal vez sea la misma razón por la que algunas personas prefieren utilizar una GUI en lugar de una línea de comandos. En lugar de cambiar el valor de una variable con varios retrocesos, teclas de flecha y otras pulsaciones de teclas, en su lugar sólo habría que hacer clic y elegir.

Para proyectos sencillos, el aprendizaje y la enseñanza, Scratch es una gran opción.

Desventajas de Scratch para Raspberry Pi

Si te perdiste el juego de palabras de la sección anterior, aquí lo tienes de nuevo: Rascar sólo araña la superficie.

Inevitablemente, una vez que su proyecto se haga más grande, querrá utilizar un lenguaje más corriente como Python o C/C++ porque podrá acceder a la gran cantidad de código, bibliotecas y scripts disponibles en línea.

Aprender Scratch

Si tienes curiosidad por saber cómo funciona Scratch, puedes hacerte rápidamente una idea de cómo funciona su método de "bloques de construcción" en su entorno online.

C/C++ para Raspberry Pi

El lenguaje de programación por excelencia que te da el máximo control es también uno de los más difíciles de aprender y dominar.

Sin embargo, si alguna vez quiere crear proyectos alucinantes como jugar a Doom en una Raspberry Pi Pico entonces necesitarás saber C/C++.

C/C++ es generalmente uno de los dos lenguajes más utilizados en la Raspberry Pi, el otro es Python. Por lo tanto, una buena parte de esta sección hablará de las ventajas y desventajas de ambos.

Empecemos por comparar los dos:

C/C++MicroPython
VelocidadMás rápidoMás lento
Curva de aprendizajeHarderMás fácil
Gestión de la memoriaManualAutomático (recogida de basura)
¿Compilado? ¿Interpretado?CompiladoInterpretado
Uso por comunidadAmplio uso, especialmente utilizado en proyectos avanzados donde es necesario un control minuciosoAmpliamente utilizado por los principiantes hasta los usuarios avanzados.
Bibliotecas de componentesGeneralmente disponibleGeneralmente disponible

¿Debe un principiante aprender C/C++?

No hay nada que te impida pasar por una prueba de fuego.

Porque lo que no te mata te hace más fuerte.

La mayoría de los proyectos se pueden realizar con Python, así como con C/C++. La disponibilidad de bibliotecas para los dos lenguajes también está muy extendida y es poco probable que te encuentres con un cuello de botella por la falta de una biblioteca.

¿Cómo de tenaz eres?

C/C++ puede ser un poco menos divertido para el programador principiante porque hay un montón de aspectos en los que tendrías que pensar que no harías en Python.

Por ejemplo, en C/C++, tendrás que gestionar la memoria. También tendrás que pensar en qué tipo de datos asignar a una variable. Puede resultar tedioso si no eres consciente de las implicaciones de los pros y los contras de la elección de un tipo.

Por ejemplo, si quieres asignar un entero en C/C++, tendrás que decidir si quieres

  • int
  • char
  • unsigned char
  • carta firmada
  • unsigned int
  • corto
  • unsigned short
  • largo
  • unsigned long

La elección de uno de ellos tendrá implicaciones en la velocidad y el uso de memoria de su programa.

Y aunque Python es menos eficiente, sólo necesitarás hacer esto para declarar un entero:

integer = 999999999999999

Pero si no hay dolor, no hay ganancia, ¿verdad?

Una vez que estés familiarizado con el funcionamiento de C/C++, empezarás a cosechar los beneficios. Como la Raspberry Pi no es un ordenador muy potente para los estándares actuales, ser capaz de escribir un código eficiente te ayudará a obtener el mejor rendimiento de su limitado hardware.

La configuración de C/C++ requiere más tiempo

Cuando salieron las placas Raspberry Pi Pico, tuve que escribir sobre la configuración de la Pico para Python y C/C++.

Python fue súper fácil. Descarga Thonny. Conecta Pico. Flashear MicroPython. Hecho.

C/C++ era mucho más difícil y tedioso. Es evidente... Raspberry Pi publica un PDF sólo sobre el tema de la configuración de C/C++. Digamos que has tenido que interactuar con la línea de comandos para configurarlo.

Siempre C la luz

C/C++ tiene unos 40 años y todavía se utiliza.

¿Qué dice eso de él?

Es uno de los lenguajes más dinámicos que se pueden aprender y que sirve para crear software y manipular hardware.

Por lo tanto, si está interesado en aprender un lenguaje extremadamente útil y potente, C/C++ podría ser el mejor primer lenguaje para aprender.

Psst... C/C++ se puede utilizar en otros tableros

Estoy escribiendo esto en 2022 donde el stock de Raspberry Pi es un gran problema.

Una de las cosas que más se pregunta la gente es: "¿Qué placas alternativas hay? No puedo construir proyectos con una Raspberry Pi inexistente".

Hay muchas tablas alternativas por ahí, y puede consultarlas aquí.

Si has aprendido C/C++, podrás sumergirte directamente en el uso de una placa Arduino o ESP32 o ESP8266, cuyos programas están escritos casi exclusivamente en C/C++.

Esas placas pueden no aceptar Python, así que si la razón por la que estás en la Raspberry Pi es para crear proyectos con microcontroladores, podrías encontrar que C/C++ es un lenguaje más transferible.

Aprender C/C++ para Raspberry Pi

MagPi publica gratuitamente una revista para principiantes.

MagPi también publica una lista de lugares para aprender C (no específicos para Raspberry Pi)

Raspberry Pi publica un PDF que enseña a utilizar C/C++ con la Raspberry Pi Pico

Aquí hay dragones

En la sección anterior, hemos hablado de los lenguajes de programación que deberías considerar aprender.

La siguiente sección habla de los posibles lenguajes que también se pueden utilizar con la Raspberry Pi, pero los casos de uso y la comunidad no son tan grandes como cuando se utiliza Python, C/C++ y Scratch.

JavaScript (incluido NodeJS)

Un programa JavaScript que registra los datos de un sensor de temperatura/humedad DHT22 en la Raspberry Pi (y sirve una página web que muestra los datos)

JavaScript es uno de los lenguajes más útiles que existen para el programador aficionado porque con él se pueden crear aplicaciones, sitios web (con HTML y CSS y backends).

Uno de los mayores avances en la esfera de JavaScript se llama NodeJS. Anteriormente, JavaScript se basaba principalmente en el navegador, pero con NodeJS, puedes ejecutar un backend y crear aplicaciones para tu Raspberry Pi y otros ordenadores.

Específicamente para la Raspberry Pi, hay librerías que te permiten manipular los pines GPIO de la Raspberry Pi. Así que, si quieres construir un proyecto sencillo, no tendrás problemas para ejecutar un programa de JavaScript.

Sin embargo, el mayor cuello de botella en su proyecto es la falta de una comunidad donde Raspberry Pi y JavaScript se cruzan.

Esto se hace evidente cuando visitas el Github de alguien e inevitablemente, su proyecto está escrito en Python o C/C++. Muy pocos programadores utilizan JavaScript con la Raspberry Pi.

Por lo tanto, ¿es JavaScript una pérdida de tiempo?

No, en realidad no.

Todavía tiene sus usos.

Un caso de uso en el que simplemente aprender JavaScript puede ayudarte a lograr tus objetivos es si quieres usar tu Raspberry Pi como servidor web. Puedes escribir el backend en ExpressJS (un framework de backend) y el frontend en React/Angular/Vue (frameworks de frontend), luego usarías PM2 (un gestor de procesos) para entregar los backends y frontends. En este escenario, puedes hacerlo completamente en JavaScript.

Raspberry Pi Pico W necesita JavaScript

Hace un tiempo, en una reunión de React, alguien se burló de mí por escribir JavaScript vainilla. Se burló, "¿en qué año estamos? ¿Los años 2000?"

Si tienes una Raspberry Pi Pico W, eventualmente necesitarás saber cómo escribir JavaScript de vainilla.

¿Mira quién se ríe ahora?

Mientras que el mundo del desarrollo web ha pasado a utilizar un marco de frontend como React, Angular o Vue, servir sitios web en la Raspberry Pi Pico generalmente requiere que usted sepa cómo escribir JavaScript vainilla. Si miras nuestros tutoriales en nuestro Pico W mega artículo, ya verás.

El deslizador de la parte superior derecha controla el servo con la ayuda de JavaScript

Una de las mayores ventajas del Pico W es que le permite servir una página web, que probablemente utilizará para controlar algo. Por ejemplo, puede hacer que el Pico W sirva una página web con un deslizador que controla un servo. Para comunicar el valor del deslizador al Pico W, necesitará saber JavaScript.

Aprender JavaScript

Sólo puedo recomendar una página web que me ha resultado el mejor recurso para aprender JavaScript:

https://javascript.info/

Este recurso es MUY bueno para los usuarios de Pico W porque le enseña todos los aspectos de vanilla JavaScript y también los eventos del navegador. Necesitarás conocer estos últimos para poder controlar eficazmente el Pico W y la UX de la página web que vas a servir.

HTML + CSS

HTML y CSS no son realmente lenguajes de programación, pero están estrechamente relacionados con la sección de JavaScript.

  • Tiene previsto hacer algo basado en la web
  • Usted planea servir una página web usando el Pico W

Aprender CSS

Este sitio me ha ayudado mucho: Internet es difícil

Está un poco desfasado. Por ejemplo, no cubre CSS Grid o aspect-ratio.

Pero Interneting is Hard tiene un método de enseñanza efectivo y puede enseñarte lo suficiente para construir una página web para el Pico W.

Puedes complementar los conocimientos que te faltan con Google, W3Schools o Red de desarrolladores de Mozilla.

Recomendaciones si quieres...

Obtenga resultados rápidamente: Python o Scratch

Enseñar a los niños a programar: Rascarse

Obtenga el máximo control de su hardware: C/C++

Construir proyectos de hardware: Python o C/C++, no te molestes con nada más

Alojar un servidor web y crear sitios web: HTML, CSS, JavaScript

Construye un proyecto IoT con el Pico W: Python, HTML, CSS, JavaScript

Convertirse en dios (con una inversión de tiempo impía): C/C++

Deja un comentario