Que linguagem de programação utilizar para um Raspberry Pi?
Se é novo no Raspberry Pi, poderá encontrar-se na encruzilhada da escolha de uma linguagem de programação para aprender.
Há tantas línguas por aí e o que decidir aprender terá um efeito profundo no que pode fazer. Portanto, vejamos as línguas que pode usar com o Raspberry Pi.
Línguas pré-carregadas no Raspberry Pi
Talvez a maior dica que pode tirar de Raspberry Pi sejam as línguas que vêm pré-carregadas no SO Raspberry Pi.
Em cada instalação, terá pré-instalado Python, Scratch e C ou C++.
Portanto, vejamos primeiro estas três línguas.
Python: grande linguagem de uso geral para Raspberry Pi
Prós:
- Fácil de aprender
- Muitas bibliotecas de componentes
- Muitos grandes tutoriais para o pôr ao corrente
- Pode ser utilizado nos microcomputadores Raspberry Pi e na série Pico
Cons:
- Não adequado para desenvolvimento de website (front end, especificamente)
- Mais lento do que C ou C++
Se está a começar do zero, então Python é provavelmente a forma mais rápida e eficiente de começar.
Para um, Python é uma das línguas mais fáceis de aprender.
Outra razão é que existem muitas bibliotecas escritas em Python para vários sensores e componentes. Como resultado, uma boa quantidade de scripts para tutoriais e projectos será escrita em Python.
Se fosse utilizar outra linguagem, por exemplo, JavaScript (via NodeJS), poderia encontrar-se preso sem uma biblioteca para um sensor comum.
Finalmente, aprender Python irá ajudá-lo a interagir com todas as pranchas na linha de Raspberry Pi. Pode criar projectos para o Raspberry Pi 4 bem como para o Raspberry Pi Pico.
Os fabricantes do Raspberry Pi também facilitam a construção de projectos em Python. Para um, todos os microcomputadores Raspberry Pi (por exemplo Pi 4) vêm com Thonny que é um IDE Python e todos os Raspberry Pi Picos irão ler MicroPython por defeito.
Thonny torna Python fácil no Raspberry Pi
Raspberry Pi OS também vem pré-carregado com Thonny, o que torna realmente fácil a execução de scripts Python.
Thonny torna a programação em Python fácil porque pode facilmente iniciar e parar scripts premindo o botão "RUN" ou "STOP" no IDE.
Enquanto que, se utilizar outro editor, terá provavelmente de digitar o guião no Terminal a fim de o executar.
MicroPython para Raspberry Pi Pico
Python é particularmente útil para aprender se quiser usar o Raspberry Pi Pico.
Ao contrário dos microcomputadores Raspberry Pi Pi Pico, o Raspberry Pi Pico só aceita por defeito três línguas: C ou C++ e MicroPython.
Isto significa que se tiver aprendido Python, será capaz de fazer a transição para a escrita de MicroPython, uma vez que a sintaxe é a mesma.
A principal diferença entre Python e MicroPython é que este último tem uma biblioteca padrão mais pequena.
CircuitPython
Para além de MicroPython, CircuitPython é outro derivado de Python que é utilizado no Raspberry Pi Pico. O CircuitPython é criado pela Adafruit.
Python é uma boa linguagem para os utilizadores de Raspberry Pi?
SIM. Absolutamente.
Precisará definitivamente de conhecer Python se quiser construir projectos para o Raspberry Pi.
Comecei a minha viagem de programação com JavaScript. Fora da esfera de Raspberry Pi, o JavaScript é uma linguagem muito eficiente porque se pode criar programas e sítios web.
Contudo, um dia, tive de criar um programa para uma exibição de sete segmentos e não havia maneira de o fazer em JavaScript.
Encontrei um guião online mas foi em Python e isso enviou-me pelo caminho da aprendizagem de Python.
Se quer a forma mais eficiente, rápida e fácil de construir projectos Raspberry Pi, então aprender Python é o caminho a seguir.
Onde aprender a programação Python for Raspberry Pi
Percurso de aprendizagem - estes recursos compilam ligações onde pode aprender partes específicas de Python. São percursos de aprendizagem gerais e não específicos do Raspberry Pi.
Harvard OpenCourseWare, CS50's Introdução à Programação com Python
YouTube vídeos
Lista de reprodução tutorial para principiantes de Python de Corey Schafer
Cursos específicos para Raspberry Pi - Estes são cursos destinados a principiantes
Fundação Raspberry Pi - este curso dar-lhe-á uma visão geral da programação em Python e mergulha na programação de jogos e interacção com sensores e componentes.
Python real, Construir Projectos Físicos com Python no Raspberry Pi - este é um grande guia para pessoas que têm um kit de sensores e componentes e querem mergulhar em código que interage com a GPIO. Ao contrário dos tutoriais gerais Python, estes ensinar-lhe-ão como ligar sensores simples e como interagir com eles com um Raspberry Pi 4.
Raspadinha para Raspberry Pi
Um dos meus amigos estava a mostrar-me o seu semáforo LED que ele fez com o seu Raspberry Pi 4.
É um programador sénior com muitos conhecimentos de programação em Java e JavaScript, por isso estava à espera que o tivesse escrito em alguma linguagem de programação.
Mas não...
Ele usou o Scratch.
O quê?
Porque é que um tipo de software sénior usou o Scratch?
Scratch descreve-se a si próprio como "a maior comunidade mundial de codificação para crianças e uma linguagem de codificação com uma interface visual simples que permite aos jovens criar histórias digitais, jogos, e animações".
O meu amigo não era definitivamente uma criança.
Quando lhe perguntei porquê, ele deu-me uma resposta tão útil como uma mensagem de compromisso de Git, "bem, é simples de programar".
Para ser justo, quando visitei a Raspberry Pi Store em Cambridge, Reino Unido, eles também tinham um Pi running Scratch.
Portanto, deve ser bom para alguma coisa!
Scratch é uma boa linguagem de programação para utilizadores de Raspberry Pi?
Suponho que é bom para riscar a superfície da programação.
Toda a premissa do Scratch é tornar a programação fácil para crianças e adolescentes. Em vez de escrever código abstracto, Scratch permite-lhe criar programas juntando blocos.
A fim de piscar um LED com Scratch, monta-se estes blocos:
Agora, compare isto com um guião Python para piscar o 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)
Talvez seja a mesma razão pela qual algumas pessoas preferem usar uma GUI em vez de uma linha de comando. Em vez de alterar o valor de uma variável com vários espaços traseiros, teclas de setas e outros pressionamentos de teclas, em vez disso, basta clicar e escolher.
Para projectos simples, aprendizagem e ensino, Scratch é uma grande escolha.
Diminuições para o Raspberry Pi
Se falhou o trocadilho na secção anterior, aqui está novamente: Riscar apenas arranha a superfície.
Inevitavelmente, uma vez que o seu projecto se torne maior, vai querer utilizar uma linguagem mais corrente como Python ou C ou C++ porque poderá aceder à riqueza de código, bibliotecas e scripts disponíveis online.
Aprender Raspadinha
Se estiver curioso sobre como funciona o Scratch, pode rapidamente ter uma ideia de como funciona o seu método de "blocos de construção no seu ambiente online.
- Raspberry Pi tem alguns cursos de Raspadinhaincluindo as que envolvem a construção de hardware.
- Aaron Maurer tem um tutorial no YouTube para lhe mostrar como utilizar o Scratch 3 e piscar um LED.
C ou C++ para Raspberry Pi
As últimas linguagens de programação que lhe dão o controlo final são também uma das mais difíceis de aprender e dominar.
Qual é a diferença entre C e C++?
C++ é, de certa forma, uma versão alargada de C, que inclui muitas características como o suporte de programação nativo de concepção orientada a objectos. O ++ é um trocadilho na forma como os operadores podem ser incrementados em C e o próprio C++. Por exemplo, se tiver uma variável cats, e quiser adicionar-lhe uma, pode simplesmente escrever cats+++;
C++ especialmente é muito dinâmico e recebe constantemente actualizações. É uma linguagem complexa para aprender. Para principiantes, o C pode ser uma língua mais apropriada para escolher.
Qual é a principal diferença em relação a outras línguas utilizadas para o Pi?
Estas linguagens são compiladas - ou seja, escreve código, e depois utiliza uma aplicação especial chamada compilador para produzir código de bytes de máquina que o processador da sua arquitectura de destino compreende nativamente. Por outras palavras, se quiser executar uma aplicação tanto no Pico W e no Raspberry Pi, como no seu computador de secretária (baseado em x86), terá de executar um compilador específico para cada um deles.
Outro exemplo de uma língua compilada é a Ferrugem, que tem algumas grandes vantagens. Como vê, C e C++ precisam que você tome conta de certas coisas como a recolha de lixo - se não o fizer, a sua aplicação pode colidir. Ou todo o computador pode falhar se escrever drivers de dispositivos. Com o Rust há guardas adicionais de segurança para o programador.
Outra linguagem popular compilada desenvolvida pela Google chama-se Go. Poderá notar referências a eles de tempos a tempos.
A minha sugestão para começar, se nunca codificou antes, são as línguas interpretadas. Não precisam de uma etapa de compilação, mas são lidas por uma aplicação que depois executa o comando correcto. Uma boa linguagem para começar é Python (ou MicroPython).
No entanto, se alguma vez quiser criar projectos de arrepiar a mente como jogar Doom on a Raspberry Pi Pico então precisará de saber C, ou C+++.
C ou C++ são geralmente uma das três línguas mais utilizadas no Raspberry Pi, sendo a outra Python. Portanto, uma boa parte desta secção falará sobre os benefícios e os inconvenientes das duas.
Vamos começar por comparar os três:
C e C++ | MicroPython | |
Velocidade | Mais rápido | Mais devagar |
Curva de aprendizagem | Mais difícil | Mais fácil |
Gestão de memória | Manual | Automático (recolha de lixo) |
Compilado? Interpretado? | Compilado em | Interpretado |
Utilização pela comunidade | Ampla utilização, especialmente utilizada em projectos avançados onde é necessário um controlo minucioso | Amplamente utilizado por principiantes a utilizadores avançados. |
Bibliotecas para componentes | Geralmente disponível | Geralmente disponível |
Um principiante deve aprender C ou C++?
Não há nada que o impeça de passar por um julgamento por fogo.
Porque o que não o mata, torna-o mais forte.
A maioria dos projectos podem ser alcançados com Python, bem como com C ou C++. A disponibilidade de bibliotecas para as três línguas é também generalizada e é pouco provável que seja estrangulada pela falta de uma biblioteca.
Quão tenaz é você?
C ou C++ pode ser um pouco menos divertido para o programador principiante porque há muitos aspectos em que teria de pensar que não teria em Python.
Por exemplo, em C e C++, terá de gerir a sua memória. Terá também de pensar que tipo de dados atribuir a uma variável. Pode tornar-se enfadonho se não estiver consciente das implicações dos prós e contras da escolha de um tipo.
Por exemplo, se quiser atribuir um número inteiro em C e C++, terá de decidir se quer:
- int
- char
- char não assinado
- carta assinada
- int não assinado
- breve
- curto-circuito não assinado
- longo
- longo não assinado
A escolha de um destes terá implicações na velocidade do seu programa e na utilização da memória.
E embora Python seja menos eficiente, só precisará de o fazer para declarar um número inteiro:
integer = 999999999999999
Mas sem dor, não há ganho, certo?
Quando estiver familiarizado com o funcionamento de C ou C++, começará a colher os benefícios. Como o Raspberry Pi não é um computador muito poderoso pelos padrões actuais, ser capaz de escrever código eficiente irá ajudá-lo a obter o melhor desempenho do seu hardware limitado.
A instalação de C e C++ leva mais tempo
Quando as tábuas Raspberry Pi Pico saíram, tive de escrever sobre a criação do Pico para Python e C e C++.
Python era super fácil. Descarregar o Thonny. Ligar ao Pico. Flash MicroPython. Feito.
C e C++ eram muito mais duros e enfadonhos. É evidente - Raspberry Pi publica um PDF apenas sobre o tema C/C++ criado. Digamos que teve de interagir com a linha de comando a fim de a configurar.
C a luz sempre
C tem cerca de 40 anos e ainda hoje é utilizado.
O que é que isso diz sobre o assunto?
É uma das línguas mais dinâmicas que se pode aprender e que pode ser usada para criar software e manipular hardware.
Assim, se estiver interessado em aprender uma língua que seja extremamente útil e poderosa, o C pode ser a melhor primeira língua a aprender.
Psst... C e C++ podem ser utilizados em outras placas
Estou a escrever isto em 2022 onde o stock de framboesa Pi é uma grande edição.
Uma das maiores perguntas que as pessoas fazem é: "Que tábuas alternativas existem? Não posso construir projectos com uma Raspberry Pi inexistente".
Há muitas placas alternativas por aí, e pode consultá-los aqui.
Se aprendeu C ou C++, poderá mergulhar directamente na utilização de uma prancha Arduino ou ESP32 ou ESP8266, cujos programas são quase exclusivamente escritos em C ou C++.
Essas placas podem não aceitar Python, por isso, se a razão pela qual se está no Raspberry Pi é para criar projectos com microcontroladores, poderá encontrar C ou C++ para ser uma linguagem mais transferível.
Aprender C ou C++ para Raspberry Pi
MagPi publica gratuitamente uma revista para principiantes.
MagPi também publica uma lista de lugares para aprender C (não específicos de Raspberry Pi)
Raspberry Pi publica um PDF que lhe ensina a usar C/C++ com o Raspberry Pi Pico
Aqui ser dragões
Na secção acima, falámos sobre as linguagens de programação que deve considerar aprender.
A secção seguinte fala de potenciais línguas que também podem ser usadas com o Raspberry Pi, mas os casos de uso e a comunidade não são tão grandes como quando se usa Python, C, C++ e Scratch.
JavaScript (incluindo NodeJS)
O JavaScript é uma das linguagens mais úteis para o programador amador, porque é possível criar aplicações, sítios Web (com HTML e CSS) e backends com ele.
Um dos maiores avanços na esfera do JavaScript chama-se NodeJS. Anteriormente, o JavaScript era maioritariamente baseado no browser, mas com o NodeJS, é possível executar um backend e criar aplicações para o seu Raspberry Pi e outros computadores.
Especificamente para o Raspberry Pi, existem bibliotecas que lhe permitem manipular os pinos GPIO do Raspberry Pi. Portanto, se quiser construir um projecto simples, não terá problemas em executar um programa JavaScript.
Contudo, o maior engarrafamento no seu projecto é a falta de uma comunidade onde Raspberry Pi e JavaScript se cruzam.
Isto torna-se evidente quando se visita o Github de alguém e, inevitavelmente, o seu projecto é escrito em Python ou C, C++. Muito poucos programadores usam JavaScript com o Raspberry Pi.
Então, o JavaScript é um write-off?
Não, nem por isso.
Ainda tem as suas utilizações.
Um caso de uso onde apenas aprender JavaScript pode ajudá-lo a atingir os seus objectivos é se quiser usar o seu Raspberry Pi como servidor web. Pode escrever o backend em ExpressJS (uma estrutura backend) e o frontend em React/Angular/Vue (estruturas frontend), depois utilizaria PM2 (um gestor de processos) para entregar o back end e o front end. Neste cenário, pode fazê-lo completamente em JavaScript.
Raspberry Pi Pico W precisa de JavaScript
Há algum tempo atrás, numa reunião do React, alguém me provocou por escrever baunilha JavaScript. Ele provocou-me, "em que ano estamos? Os 2000s?"
Se tiver um Raspberry Pi Pico W, eventualmente precisará de saber escrever baunilha JavaScript.
Olha quem está a rir agora?
Enquanto o mundo do desenvolvimento web passou a utilizar uma estrutura de frontend como React, Angular ou Vue, servir sítios web no Raspberry Pi Pico requer geralmente que saiba como escrever baunilha JavaScript. Se olhar para os nossos tutoriais no nosso Pico W mega artigo, verá.
Um dos maiores benefícios do Pico W é que lhe permite servir uma página web, que provavelmente utilizará para controlar algo. Por exemplo, poderá ter o Pico W a servir uma página web com um deslizador que controla um servo. A fim de comunicar o valor do deslizador ao Pico W, necessitará de conhecer o JavaScript.
Aprender JavaScript
Só posso recomendar a única página web que provou ser o melhor recurso para eu aprender JavaScript:
Este recurso é MUITO bom para os utilizadores do Pico W porque ensina-lhe todos os aspectos do JavaScript de baunilha e também eventos de browser. Precisará de conhecer este último para controlar eficazmente o Pico W e o UX da página web que irá servir.
HTML + CSS
O HTML e o CSS não são propriamente linguagens de programação, mas estão intimamente relacionados com a secção JavaScript. São úteis se:
- Tenciona fazer algo baseado na web
- Pretende servir uma página web utilizando o Pico W
Este único site ajudou-me muito: A Internet é difícil
Está um pouco desactualizado. Por exemplo, não cobre a Grelha CSS ou a relação de pontos.
Mas a Interneting is Hard tem um método de ensino eficaz e pode ensinar-lhe o suficiente para construir uma página web para o Pico W.
Recomendações, se quiser...
Obter resultados rapidamente: Python ou Scratch
Ensinar as crianças a programar: Raspadinha
Obtenha o máximo controlo do seu hardware: C ou C++
Construir projectos de hardware: Python ou C ou C++, não se preocupe com mais nada
Acolher um servidor web e construir sítios web: HTML, CSS, JavaScript
Construir um projecto IoT com o Pico W: Python, HTML, CSS, JavaScript
Tornar-se semelhante a Deus (com um investimento ímpio de tempo): C ou (especialmente) C++
Por favor, não se refira a "C/C++" como 1 língua. Isso só confunde os principiantes. São DOIS línguas muito diferentes com diferentes curvas de aprendizagem e diferentes capacidades.
Obrigado pelo feedback - alterei o artigo e expandi um pouco a diferença entre as línguas.
Não concordo com a afirmação "São DUAS linguagens muito diferentes". O C é um subconjunto do C++. É claro que o C++ é muito mais difícil de aprender do que o C.
Gracias por éste artículo