Python e Machine Learning: um casamento bem sucedido

Todo entusiasta de machine learning já percebeu que Python é a linguagem de programação preferida desta comunidade. Esta preferência não é por acaso, o Python tem algumas características que o colocam em destaque para quem quer programar algoritmos com o intuito de desenvolver frameworks de inteligência artificial. Aqui apresento as principais razões que dão vantagem a esta linguagem na escolha dos desenvolvedores.

Simplicidade e fácil leitura

O Python foi desenvolvido desde seu conceito inicial para ser uma linguagem simples e concisa, o mais próximo possível da linguagem cotidiana. Se você digitar import this em qualquer console Python, inclusive, vai poder ler o Zen do Python, um conjunto de regras que define a filosofia por trás das intenções de seus criadores.

Isso significa que o Python permite executar tarefas computacionais com um código enxuto, de poucas linhas e caracteres. As funções costumam ter nomes que deixam explícito o que elas fazem. Muitos caracteres auxiliares comuns em outras linguagens, como parênteses, colchetes e chaves, são em alguns casos substituídos por espaços e indentações. Estas características tornam fácil programar em Python, mas também ler o código escrito por outro desenvolvedor, já que aproximam esta atividade da leitura de um texto comum. Assim, é mais fácil trabalhar de forma colaborativa em um código Python. Desenvolvedores novatos na linguagem também conseguem rapidamente se adaptar à sua sintaxe.

Com isso, os programadores podem se preocupar menos com como escrever, e se dedicar mais a o que. Isto é especialmente relevante em machine learning, onde às vezes os próprios algoritmos são intrinsecamente complexos, e a simplicidade da linguagem torna a tarefa de implementá-los menos extenuante e mais rápida.

Flexibilidade

Códigos Python podem tanto rodar em um ambiente específico da linguagem, na forma de programação orientada a objetos, quanto na forma de scripts invocados no ambiente do sistema operacional. O código-fonte não precisa ser compilado, assim qualquer alteração pode ter seus resultados inspecionados rapidamente. Ele é independente de plataforma, hoje sendo suportado em máquinas rodando Linux, Windows ou macOS. Com isso, o código escrito em um computador com qualquer sistema operacional será capaz de rodar em outro sistema, com nenhuma, ou mínima, modificação. Uma grande vantagem neste sentido é que o programador pode escrever um modelo de machine learning em sua máquina local, mas treiná-lo em algum servidor na nuvem, onde geralmente estão disponíveis mais recursos computacionais. Outro benefício é não precisar se preocupar com compatibilidade quando o programa passar da fase de desenvolvimento para a de deploy.

Velocidade

O Python nativo não é a linguagem mais rápida do mundo, sendo o C e o C++ ainda imbatíveis neste quesito. Mas muitos pacotes desenvolvidos para Python nada mais são do que wrappers para código escrito em C/C++. Assim, o programador se beneficia tanto da sintaxe simples do Python quanto do tempo de execução otimizado disponibilizado pelo código em C que roda por baixo dos panos.

Bibliotecas

E por falar em pacotes, o Python hoje possui uma extensa coleção de bibliotecas, com as mais diversas finalidades. As vantagens da linguagem descritas anteriormente tornam fácil escrever e distribuir estes pacotes. O programador de machine learning logo descobre que as principais bibliotecas para a área possuem implementação em Python, isso quando esta não é a única implementação disponível. Não só isso, estas bibliotecas possuem documentação extensa disponível, de forma que o desenvolvedor dedicado não vai encontrar dificuldades em extrair o máximo de produtividade das bibliotecas e escrever algoritmos complexos.

Algumas das bibliotecas mais populares incluem o NumPy para manipulação numérica, o Pandas para trabalhar com dataframes, o Matplotlib e o Seaborn para plotar gráficos e visualizações de dados, o PIL para processamento de imagens, o NLTK e o SpaCy para processamento de linguagem natural, o Scikit-Learn que contém os principais algoritmos de machine learning, o TensorFlow e o PyTorch para trabalhar especificamente com redes neurais, e o Keras que é uma API simplificada para o TensorFlow.

Em resumo, qualquer implementação conhecida de machine learning pode hoje ser executada em Python, usando uma biblioteca que facilita enormemente o trabalho.

Popularidade e comunidade

Em virtude dos demais pontos levantados até aqui, o Python vem ganhando popularidade nos últimos anos. Na plataforma de colaboração Stack Overflow, ela já é a terceira linguagem mais presente. Segundo um relatório do GitHub publicado ano passado, pela primeira vez a plataforma passou a hospedar mais código Python do que Java, passando para segundo lugar. A maior adoção da linguagem tende a catapultar sua influência ainda mais, já que teremos mais programadores escrevendo bibliotecas para Python. A colaboração entre desenvolvedores tende a resolver mais rápido problemas no código dessas bibliotecas. O desenvolvedor final também se beneficia de uma comunidade robusta, disponível para auxiliá-lo quando for necessário.

O Python passa o Java no GitHub.

O desenvolvedor interessado em machine learning tem muitos motivos para usar o Python em seu arsenal de habilidades. Ele vai encontrar um ambiente rico e de melhoramento constante, com novas possibilidades surgindo constantemente. A predominância da linguagem ainda tem margem para crescimento, de forma que, logo, ela deve se tornar a linguagem básica que todo programador deve conhecer.

Curiosidade: você sabia que a linguagem não se chama Python por causa da cobra?