¿Qué lenguaje de programación utilizar para una 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 Python, Scratch y C o C++ preinstalados.
Así que veamos primero estos tres idiomas.
Python: gran lenguaje de propósito general para Raspberry Pi
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 o 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 aceptará tres lenguajes por defecto: C o 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.
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.
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".
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:
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 tu proyecto sea más grande, querrás utilizar un lenguaje más convencional como Python o C o C++ porque podrás 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.
- Raspberry Pi tiene algunos cursos de Scratchincluyendo las que implican la construcción de hardware.
- Aaron Maurer tiene un tutorial en YouTube para mostrarte cómo usar Scratch 3 y hacer parpadear un LED.
C o C++ para Raspberry Pi
Los lenguajes de programación que te dan el máximo control son también de los más difíciles de aprender y dominar.
¿Cuál es la diferencia entre C y C++?
C++ es, en cierto modo, una versión ampliada de C, que incluye muchas características como el soporte nativo diseñado para la programación orientada a objetos. El ++ es un juego de palabras sobre la forma en que los operadores pueden incrementarse en C y en el propio C++. Por ejemplo, si tienes una variable gatos y quieres añadirle uno, sólo tienes que escribir gatos++;
Especialmente C++ es muy dinámico y se actualiza constantemente. Es un lenguaje complejo de aprender. Para los principiantes, C puede ser un lenguaje más apropiado.
¿Cuál es la principal diferencia con otras lenguas utilizadas para el Pi?
Estos lenguajes se compilan, es decir, se escribe el código y, a continuación, se utiliza una aplicación especial llamada compilador para producir el código máquina en bytes que el procesador de la arquitectura de destino entiende de forma nativa. En otras palabras, si quieres ejecutar una aplicación tanto en el Pico W como en la Raspberry Pi y en tu ordenador de sobremesa (basado en x86), tendrás que ejecutar un compilador específico para cada uno de ellos.
Otro ejemplo de lenguaje compilado es Rust, que tiene grandes ventajas. Verás, C y C++ necesitan que te ocupes de ciertas cosas como la recolección de basura - si no lo haces, tu aplicación puede fallar. O todo el ordenador puede fallar si escribes controladores de dispositivos. Con Rust hay protecciones adicionales para el desarrollador.
Otro popular lenguaje compilado desarrollado por Google se llama Go. Puede que veas referencias a ellos de vez en cuando.
Mi sugerencia para empezar si nunca has codificado antes son los lenguajes interpretados. No necesitan un paso de compilación, sino que son leídos por una aplicación que luego ejecuta el comando adecuado. Un buen lenguaje para empezar es Python (o MicroPython).
Sin embargo, si alguna vez quiere crear proyectos alucinantes como jugar a Doom en una Raspberry Pi Pico entonces necesitarás saber C, o C++.
C o C++ son generalmente uno de los tres lenguajes más utilizados en la Raspberry Pi, siendo el otro Python. Por lo tanto, una buena parte de esta sección hablará de los beneficios y contras de los dos.
Empecemos por comparar los tres:
C y C++ | MicroPython | |
Velocidad | Más rápido | Más lento |
Curva de aprendizaje | Harder | Más fácil |
Gestión de la memoria | Manual | Automático (recogida de basura) |
¿Compilado? ¿Interpretado? | Compilado | Interpretado |
Uso por comunidad | Amplio uso, especialmente utilizado en proyectos avanzados donde es necesario un control minucioso | Ampliamente utilizado por los principiantes hasta los usuarios avanzados. |
Bibliotecas de componentes | Generalmente disponible | Generalmente disponible |
¿Un principiante debe aprender C o 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 pueden realizarse tanto con Python como con C o C++. La disponibilidad de bibliotecas para los tres 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 o C++ pueden ser un poco menos divertidos para el programador principiante porque hay muchos aspectos en los que tendrías que pensar que no tendrías en Python.
Por ejemplo, en C y C++, tendrás que gestionar la memoria. También tendrás que pensar qué tipo de datos asignar a una variable. Puede llegar a ser tedioso si no eres consciente de las implicaciones de los pros y los contras de elegir un tipo.
Por ejemplo, si quieres asignar un entero en C y 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 o 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 código eficiente te ayudará a sacar el máximo rendimiento de su limitado hardware.
Configurar C y C++ lleva más tiempo
Cuando salieron las placas Raspberry Pi Pico, tuve que escribir sobre cómo configurar la Pico para Python y C y C++.
Python fue súper fácil. Descarga Thonny. Conecta Pico. Flashear MicroPython. Hecho.
C y C++ eran mucho más difíciles y tediosos. 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 tiene unos 40 años y sigue utilizándose hoy en día.
¿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 podría ser el mejor primer lenguaje para aprender.
Psst... C y C++ pueden utilizarse 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 aprendiste C o 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 o C++.
Es posible que esas placas no acepten Python, así que si la razón por la que te interesa la Raspberry Pi es crear proyectos con microcontroladores, puede que C o C++ te resulten un lenguaje más transferible.
Aprender C o 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 lenguajes potenciales 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)
JavaScript es uno de los lenguajes más útiles que existen para el programador aficionado, ya que 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.
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:
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 JavaScript. Son útiles si:
- Tiene previsto hacer algo basado en la web
- Usted planea servir una página web usando el Pico W
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.
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 o C++
Construir proyectos de hardware: Python o C o 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 o (especialmente) C++
Por favor, no te refieras a "C/C++" como 1 lenguaje. Eso sólo confunde a los principiantes. Son DOS lenguajes muy distintos, con curvas de aprendizaje y capacidades diferentes.
Gracias por los comentarios. He modificado el artículo y he ampliado un poco la diferencia entre las lenguas.
No estoy de acuerdo con la afirmación "Son DOS lenguajes muy diferentes". C es un subconjunto de C++. Por supuesto, C++ es mucho más difícil de aprender que C.
Gracias por este artículo