Por que a linguagem de programação Python brilha para a ciência de dados, o aprendizado de máquina, a automação de sistemas, o desenvolvimento da Web e da API e além? Afinal, O que é Python?
Datada de 1991, a linguagem de programação era considerada um preenchedor de lacunas, uma maneira de escrever scripts que “automatizam as coisas chatas” (como um livro popular sobre o aprendizado de Python) ou para prototipar rapidamente aplicativos que serão implementados em outros idiomas.
No entanto, nos últimos anos, ela surgiu como um cidadão de primeira classe no desenvolvimento moderno de software, gerenciamento de infraestrutura e análise de dados. Ele não é mais uma linguagem de utilitários de back-room, mas uma força importante na criação de aplicativos da Web e no gerenciamento de sistemas, além de ser o principal impulsionador da explosão da análise de big data e inteligência de máquina.
[adcash_300_250]
Vantagens-chave da Python
O sucesso da linguagem de programação gira em torno de várias vantagens que oferece para iniciantes e especialistas.
Fácil de aprender e usar
O número de recursos na linguagem em si é modesto, exigindo relativamente pouco investimento de tempo ou esforço para produzir seus primeiros programas. A sintaxe é projetada para ser legível e direta. Essa simplicidade faz dela uma linguagem de ensino ideal e permite que os recém-chegados o identifiquem rapidamente. Como resultado, os desenvolvedores passam mais tempo pensando no problema que estão tentando resolver e menos tempo pensando em complexidades de linguagem ou decifrando códigos deixados por outras pessoas.
Amplamente adotada e suportada
Ela é popular e amplamente usado, como atestam os altos rankings em pesquisas como o Tiobe Index e o grande número de projetos do GitHub usando-a. A Python é executado em todos os principais sistemas operacionais e plataformas, e também na maioria dos menores.
Muitas das principais bibliotecas e serviços baseados em API têm ligações ou wrappers em Python, permitindo que ela faça interface livremente com esses serviços ou use diretamente essas bibliotecas. Ela pode não ser a linguagem mais rápida, mas o que falta em velocidade compensa em versatilidade.
Não é uma linguagem “de brinquedo”
Embora a criação de scripts e a automação cubram uma grande parte dos casos de uso da linguagem (mais sobre isso posteriormente), o Python também é usado para criar softwares de qualidade profissional, como aplicativos independentes e como serviços da Web.
No que ela é mais usada
O caso de uso mais básico da linguagem é para script e automação. Ela não é apenas um substituto para scripts de shell ou arquivos em lote; Ele também é usado para automatizar interações com navegadores da Web ou GUIs de aplicativos ou para provisionar e configurar o sistema em ferramentas como Ansible e Salt. Mas o script e a automação representam apenas a ponta do iceberg com a Python.
Programação geral de aplicativos
Você pode criar aplicativos GUI de linha de comando e de plataforma cruzada com a linguagem e implantá-las como executáveis independentes. A Python não tem a capacidade nativa de gerar um binário independente a partir de um script, mas pacotes de terceiros como cx_Freeze e PyInstaller podem ser usados para isso.
Ciência de dados e aprendizado de máquina
A sofisticada análise de dados tornou-se uma das áreas de TI com maior movimentação e um dos casos de uso de estrelas da Python. A grande maioria das bibliotecas usadas para ciência de dados ou aprendizado de máquina tem interfaces Python, tornando a linguagem a interface de comando de alto nível mais popular para bibliotecas de aprendizado de máquina e outros algoritmos numéricos.
Serviços da Web e APIs RESTful
As bibliotecas nativas dela e as estruturas da Web de terceiros fornecem maneiras rápidas e convenientes de criar tudo, desde APIs REST simples em algumas linhas de código até sites totalmente orientados por dados. As versões mais recentes da Python têm forte suporte para operações assíncronas, permitindo que os sites processem dezenas de milhares de solicitações por segundo com as bibliotecas certas.
Meta programação e geração de código
Na Python, tudo na linguagem é um objeto, incluindo seus próprios módulos e bibliotecas. Isso permite que ela funcione como um gerador de código altamente eficiente, possibilitando a criação de aplicativos que manipulem suas próprias funções e tenham o tipo de extensibilidade que seria difícil ou impossível de ser obtida em outros idiomas.
A linguagem também pode ser usada para conduzir sistemas de geração de código, como o LLVM, para criar códigos de maneira eficiente em outros idiomas.
“Código cola” em Python
Ela é frequentemente descrita como uma “linguagem de cola”, o que significa que pode permitir que códigos heterogêneos (geralmente bibliotecas com interfaces de linguagem C) sejam interoperados. Seu uso em ciência de dados e aprendizado de máquina é nesse sentido, mas isso é apenas uma encarnação da ideia geral.
Onde a linguagem fica aquém
Também vale a pena mencionar os tipos de tarefas para os quais ela não é adequada.
Python é uma linguagem de alto nível, por isso não é adequada para programação em nível de sistema – os drivers de dispositivo ou os kernels do sistema operacional estão fora de questão.
Também não é ideal para situações que exigem binários autônomos de plataforma cruzada. Você pode criar um aplicativo Python autônomo para Windows, MacOS e Linux, mas não de maneira elegante ou simples.
Finalmente, o Python não é a melhor escolha quando a velocidade é uma prioridade absoluta em todos os aspectos do aplicativo. Para isso, você é melhor com C/C ++ ou outro idioma desse calibre.
O que é Python e como ela simplifica a programação
Sua sintaxe deve ser legível e limpa, com pouca pretensão. Um padrão “Hello World” no Python 3.x nada mais é do que:
print(“Hello world!”)
Ela fornece muitos elementos sintáticos para expressar de forma concisa muitos fluxos de programas comuns. Considere um exemplo de programa para ler linhas de um arquivo de texto em um objeto de lista, retirando cada linha de seu caractere de nova linha de terminação ao longo do caminho:
with open(‘myfile.txt’) as my_file:
file_lines = [x.strip(‘\n’) for x in my_file]
A construção with/as é um gerenciador de contexto, que fornece uma maneira eficiente de instanciar um objeto para um bloco de código e, em seguida, descartá-lo fora desse bloco. Neste caso, o objeto é my_file, instanciado com a função open (). Isso toma o lugar de várias linhas de clichê para abrir o arquivo, ler linhas individuais dele e depois fechá-lo.
A construção [x… for x in my_file] é outra idiossincrasia da Python, a compreensão da lista. Ele permite que um item que contém outros itens (aqui, my_file e as linhas que ele contém) seja iterado e permite que cada elemento iterado (isto é, cada x) seja processado e anexado automaticamente a uma lista.
[mspy_250_250]
Você pode escrever uma coisa formal como… um loop no Python, da mesma forma que faria em outro idioma. O ponto é que ela tem uma maneira de expressar economicamente coisas como loops que iteram em vários objetos e executam uma operação simples em cada elemento no loop, ou para trabalhar com coisas que exigem instanciação e eliminação explícitas.
Construções como essa permitem aos desenvolvedores da linguagem equilibrar a abrangência e a legibilidade.
Os outros recursos de idioma destinam-se a complementar casos de uso comuns. A maioria dos tipos de objetos modernos – cadeias de caracteres Unicode, por exemplo – são construídos diretamente na linguagem. Estruturas de dados – como listas, dicionários (isto é, hashmaps), tuplas (para armazenar coleções imutáveis de objetos) e conjuntos (para armazenar coleções de objetos únicos), estão disponíveis como itens de edição padrão.
Python 2 versus Python 3
A linguagem de programação está disponível em duas versões, que são diferentes o suficiente para enganar muitos novos usuários. A versão 2.x, a ramificação “legacy” mais antiga, continuará sendo suportada (isto é, receberá atualizações oficiais) até 2020, e poderá persistir não oficialmente depois disso. A 3.x, é a encarnação atual e futura da linguagem, possui muitos recursos úteis e importantes não encontrados em 2.x, como melhores controles de concorrência e um interpretador mais eficiente.
A adoção do Python 3 foi retardada por mais tempo devido à relativa falta de suporte a bibliotecas de terceiros. Muitas bibliotecas suportavam apenas o Python 2, dificultando a troca. Mas nos últimos dois anos, o número de bibliotecas que suportam apenas a versão 2 diminuiu; a maioria agora é compatível com as duas versões. Hoje, existem algumas razões para não usar o Python 3.
Bibliotecas
O sucesso dessa linguagem de programação se baseia em um rico ecossistema de softwares de primeira e terceira partes. Ela se beneficia de uma biblioteca padrão forte e de uma variedade generosa de bibliotecas facilmente obtidas e prontamente usadas de desenvolvedores de terceiros. Python foi enriquecida por décadas de expansão e contribuição.
Sua biblioteca padrão fornece módulos para tarefas de programação comuns, matemática, manipulação de strings, acesso a arquivos e diretórios, rede, operações assíncronas, threading, gerenciamento de multiprocessos e assim por diante.
Mas também inclui módulos que gerenciam tarefas de programação comuns e de alto nível necessárias a aplicativos modernos: leitura e gravação de formatos de arquivos estruturados como JSON e XML, manipulação de arquivos compactados, trabalho com protocolos de Internet e formatos de dados (páginas da Web, URLs, email). A maioria dos códigos externos que expõem uma interface de função externa compatível com C pode ser acessada com o módulo ctypes do Python.
[Hostinger]
A distribuição Python padrão também fornece uma biblioteca GUI multi-plataforma rudimentar, mas útil via Tkinter, e uma cópia incorporada do banco de dados SQLite 3.
As milhares de bibliotecas de terceiros, disponíveis por meio do PyPI (Python Package Index), constituem a vitrina mais forte para a popularidade e a versatilidade do Python.
Por exemplo:
- A biblioteca BeautifulSoup fornece uma caixa de ferramentas completa para a captura de HTML, mesmo HTML complicado e fragmentado, e a extração de dados a partir dele.
- Frameworks como Flask e Django permitem o desenvolvimento rápido de serviços da Web que abrangem casos de uso simples e avançados.
- Vários serviços em nuvem podem ser gerenciados pelo modelo de objeto do Python usando o Apache Libcloud.
- O NumPy, o Pandas e o Matplotlib aceleram as operações matemáticas e estatísticas e facilitam a criação de visualizações de dados.
Os compromissos da Python
Assim como o C #, o Java e o Go, a Python possui gerenciamento de memória colecionada com lixo, o que significa que o programador não precisa implementar código para rastrear e liberar objetos. Normalmente, a coleta de lixo ocorre automaticamente em segundo plano, mas se isso representar um problema de desempenho, você pode acioná-la manualmente ou desativá-la completamente.
Um aspecto importante dela é seu dinamismo. Tudo na linguagem, incluindo funções e módulos, são tratados como objetos. Isso vem à custa da velocidade (mais sobre isso depois), mas torna muito mais fácil escrever código de alto nível. Os desenvolvedores podem executar manipulações complexas de objetos com apenas algumas instruções e até tratar partes de um aplicativo como abstrações que podem ser alteradas, se necessário.
O uso de espaço em branco significativo da Python foi citado como um dos seus melhores e piores atributos. O recuo na segunda linha abaixo não é apenas para legibilidade; faz parte da sua sintaxe. Os intérpretes dela rejeitarão programas que não usem o recuo adequado para indicar o fluxo de controle.
with open(‘myfile.txt’) as my_file:
file_lines = [x.strip(‘\n’) for x in my_file]
O espaço branco sintático pode fazer com que algumas pessoas rejeitam o que é Python. Mas regras rígidas de recuo são muito menos intrusivas na prática do que podem parecer em teoria, mesmo com o mínimo de editores de código, e o resultado é um código mais limpo e legível.
Outro desvio potencial, especialmente para aqueles que vêm de linguagens como C ou Java, é como a Python lida com a digitação variável. Por padrão, ela usa tipagem dinâmica ou “duck” ótima para codificação rápida, mas potencialmente problemática em grandes bases de código. Dito isso, a Python recentemente adicionou suporte para dicas opcionais de tipo de tempo de compilação, para que projetos que podem se beneficiar da tipagem estática possam usá-lo.
O Python é muito lento? Não precisa ser
Uma ressalva comum sobre a linguagem é que ela é lenta. Objetivamente, é verdade. Seus programas geralmente são executados muito mais lentamente que os programas correspondentes em C/C ++ ou Java. Alguns programas em Python serão mais lentos em uma ordem de magnitude ou mais.
Por que tão lento? Não é só porque a maioria de seus tempos de execução são interpretadores em vez de compiladores. É também devido ao fato de que o dinamismo inerente e a maleabilidade dos objetos dificultam a otimização da velocidade, mesmo quando compilada. Dito isso, a velocidade dela pode não ser tão problemática quanto parece, e há maneiras de aliviá-la.
Otimizações contribuem para a lentidão
Nem sempre é o destino de um programa Python lento ser lento para sempre. Muitos programas são lentos porque não usam corretamente uma funcionalidade ou em sua biblioteca padrão. As operações de matemática e estatística podem ser impulsionadas tremendamente usando bibliotecas como o NumPy e o Pandas, e o tempo de execução do PyPy pode fornecer acelerações de ordens de magnitude para muitos aplicativos Python.
Continua…
Este é um artigo publicado originalmente no site InfoWorld.