Artigo original: https://www.freecodecamp.org/news/what-can-you-do-with-python-the-3-main-applications-518db9a68a78/

Escrito por: YK Sugi

Tradução realizada em português europeu.

Se estás a pensar em aprender Python — ou se começaste recentemente a aprendê-lo — podes estar a perguntar-te:

"No que posso exatamente utilizar o Python?"

Bem, essa é uma pergunta complicada, porque existem diversas aplicações para o Python.

Ao longo do tempo, contudo, observamos que existem 3 aplicações populares principais para o Python:

  • Desenvolvimento para a web
  • Ciências da Informação — incluindo machine learning, análise de dados e visualização de dados
  • Criação de scripts

Vamos falar sobre cada uma delas.

Desenvolvimento para a web

Frameworks da web que com base em Python, como o Django e o Flask, tornaram-se recentemente muito populares para desenvolvimento para a web.

Estas frameworks da web ajudam-te a criar código do lado do servidor (código back-end) em Python. Esse é o código que corre no teu servidor, ao contrário dos dispositivos dos utilizadores e browsers (código front-end). Se não estiveres familiarizado(a) com a diferença entre código back-end e código front-end, observa a minha nota de rodapé abaixo.

Espera! Por que preciso de uma framework para a web?

É porque uma framework web torna muito mais fácil criar a lógica de back-end comum. Isto inclui mapear URLs diferentes em pedaços de código em Python, lidar com bases de dados e gerar os ficheiros HTML que os utilizadores veem nos seus browsers.

Que framework para a web do Python devo utilizar?

Django e Flask são duas das frameworks para a web mais populares do Python. Recomendo a utilização de uma delas se estás a iniciar.

Qual é a diferença entre Django e Flask?

Existe um excelente artigo (em inglês) sobre este tópico, escrito por Gareth Dwyer. Por isso, permite-me que coloque aqui um excerto:

Contrastes principais:

O Flask fornece simplicidade, flexibilidade e controlo refinado. É imparcial (permite-te decidir como desejas implementar as coisas).

O Django fornece uma experiência totalmente inclusiva: podes ter um painel de administrador, interfaces de bases de dados, um ORM [object-relational mapping], uma estrutura de pastas para as tuas aplicações e projetos logo à partida.

Deves provavelmente escolher:

O Flask, se o teu foco for a experiência e as oportunidades de aprendizagem, ou se desejares ter mais controlo sobre quais os componentes a utilizar (tais como quais as bases de dados que desejas utilizar e como desejas interagir com elas).

O Django, se o teu foco for o produto final. especialmente se estiveres a trabalhar numa aplicação direta como por exemplo um site de notícias, uma loja online ou um blogue, e desejas que exista sempre uma forma única e óbvia de fazer as coisas.

Por outras palavras, se não tiveres muita prática, o Flask é provavelmente a melhor escolha, porque tem menos componentes para lidar. Além disto, o Flask é uma escolha melhor se desejas mais personalização.

Por outro lado, se estás à procura de criar algo direto, o Django provavelmente ajudará a chegar lá mais rápido.

Agora, se estás à procura de aprender Django, recomendo-te o livro chamado Django for Beginners (Django para Iniciantes, em português). Podes encontrá-lo aqui (em inglês). Também podes encontrar os capítulos de amostra gratuitos aqui.

Ok, vamos avançar para o próximo tópico!

Ciências da Informação — incluindo machine learning, análise de dados e visualização de dados

Antes de mais, vamos rever o que é machine learning.

Penso que a melhor forma de explicar o que é machine learning seria ao fornecer-te um simples exemplo.

Digamos que desejas desenvolver um programa que deteta automaticamente o que está numa imagem.

Então, dada a imagem abaixo (Figura 1), desejas que o teu programa reconheça que é um cão.

0_Mbj3L2cl0zzT2A0L
Figura 1

Dada esta outra imagem abaixo (Figura 2), desejas que o teu programa reconheça que é uma mesa.

0_gxTn_CbMyCcQ1NFV
Figura 2

Podes dizer, bem, posso simplesmente escrever algum código para fazer isso. Por exemplo, talvez se existirem muitos píxeis castanho-claros na imagem, então podemos dizer que é um cão.

Ou então, podemos descobrir como detetar arestas numa imagem. Podes dizer que, se houver muitas arestas retas, é uma mesa.

No entanto, este tipo de abordagem fica complicada muito rapidamente. E se existir um cão branco na imagem sem pelo castanho? E se a imagem mostra apenas as partes arredondadas da mesa?

É aqui que entra o machine learning.

O machine learning implementa tipicamente um algoritmo que deteta automaticamente um padrão num determinado input.

Podes fornecer, digamos, 1000 imagens de um cão e 1000 imagens de uma mesa a um algoritmo de machine learning. Então, este aprenderá as diferenças entre um cão e uma mesa. Quando forneceres uma nova imagem de um cão ou de uma mesa, este será capaz de reconhecer qual deles é.

Penso que isto seja um pouco semelhante ao modo como um bebé aprende coisas novas. Como é que um bebé aprende que uma coisa se parece com um cão e outra com uma mesa? Provavelmente, a partir de vários exemplos.

Provavelmente não indicas ao bebé explicitamente, "Se algo for felpudo e tiver pêlo castanho claro, então é provavelmente um cão."

Provavelmente dirias apenas, "Isto é um cão. Isto também é um cão. E isto é uma mesa. Esta também é uma mesa."

Os algoritmos de machine learning funcionam muito do mesmo modo.

Podes aplicar o mesmo conceito a:

  • sistemas de recomendação (pensa no YouTube, Amazon e Netflix)
  • reconhecimento facial
  • reconhecimento de voz

entre outras aplicações.

Algoritmos de machine learning populares que podes já ter ouvido falar incluem:

  • Redes neurais
  • Aprendizagem profunda
  • Máquinas de vetor de suporte
  • Floresta aleatória

Podes utilizar qualquer um dos algoritmos acima para resolver o problema de reconhecimento de imagens que expliquei anteriormente.

Python para machine learning

Existem bibliotecas populares de machine learning e frameworks para Python.

Duas das mais populares são scikit-learn e TensorFlow.

  • scikit-learn vem com alguns dos algoritmos de machine learning mais populares incorporados. Mencionei alguns deles acima.
  • TensorFlow funciona mais como uma biblioteca de baixo nível que te permite criar algoritmos de machine learning personalizados.

Se estiveres apenas a começar com um projeto de machine learning, eu recomendaria que começasses primeiro pelo scikit-learn. Se começares a encontrar problemas de eficiência, então eu começaria a pesquisar o TensorFlow.

Como devo aprender machine learning?

Para aprender os fundamentos de machine learning, eu recomendo um curso de machine learning, de Stanford ou da Caltech (cursos em inglês).

Nota que é necessário teres conhecimentos básicos de cálculo e álgebra linear para compreender alguns dos materiais nesses cursos.

Depois, recomendo que pratiques o que aprendeste num desses cursos com o Kaggle. É um site onde as pessoas competem para criar o melhor algoritmo de machine learning para um determinado problema. Também têm bons tutoriais para iniciantes.

E a análise de dados e a visualização de dados?

Para te ajudar a compreender como estes se podem parecer, permite-me fornecer um simples exemplo aqui.

Digamos que trabalhas para uma empresa que vende alguns produtos on-line.

Depois, como analista de dados, podes desenhar um gráfico de barras como este.

1_62T-rtheKPehgZdPTEpKww
Gráfico de barras 1 — volume de vendas a um domingo para homens e mulheres – gerado com Python

A partir deste gráfico, podemos dizer que os homens compraram mais de 400 unidades deste produto e que as mulheres compraram cerca de 350 unidades deste produto, neste domingo em específico.

Como analista de dados, podes descobrir algumas explicações possíveis para esta diferença.

Uma possível explicação óbvia é que este produto é mais popular entre homens do que entre mulheres. Outra explicação possível pode ser que o tamanho da amostra seja muito pequeno e esta diferença é causada por puro acaso. E outra explicação possível pode ser que os homens tendem a comprar mais este produto apenas aos domingos, por alguma razão.

Para compreender qual destas explicações está correta, podes desenhar outro gráfico como este.

1_VgNfqK5XxNfHxx6S4VFCjQ
Gráfico de linhas 1 — gerado com Python

Em vez de apresentar apenas os dados para domingo, estamos a consultar os dados para uma semana inteira. Como podes observar, para este gráfico, podemos ver que esta diferença é bastante consistente ao longo de diferentes dias.

A partir desta pequena análise, podes concluir que a explicação mais convincente para esta diferença é que este produto é simplesmente mais populares entre homens do que entre mulheres.

Por outro lado, e se observarmos um gráfico como este?

1_dMpu_fd-THNXRJhHIq2O3g
Gráfico de linhas 2 — também gerado com Python

Então, qual é a explicação para a diferença no domingo?

Podes talvez dizer que o homens tendem a comprar mais este produto apenas ao domingo por alguma razão. Ou então, talvez seja apenas uma coincidência que os homens tenham comprado mais no domingo.

Este é um exemplo simplificado de como se poderia parecer a análise de dados no mundo real.

O trabalho em análise de dados que realizei quando estive a trabalhar na Google e na Microsoft foi muito semelhante a este exemplo — apenas mais complexo. Na realidade, utilizei Python na Google para este tipo de análise e utilizei JavaScript na Microsoft.

Utilizei SQL em ambas as empresas para obter dados das nossas bases de dados. Depois, eu utilizava quer Python e Matplotlib (na Google) quer JavaScript e D3.js (na Microsoft) para visualizar e analisar estes dados.

Análise/visualização de dados com Python

Uma das bibliotecas mais populares para visualização de dados é o Matplotlib.

É uma óptima biblioteca para se começar porque:

  • É fácil de se iniciar
  • Algumas bibliotecas como o seaborn são baseadas nela. Por isso, aprender Matplotlib ajudará a aprender estas outras bibliotecas mais tarde.

Como devo aprender análise/visualização de dados com Python?

Primeiro, deves aprender os fundamentos de análise e visualização de dados. Quando pesquisei por bons recursos para isto on-line, não consegui encontrar nenhum. Por isso, acabei por criar um vídeo do YouTube sobre este tópico:

Também acabei por criar um curso completo sobre este tópico no Pluralsight (curso em inglês), que podes realizar gratuitamente ao fazer a inscrição no teste gratuito de 10 dias que eles oferecem.

Eu recomendo ambos.

Depois de aprender os fundamentos da análise e visualização de dados, aprender os fundamentos da estatística a partir de sites como o Coursera e o Khan Academy também será bastante útil.

Criação de scripts

O que é a criação de scripts?

Scripts referem-se geralmente à escrita de pequenos programas que são desenhados para automatizar tarefas simples.

Por isso, permite-me dar-te um exemplo da minha experiência pessoal aqui.

Trabalhei numa pequena startup no Japão, onde tínhamos um sistema de suporte por e-mail. Era um sistema para respondermos a questões que os clientes nos enviavam por e-mail.

No tempo que lá trabalhei, tinha a tarefa de contabilizar o número de e-mails que continham certas palavras-chave, de modo a podermos analisar os e-mails que recebemos.

Podíamos tê-lo feito manualmente, mas, em vez disso, escrevi um simples programa/script para automatizar esta tarefa.

Na realidade, na altura, utilizamos Ruby para isto, mas o Python também é uma boa linguagem para este tipo de tarefa. O Python é adequado para este tipo de tarefa principalmente porque tem uma sintaxe relativamente simples e fácil de escrever. Também é fácil para escrever algo pequeno e realizar testes.

E as aplicações incorporadas?

Não sou um especialista em aplicações incorporadas, mas sei que o Python funciona com o Rasberry Pi. Parece ser uma aplicação popular entre os entusiastas do hardware.

E em relação aos jogos?

Poderias utilizar uma biblioteca chamada PyGame para desenvolver jogos, mas não é o motor de jogo mais popular por aí. Poderias utilizá-la para criar um projeto como passatempo, mas eu pessoalmente não a escolheria se o teu objetivo for desenvolvimento de jogos.

Como alternativa, recomendo que comeces pelo Unity com C#, que é um dos motores de jogo mais populares. Este permite-te criar um jogo para várias plataformas, incluindo Mac, Windows, iOS e Android.

E em relação a aplicações de desktop?

Podes fazer uma com Python utilizando o Tkinter, mas também não parece ser a escolha mais popular.

Em vez disso, parece que linguagens como Java, C# e C++ são mais populares para isto.

Recentemente, algumas empresas começaram a utilizar também JavaScript para criar aplicações de desktop.

Por exemplo, a aplicação para desktop do Slack foi criada com algo chamado de Electron. Este permite-te criar aplicações de desktop com JavaScript.

Pessoalmente, se eu fosse criar uma aplicação para desktop, optaria por algo que envolva o JavaScript. Este permite-te reutilizar algum código de uma versão para a web, caso a tenhas. No entanto, também não sou um especialista em aplicações para desktop.

Python 3 ou Python 2?

Eu recomendaria o Python 3, visto que é mais moderno e é uma opção mais popular neste momento.

Nota de rodapé: uma nota sobre código de back-end x código de front-end (só para o caso de não estares familiarizado(a) com os termos):

Digamos que desejas criar algo como o Instagram.

Então, precisarias de criar código para o front-end para cada tipo de dispositivo que queres ter suporte.

Poderias utilizar, por exemplo:

  • Swift para iOS
  • Java para Android
  • JavaScript para navegadores da web

Cada conjunto de código executará em cada tipo de dispositivo/navegador. Este será o conjunto de código que determina qual será o aspeto da aplicação, qual o aspeto dos botões quando clicas neles e assim por diante.

No entanto, ainda vais precisar da capacidade de armazenar a informação e fotos dos utilizadores. Vais querer armazená-las no teu servidor e não apenas nos dispositivos dos utilizadores, de modo a que os seguidores de cada utilizador consigam ver as fotos dele/dela.

É aqui que o código de back-end/código do lado do servidor entra em ação. Vais precisar de escrever algum código de back-end para fazer coisas como:

  • Observar quem está a seguir quem
  • Comprimir fotos de modo a que não ocupem tanto espaço de armazenamento
  • Recomendar fotos e novas contas para cada utilizador na funcionalidade discovery

Então, esta é a diferença entre código de back-end e código de front-end.

Já agora, o Python não é a única boa opção para escrever código de back-end/do lado do servidor. Existem muitas escolhas populares, incluindo o Node.js, que é baseado no JavaScript.

Gostaste deste artigo? Então, podes vir a gostar do canal do autor no YouTube.

O autor tem um canal no Youtube de ensino de programação, chamado CS Dojo, com mais de 1,9 milhões de inscritos, onde produz conteúdo como o deste artigo.

De qualquer forma, muito obrigado por leres este artigo!